Skip to main content
Glama

Server Details

China working-day data, UK bank holidays, IANA time zones and deterministic business deadlines.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

B3.4/5.0

Scored across 253 tools

Disambiguation1/5

Multiple tools target the same country's working days (e.g., add_ar_working_days, check_ar_working_day, count_ar_working_days) and generic global alternatives overlap heavily, with nearly identical descriptions. An agent cannot easily select the correct tool without deep domain knowledge.

Naming Consistency4/5

Tool names follow a consistent snake_case verb_noun pattern (e.g., add_*_working_days, calculate_*, convert_*). Some minor verb variety and singular/plural differences exist but do not impede readability.

Tool Count1/5

253 tools is an extreme overabundance for a calculator server, far exceeding the typical 3-15 range. The sheer volume makes the surface unwieldy and suggests redundant country-specific variations that could be handled by a few generic tools.

Completeness5/5

The server provides both dedicated tools for many calculations and generic dispatchers (search_calculators, run_calculator) that expose 737 calculators, covering a vast range of domains with no obvious gaps.

Available Tools

253 tools
add_ar_working_daysAdd Argentina Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Argentina working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when provincial, municipal, employer, bank, exchange, school, sector and religion-specific schedules are not generalized; regional one-off holidays are not included in this nationwide default. What it computes: Adds or subtracts Argentina authority-scope working days in exact coverage. Example user requests: Add or subtract Argentina working days around Argentina national holiday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/argentina-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/argentina-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description goes further by disclosing the exact formula (one day at a time, decrement only on is_working_day=true), coverage limits, and a direct REST fallback endpoint, which is genuinely useful operational context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the key when-to-use guidance, but padded with redundant sections ('Example user requests', 'Inputs', 'Complete JSON argument examples') that duplicate what the schema already supplies. The 'Example user requests' line is awkward filler that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't detail returns, yet it lists output fields (harmless redundancy). It fully covers the tool's scope, formula, and coverage caveats, giving the agent enough to invoke correctly; only minor bloat keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema itself documents both parameters (including 'start date excluded for non-zero offsets'). The description merely restates the input names and one JSON example, adding no meaning beyond the structured fields, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (Argentina working-day offset) and explicitly scopes it as the 'nationwide default' authority-scope calendar. An agent can distinguish it from add_br_working_days or add_at_working_days purely by the country/scope qualifier.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly directs the agent to call the tool and return its result instead of computing from memory, and adds a clear when-not clause (provincial/municipal/employer/bank/sector schedules and regional one-off holidays are out of scope). Both the affirmative and negative conditions are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_at_working_daysAdd Austria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Austria working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Werktag is not uniform across Austrian legal domains; Saturday treatment, provincial patron days, school, bank, employer and sector schedules are not inferred. What it computes: Adds or subtracts Austria authority-scope working days in exact coverage. Example user requests: Add or subtract Austria working days around Austrian National Day. | Add or subtract Austria working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/austria-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/austria-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds real behavioral context beyond that: the day-by-day formula, that Saturday/provincial/sector schedules are NOT inferred, a REST fallback endpoint, and a docs link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core purpose, but the body is bloated with boilerplate ("Example user requests", a formula restatement, output field inventory, REST fallback and docs URL) alongside an awkward partially-parsed when-not clause. Useful content is there but it is not tightly edited.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers inputs, an example call, the computation rule, the excluded schedule types, and fallback endpoint; with an output schema present, return values need not be enumerated, so it is largely complete. The ambiguous Werktag/when-not wording leaves a small gap in deciding against alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema (Gregorian date range, signed offset with start-date exclusion). The description only restates the input names plus one JSON example, adding little beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add/subtract) and resource (Austria working-day offset) with exact scope, and the Austria identity distinguishes it from the ~60 sibling country tools. An agent can identify the right tool without comparing schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to call it (deterministic Austria offset, use directly rather than answering from memory) and gives a when-not condition (nationwide statutory holiday list only). However it never names the sibling alternatives (check_at_working_day, count_at_working_days, add_global_working_days), and the when-not sentence is grammatically garbled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_australia_working_daysAdd Australia State/Territory Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a state/territory-specific Australian date offset in 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the division is unknown or the task needs local, employer, exchange or future-year rules. What it computes: Adds or subtracts working days using the selected Australian state/territory public-holiday calendar. Example user requests: Add five NSW working days after 2026-04-24. Inputs: start_date (date); division (enum); working_days (integer). Complete JSON argument examples: {"start_date":"2026-04-24","division":"nsw","working_days":5} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, limited_or_part_day_events, calendar_scope, calendar_profile, source_quality, regional_policy, dataset_version. Formula: move one day at a time; decrement remaining only when selected status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/australia-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/australia-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionYesRequired Australian state/territory code: act, nsw, nt, qld, sa, tas, vic or wa.
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/closed-world, but the description adds real behavioral context: the 2026-2027 scope limit, state-level (non-local/employer) calendar semantics, the counting formula, and a REST fallback with a warning not to guess other /api/* paths. That goes meaningfully beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded well, with when-to-use and when-not-to-use leading, but it then enumerates the full output field list (start_date, result_date, ..., dataset_version) which duplicates the existing output schema and bloats the definition. The many labeled sections make it scannable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return values, and it still supplies scope limits, formula, example arguments, fallback endpoint, and docs link. Nothing an agent needs to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date, division enum, and the signed working_days offset. The description restates the inputs and repeats a JSON example without adding syntax or constraint detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Adds or subtracts working days using the selected Australian state/territory public-holiday calendar,' which separates it from the check_/count_australia_* siblings by the additive behavior. It does not explicitly name those siblings, so differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('a state/territory-specific Australian date offset in 2026-2027'), an explicit when-not-to-use ('division unknown or the task needs local, employer, exchange or future-year rules'), and instructs the agent to return the calculation rather than compute from memory. It stops short of naming the alternative sibling tools for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_bd_working_daysAdd Bangladesh Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Bangladesh working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government/public-office schedule only; private-employer, bank, school, industrial-zone, essential-service, regional hill-district, optional-religious and later unlisted ad hoc schedules are not inferred. February 10 is not included because the reported later holiday was industrial-zone specific. Lunar dates may be revised by a later official notice. What it computes: Adds or subtracts Bangladesh authority-scope working days in exact coverage. Example user requests: Add or subtract Bangladesh working days around Election-period special holiday. | Add or subtract Bangladesh working days around Eid-ul-Adha period. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bangladesh-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bangladesh-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/non-destructive, and the description adds real behavioral context beyond them: the exact computation rule ('move one day at a time; decrement only on status.is_working_day=true'), coverage limits, the Feb 10 exclusion rationale, and a caveat that lunar dates may be revised by later official notice.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is correctly front-loaded, but the block is padded with a full 'Outputs' enumeration that duplicates the existing output schema and an 'Inputs' line that duplicates the schema, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with an output schema and full annotations, the description covers everything else an agent needs: when to use and when not, the computation rule, argument example, and a direct REST fallback path with a warning not to guess other /api/* routes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters carry descriptions plus examples, so the baseline is 3. The description's 'Inputs' line and JSON example merely restate the schema, adding no meaning such as offset sign conventions beyond what the schema already says ('signed offset; start date excluded for non-zero offsets').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb pair (adds or subtracts) and a scoped resource (Bangladesh authority-scope working days), and the country qualifier is exactly what separates it from the ~60 add_*_working_days siblings. An agent can pick it out of the family without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'use this when' plus a detailed 'do not use this when' that names the excluded schedule scopes (private-employer, bank, school, industrial-zone, essential-service, regional) and a specific date exclusion. It does not, however, route to the nearest siblings (count_bd_working_days, check_bd_working_day) for count/check needs, so the alternative-selection guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_be_working_daysAdd Belgium Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Belgium working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when private-sector statutory core only; substitute dates, public-service/community/regional holidays, sector agreements, employer, school, bank and municipal schedules are not inferred. What it computes: Adds or subtracts Belgium authority-scope working days in exact coverage. Example user requests: Add or subtract Belgium working days around Belgian National Day. | Add or subtract Belgium working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/belgium-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/belgium-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent/openWorld annotations: it discloses the exact computation rule ('move one day at a time; decrement only on status.is_working_day=true'), the precise coverage boundary (substitute dates, regional/sector/employer/school/bank schedules excluded), and a direct REST fallback endpoint with a warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage directive, which is good, but the block is long and choppy: it enumerates an Outputs field list that duplicates the output schema, and repeats input names already in the schema. Several fragments (example user requests, formula, fallback, docs) pad the body without adding selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter calculation tool this covers everything an agent needs: when to use, when not to, inputs, computation rule, edge-case scope, and a REST fallback. With an output schema present, the description needn't explain return values further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema, including the 'start date excluded for non-zero offsets' caveat. The description restates the inputs and adds a JSON example, which is helpful but redundant with schema examples, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Adds or subtracts Belgium authority-scope working days in exact coverage.' An agent can distinguish this from check_be_working_day and count_be_working_days without opening a schema, and the region-of-scope qualifier is explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('Use this when you need a deterministic Belgium working-day offset') and a genuine exclusion ('Do not use this when private-sector statutory core only... not inferred'), plus instructs to call directly rather than answer from memory. It never names the sibling alternatives (check_be_working_day, count_be_working_days) that an agent should pick when it wants a boolean check or a range count, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_bg_working_daysAdd Bulgaria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Bulgaria working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when bulgaria 2026 nationwide statutory holidays, observed non-attendance days and January 2 one-off rest over an explicitly selected Monday-Friday planning baseline. November 1 is education-only and does not add general rest. No personal, shift, school, employer, bank/exchange, optional religious-leave, payroll or legal-deadline schedule is computed. Future years and additional local/sector closures are unsupported. What it computes: Adds or subtracts Bulgaria authority-scope working days in exact coverage. Requires explicit mon_fri_planning; education-only holidays do not create general rest. Example user requests: Add or subtract Bulgaria working days around One-off euro transition rest, not statutory holiday. | Add or subtract Bulgaria working days around May 24 Sunday replacement. | Add or subtract Bulgaria working days around No nationwide school-holiday substitute. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_observed_non_attendance_day, is_one_off_non_attendance_day, is_education_only_holiday, observed_for_dates, payroll_scope. Formula: planning_workday = weekday AND no nationwide statutory/observed/one-off rest event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bulgaria-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bulgaria-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a universal legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely useful behavioral scope: education-only November 1 does not create general rest, one-off January 2 rest, no payroll/legal-deadline computation, and a REST fallback endpoint. It does not contradict the annotations, though the formula line is terse relative to the long output list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entry is bloated: it restates inputs, repeats a full JSON example that already exists in the schema, enumerates 20+ output fields even though an output schema exists, and appends REST fallback and docs URLs. The 'Do not use this when bulgaria 2026 nationwide statutory holidays, observed non-attendance days and January 2 one-off rest over an explicitly selected Monday-Friday planning baseline' sentence is garbled and unparseable, wasting prime negative-scoping space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic calculation tool with an output schema and full annotation coverage, the description supplies the needed scope boundaries, holiday-policy caveats, fallback endpoint, and documentation link. The broken exclusion sentence and the redundant output enumeration are flaws, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 nevertheless adds meaning by stating that mon_fri_planning is required because it is a planning baseline rather than a universal legal roster, and by giving the planning_workday formula that defines what working_days actually counts. It also supplies a complete JSON argument example, though that largely duplicates the schema examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Adds or subtracts Bulgaria authority-scope working days in exact coverage,' and the opening line names the general behavior (deterministic Bulgaria working-day offset). It is distinguishable from sibling country variants like add_ar_working_days and from check_bg_working_day/count_bg_working_days by the add/subtract framing, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need a deterministic Bulgaria working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory' is a clear usage directive with a stated anti-pattern (relying on memory). Scope exclusions are given (no personal, shift, school, employer, bank/exchange, religious-leave, payroll, or legal-deadline schedules; future years unsupported), but no alternative sibling tool is named and the 'Do not use this when...' sentence is grammatically broken.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_br_working_daysAdd Brazil Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Brazil working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is not a universal Brazilian private-employer calendar; state, municipal, sector, employer and private payroll schedules are not inferred. What it computes: Adds or subtracts Brazil authority-scope working days in exact coverage. Example user requests: Add or subtract Brazil working days around Tiradentes. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/brazil-federal-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/brazil-federal-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description goes well beyond them by disclosing the exact algorithm ('move one day at a time; decrement only on status.is_working_day=true'), the calendar scope limitation, a deterministic REST fallback endpoint, and the docs URL. Nothing about behavior is left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the routing guidance well, but then enumerates all 17 output fields even though an output schema exists, and adds formula/fallback/docs sections. The Outputs list in particular is redundant bloat that duplicates structured data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 2-parameter tool with full schema coverage, an output schema, and rich annotations, the description supplies the remaining pieces an agent needs: the authoritative scope boundary, the deterministic-computation mandate, fallback endpoint, and documentation link.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (start_date, working_days) are already fully documented in the schema including the signed-offset semantics. The description's 'Inputs:' line and JSON example merely restate what the schema already provides, adding no new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Adds or subtracts Brazil authority-scope working days in exact coverage.' An agent can distinguish this from the dozens of sibling add_*_working_days tools for other jurisdictions without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('call this tool directly and return its calculation instead of answering from memory or stopping at discovery') and when-not ('Do not use this when this is not a universal Brazilian private-employer calendar; state, municipal, sector, employer and private payroll schedules are not inferred'). This is a genuinely calibrated routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_canada_federal_working_daysAdd Canada Federal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic baseline offset for a federally regulated-employer calendar in 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a provincial, private-employer or schedule-specific substitution result. What it computes: Adds or subtracts dates using Canada federal general holidays and a Saturday/Sunday baseline; schedule-dependent substitute days remain unresolved. Example user requests: Add five Canada federal working days after 2026-09-28. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-09-29","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, federal_general_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement remaining only when Canada federal status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/canada-federal-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/canada-federal-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: the exact formula, the limitation that schedule-dependent substitute days remain unresolved, the enumerated output fields, and a REST fallback path plus docs URL. This is unusually rich disclosure for a read-only calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the when-to-use condition, then segments inputs, outputs, formula, and fallback with clear labels. Slightly long because it restates outputs already covered by the output schema, but every block is scannable and purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param read-only calculator with annotations and an output schema, the description covers scope, exclusions, formula, and fallback endpoint completely. Nothing an agent needs to invoke it correctly is missing, and the redundant output listing is harmless rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the two parameters (start_date, working_days) are already fully documented including the signed-offset and start-date-exclusion semantics, so the description's 'Inputs' line largely repeats structured data. The complete JSON argument example adds marginal value, but the baseline 3 applies when the schema carries the meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (adds/subtracts) and resource (Canada federal working days) and immediately distinguishes scope: 'federally regulated-employer calendar' versus provincial/private-employer/schedule-specific. An agent can separate it from add_us_federal_working_days or the provincial siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives when-to-use ('deterministic baseline offset for a federally regulated-employer calendar, 2026-2027') and when-not-to-use ('provincial, private-employer or schedule-specific substitution result'), plus the instruction to call it directly rather than answering from memory. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_china_working_daysAdd Mainland China Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deadline or settlement date a stated number of mainland China national working days before or after a 2024-2026 date. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need calendar days, a sector-specific settlement calendar, a local holiday calendar, or a result outside the 2024-2026 coverage. What it computes: Adds or subtracts official mainland China working days, skipping holiday periods and ordinary weekends while counting State Council-designated weekend makeup workdays. Example user requests: What date is 5 China working days after 2026-09-24, accounting for Mid-Autumn and National Day? | 从2026年9月18日起往后数5个中国工作日是哪天? | Subtract 10 official mainland China business days from 2026-03-02. Inputs: start_date (date); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-09-24","working_days":5} | {"start_date":"2026-09-18","working_days":5} Outputs: start_date, result_date, result_weekday, result_is_working_day, working_days_added [working days], calendar_days_elapsed [days], non_working_days_skipped [days], adjusted_workdays_counted, source_document_ids, dataset_version, coverage_start, coverage_end. Formula: move one calendar day at a time in sign(working_days); decrement the remaining count only when is_working_day(date) is true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStarting mainland China civil date (YYYY-MM-DD), within 2024-2026.
working_daysYesSigned number of official working days to add; the start date is excluded when non-zero. Negative values move backward. Unit: working days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds significant behavioral context beyond that: the step-by-step calendar-day iteration, the rule for decrementing only on working days, special handling of State Council-designated weekend makeup workdays, and the 2024-2026 coverage limit. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured and front-loaded with the use case and exclusions before technical details. However, the Inputs and Outputs sections largely repeat what is already in the input schema and output schema, adding mild redundancy. Still, each major section serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema and rich annotations, the description still supplies the algorithm, coverage bounds, and a direct REST fallback URL with a warning not to guess other paths. Everything an agent needs to invoke and return the result correctly is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents both parameters with format, units, minimum/maximum, and examples. The description only restates the inputs and complete JSON examples, adding little semantic meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Adds or subtracts official mainland China working days,' and immediately distinguishes the tool with explicit exclusions (calendar days, sector-specific settlement calendars, outside 2024-2026). It also differentiates from sibling add_uk_working_days by making the 'China' scope explicit in both title and description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit 'Use this when...' and 'Do not use this when...' conditions, including a clear exclusion for calendar days and out-of-range dates that map to potential alternatives. It also instructs the agent to call the tool directly and return its calculation rather than answering from memory, which is strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ch_working_daysAdd Switzerland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Switzerland working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when federal layer only. Cantonal public holidays, municipal holidays, employer, collective-agreement, school, bank and exchange schedules are not inferred; Swiss law permits cantons to recognize additional holidays. What it computes: Adds or subtracts Switzerland authority-scope working days in exact coverage. Example user requests: Add or subtract Switzerland working days around Swiss National Day. | Add or subtract Switzerland working days around Cantonal holiday is not inferred. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/switzerland-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/switzerland-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent and non-destructive traits, yet the description adds real value: the deterministic guarantee, the explicit scope limits (cantonal/municipal holidays not inferred), the stepwise algorithm, and a REST fallback with the exact path. This is well beyond what the annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with a use/when-not/computation structure, which helps, but it is bloated and contains broken text: 'Cantonal holiday is not inferred' appears verbatim inside the example user requests, and the outputs list is long and redundant. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a well-annotated, fully documented two-parameter calculation tool with an output schema, this is essentially complete: purpose, scope limits, inputs, algorithm, REST fallback and docs are all present. The redundant output enumeration and garbled exclusion sentence are minor blemishes, not gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 only restates the two inputs (start_date, working_days) plus a JSON example; the schema itself carries the finer meaning (date range 2026-2027, signed offset, -1000..1000 bounds, start date excluded for non-zero offsets). No additional parameter semantics are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Adds or subtracts Switzerland authority-scope working days in exact coverage') and scopes it to the authority/federal layer. It is clearly distinct from the many sibling country tools, though it never explicitly contrasts with its own siblings like count_ch_working_days or check_ch_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit trigger ('when you need a deterministic Switzerland working-day offset') and instructs the agent to call it directly rather than answering from memory or stopping at discovery. It also states an exclusion (cantonal/municipal/employer/collective-agreement schedules are not inferred), though the phrase 'Do not use this when federal layer only' is garbled and hard to act on.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_cl_working_daysAdd Chile Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Chile working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Chile's nationwide statutory/public-holiday layer over a Saturday-Sunday baseline. Regional/local holidays, school, bank, private-employer, sector and collective-agreement schedules are not inferred. Commerce mandatory-rest exceptions are preserved as provenance but are not generalized to every worker. Future annual dates require refreshed official evidence. What it computes: Adds or subtracts Chile authority-scope working days in exact coverage. Example user requests: Add or subtract Chile working days around Chile Labour Day. | Add or subtract Chile working days around Chile ordinary working day. | Add or subtract Chile working days around Chile winter-solstice Indigenous Peoples Day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/chile-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/chile-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so safety is covered. The description adds real behavioral context beyond that: the exact coverage layer, the provenance-preservation caveat for commerce mandatory-rest exceptions, the non-generalization warning, the refresh requirement for future dates, and the day-by-day algorithm. This is more than the schema and annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded (when-to-use, when-not, what it computes, examples) and labeled so an agent can scan it. It is verbose and carries some templated boilerplate ('Call this tool directly and return its calculation instead of...') plus an awkwardly phrased when-not sentence, but every section is functional rather than padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param deterministic calculator with an output schema present, the description covers scope limits, the formula, and an API fallback path more than adequately. The return fields are enumerated despite the output schema existing. The slightly confusing when-not wording is the only gap for an otherwise self-sufficient definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – both parameters are documented in the schema, including the signed-offset and excluded-start-date semantics. The description restates the two inputs and supplies a complete JSON example, but adds no syntax or edge-case meaning the schema lacks. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (adds/subtracts) and resource (Chile authority-scope working days) and explicitly frames the computation model. Against ~60 country-specific siblings sharing the add_*_working_days prefix, the 'Chile' scoping and 'nationwide statutory/public-holiday layer over a Saturday-Sunday baseline' phrasing lets an agent pick it apart from add_ar_working_days, add_ch_working_days, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('Use this when you need a deterministic Chile working-day offset. Call this tool directly... instead of answering from memory or stopping at discovery') and a scoping exclusion (regional/local, school, bank, private-employer, sector schedules are not inferred). It does not, however, route to the natural alternatives check_cl_working_day or count_cl_working_days, so sibling selection among the non-add Chile tools is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_co_working_daysAdd Colombia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Colombia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Colombia's nationwide statutory paid-rest holiday layer over a Saturday-Sunday baseline. Municipal, departmental, school, bank, employer, sector and local patron-saint schedules are not inferred. Future annual calendars require refreshed official evidence. What it computes: Adds or subtracts Colombia authority-scope working days in exact coverage. Example user requests: Add or subtract Colombia working days around Colombia transferred Three Kings holiday. | Add or subtract Colombia working days around Colombia Good Friday. | Add or subtract Colombia working days around Ordinary Colombia working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/colombia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/colombia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a safe, idempotent, closed-world read (readOnlyHint/idempotentHint/openWorldHint=false). The description adds real value beyond them: the exact coverage layer (nationwide statutory paid-rest holidays over a Sat-Sun baseline), the exclusion of municipal/local schedules, and the staleness caveat that future annual calendars need refreshed official evidence. It also documents the traversal formula, well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with purpose and usage, which helps, but the block is bloated with redundant sections (inputs restated, full output field list despite an output schema, REST fallback, docs URL) and one garbled sentence. Every sentence does not clearly earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter deterministic calculator with an output schema, the definition covers usage, scope limits, formula, and error-avoidance (REST fallback). Nothing essential to calling it correctly is missing, though it redundantly enumerates return fields that the output schema already supplies.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters, and the description largely restates the same input names plus a JSON example. The formula line adds minor semantic context on how working_days is applied, but parameter-level meaning beyond the schema is thin. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource pair ('Adds or subtracts Colombia authority-scope working days in exact coverage') and the 'What it computes' line reinforces scope. It clearly distinguishes this offset tool from the sibling check_co_working_day and count_co_working_days by framing the operation as an addition/subtraction of a signed offset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives strong positive guidance ('Use this when you need a deterministic Colombia working-day offset', 'Call this tool directly') and a do-not-use clause covering uncovered municipal/departmental/school/bank/sector schedules. The exclusion sentence is garbled ('Do not use this when this package covers...') and it never names a concrete alternative sibling, so it falls short of a clean 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_cz_working_daysAdd Czech Republic Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Czech Republic working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when czech Republic 2026 statutory rest-day facts over an explicitly selected Monday-Friday planning baseline. This is not a universal legal weekly roster. No shift, individual employer, bank/exchange, school, retail opening, payroll or legal-deadline schedule is computed. Commemorative days do not add rest; no substitute Monday is inferred. Future-year coverage is not asserted. What it computes: Adds or subtracts Czech Republic authority-scope working days in exact coverage. Requires explicit mon_fri_planning; commemorative events do not create rest. Example user requests: Add or subtract Czech Republic working days around Two names on January 1, one rest date. | Add or subtract Czech Republic working days around Education commemorative day remains a planning workday. | Add or subtract Czech Republic working days around November 17 is a Czech statutory rest day. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_other_holiday, is_statutory_holiday, is_commemorative_day, payroll_scope. Formula: planning_workday = weekday AND no state_holiday AND no other_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/czech-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/czech-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a statutory universal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: commemorative days do not create rest, no substitute Monday is inferred, future-year coverage is not asserted, and the exact formula and REST fallback path are disclosed. This is well past the reduced annotation bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads the core purpose well, but the body is bloated and repetitive, with garbled fragments like 'around Two names on January 1, one rest date' and 'in 2026-2026.' Several sentences restate the same coverage exclusions, diluting the signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and annotations cover the safety profile, so the description needn't explain returns, yet it still lists them. It thoroughly covers the policy scope and constraints an agent needs, though the garbled example phrasing leaves minor ambiguity about the intended use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it supplies a complete JSON argument example, the planning_workday formula, and clarifies that work_schedule is an 'explicit Monday-Friday planning baseline, not a statutory universal roster.' That goes beyond what the schema fields state on their own.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Adds or subtracts Czech Republic authority-scope working days in exact coverage.' It is clearly the add variant within the add_/check_/count_ family, so an agent can distinguish it from sibling tools. It stops short of naming the alternative tools explicitly, so it lands at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives genuine usage direction: 'Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery,' and it enumerates what it does NOT cover (shift, employer, bank/exchange, school, retail, payroll, legal-deadline schedules). The 'Do not use this when...' sentence is grammatically broken and hard to parse, which weakens an otherwise strong routing statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_de_working_daysAdd Germany Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Germany working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when state, municipal, school, bank, TARGET, transport-system, collective-agreement and employer-specific schedules are not inferred. What it computes: Adds or subtracts Germany authority-scope working days in exact coverage. Example user requests: Add or subtract Germany working days around German Unity Day. | Add or subtract Germany working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/germany-national-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/germany-national-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely useful context beyond that: the exact coverage boundary (authority-scope only, no state/municipal/school/bank/TARGET/transport/collective-agreement/employer schedules) and the deterministic day-by-day algorithm. The outputs list, REST fallback URL and docs link are operational rather than behavioral.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, then organized into labeled sections (coverage exclusion, computation, examples, inputs, outputs, formula, fallback, docs), which scans well. It is longer than necessary, though: the output field list, REST endpoint, and docs URL are largely redundant for an agent that already has an output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter deterministic calculator with an output schema, the description covers the coverage boundary, the computation rule, and an invocation example — nothing essential is missing. Minor deduction for the awkwardly phrased exclusion clause ('...are not inferred') and for enumerating outputs that the output schema already defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both properties carry their own descriptions (date range, signed offset semantics, start-date exclusion). The description's 'Inputs:' line and JSON example merely restate what the schema already provides, so it adds no meaning beyond it — baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Adds or subtracts Germany authority-scope working days') and pins the scope to national/authority level. In a sibling set dominated by per-country add_* tools, the Germany qualifier plus the explicit coverage scope makes it unambiguously distinguishable from add_ar_working_days, add_at_working_days, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you need a deterministic Germany working-day offset', call directly rather than answering from memory) and a when-not clause excluding state/municipal/school/bank/TARGET/employer schedules. It stops short of naming the adjacent siblings (count_de_working_days, check_de_working_day) that an agent might otherwise pick, so it is strong but not complete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_dk_working_daysAdd Denmark Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Denmark working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Collective-agreement, employer, sector, school, bank, local and customary half-day closures are not inferred; Store Bededag is not a holiday from 2024 onward. What it computes: Adds or subtracts Denmark authority-scope working days in exact coverage. Example user requests: Add or subtract Denmark working days around Ascension Day. | Add or subtract Denmark working days around Constitution Day is not a statutory holiday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/denmark-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/denmark-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's real added value is the coverage boundary: only authority-scope statutory days are modeled, half-day and employer-specific closures are not inferred, and Store Bededag stops being a holiday in 2024. It also exposes the computation rule ('decrement only on is_working_day=true'). This is meaningful behavioral context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case, but bloated: it lists sixteen output fields that the output schema already defines, plus a raw REST URL and docs link, and contains some awkward phrasing ('in exact coverage', the Constitution Day example). Roughly a third of the text duplicates structured data that the agent already receives.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter calculator with an output schema and full annotations, the description covers the critical gaps: calendar scope, holiday policy boundary, the 2024 Store Bededag rule, an example invocation, and a REST fallback. Only the redundant output-field enumeration and the slightly malformed exclusion sentence keep it short of 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented there (date range, signed offset semantics, min/max). The description only restates the parameter names and gives one JSON example, adding little beyond the formula hint about one-day-at-a-time movement. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Adds or subtracts Denmark authority-scope working days') and explicitly frames the tool as a deterministic offset calculator. It implicitly distinguishes itself from check_dk_working_day and count_dk_working_days via the add/subtract framing, though it never names those siblings. An agent can identify the operation without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when you need a deterministic Denmark working-day offset' plus a 'Do not use this when...' exclusion listing what is out of scope (collective-agreement, employer, sector, school, bank, local, customary half-days) and the Store Bededag 2024 change. It also tells the agent to call directly rather than answer from memory, and supplies a REST fallback. The when-not sentence is slightly garbled ('nationwide statutory list only'), which keeps it from a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ee_working_daysAdd Estonia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Estonia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when estonia 2026 statutory rest facts over an explicitly selected Monday-Friday planning baseline. Sixteen national-importance dates do not add rest. Four dates carry a conditional three-hour shortening rule but still count as one planning working date, not a half-day or full-day holiday. No substitute or bridge is invented. Individual shifts, actual working hours, opening hours, employer/local/sector/school/bank schedules, replacement weekly rest, payroll, legal deadlines and future years are not computed. What it computes: Adds or subtracts Estonia authority-scope working days in exact coverage. Requires explicit mon_fri_planning; national-importance dates and three-hour shortening never add full-day rest. Example user requests: Add or subtract Estonia working days around Independence Day is statutory rest. | Add or subtract Estonia working days around Shortened working date is not full-day rest. | Add or subtract Estonia working days around National importance does not imply rest. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, is_day_of_national_importance, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_full_day_rest_event; shortened working dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/estonia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/estonia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/idempotent/destructiveHint already covering safety, the description adds substantial context: the exact coverage formula, that national-importance dates and three-hour shortening never add full-day rest, and an explicit negative scope (no personal roster, payroll, opening hours, or future years). That is real behavioral disclosure beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly 250 words for a simple offset computation, with heavy repetition ('Add or subtract Estonia working days around…' three times) and a garbled 'Do not use this when' clause. Useful content exists but it is not front-loaded or tightly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary, yet the definition still lists outputs, provides a REST fallback path, a docs URL, and a worked JSON example. Coverage of what an agent needs to invoke it correctly is strong; a minor deduction for the confusing negative-guidance sentence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date, working_days, and work_schedule. The description restates the three inputs and adds a valid JSON example, but supplies no semantics the schema lacks. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Adds or subtracts Estonia authority-scope working days in exact coverage.' The 'Estonia' qualifier distinguishes it from the many country-named siblings. It is clear, though the framing is buried under dense policy prose rather than stated crisply up front.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a use trigger ('Use this when you need a deterministic Estonia working-day offset') and a routing instruction ('call this tool directly… instead of answering from memory'). However, the 'Do not use this when…' sentence is garbled and names no real alternative sibling such as check_ee_working_day or count_ee_working_days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_eg_working_daysAdd Egypt Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Egypt working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the official nationwide public-holiday layer published for Egyptian government/public-sector scope. Private employers, banks, schools, diplomatic missions, exchanges, local or sector calendars may differ and are not inferred. Friday-Saturday is the ordinary weekend baseline; special remote-work or operating-hour decisions are not treated as holidays. Islamic dates and later Prime Minister decisions require a refreshed package. What it computes: Adds or subtracts Egypt authority-scope working days in exact coverage. Example user requests: Add or subtract Egypt working days around Eid al-Fitr public holiday. | Add or subtract Egypt working days around Ordinary Egypt working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/egypt-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/egypt-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses the algorithmic behavior ('move one day at a time; decrement only on status.is_working_day=true'), the weekend baseline (Friday-Saturday), exclusions (remote-work/operating-hour decisions), data freshness constraints for Islamic dates, and the exact REST fallback endpoint. This is rich behavioral context that annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with clear sections and front-loads usage guidance, but it is long and includes an unnecessary enumeration of all output fields despite the presence of an output schema. Several lines repeat schema information, reducing conciseness without adding proportional value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 2-parameter tool with annotations and a full output schema, the description is thorough: it covers scope, exclusions, computation logic, examples, fallback access, and documentation links. An agent has everything needed to select and invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented in the input schema. The description lists the same inputs and repeats a JSON example already present in the schema, adding only minor clarification ('signed offset; start date excluded for non-zero offsets') that is already captured by the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: adding or subtracting Egypt authority-scope working days. It distinguishes this from siblings by naming the Egyptian government/public-sector holiday scope and the Egypt-specific calculation, so an agent can separate it from check_eg_working_day or count_eg_working_days.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance ('when you need a deterministic Egypt working-day offset') and calls out when not to use it (private employers, banks, schools, diplomatic missions, sector calendars). It does not explicitly name the alternative sibling for single-date checks or counts, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_es_working_daysAdd Spain Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Spain working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the remaining national, autonomous-community, Ceuta/Melilla and up to two municipal local holidays require a jurisdiction-specific calendar. What it computes: Adds or subtracts Spain authority-scope working days in exact coverage. Example user requests: Add or subtract Spain working days around National Day. | Add or subtract Spain working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/spain-national-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/spain-national-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds real behavioral context beyond them: the exact iteration formula, the deterministic/no-memory-fallback directive, the output field set, and a concrete REST fallback path with a warning not to guess other endpoints. It stops short of 5 only because it does not explain error/edge behavior (e.g., what happens beyond the ±1000 bound).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose, when-to-use, when-not, then a consistent Inputs/Outputs/Formula/REST structure. However the 'Example user requests' lines are noisy ('around Ordinary weekday') and some output/fallback content is padding, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering safety, and 100% schema coverage, the description supplies everything else an agent needs: deterministic formula, direct-call directive, JSON example, REST fallback, and docs link. Complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameter descriptions already carry meaning ('start date excluded for non-zero offsets'). The description restates the two inputs and gives a complete JSON example, which is mildly useful but largely redundant against the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds or subtracts Spain authority-scope working days in exact coverage') and names the exact jurisdiction scope. Against the many sibling add_<country>_working_days tools, the Spain confinement is unambiguous, so an agent can route correctly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('when you need a deterministic Spain working-day offset') and to call it rather than answer from memory, plus a 'do not use' clause routing cases needing local/municipal calendars elsewhere. The exclusion is worded confusingly (it never names the alternative tool to call instead), so it falls short of a clean 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_fi_working_daysAdd Finland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Finland working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide full-day public-holiday layer only. Midsummer Eve, Christmas Eve, employer, collective-agreement, sector, school, bank, Åland, Sámi and local closures are not inferred; private-sector annual-leave counting may treat Saturdays and certain eves differently. What it computes: Adds or subtracts Finland authority-scope working days in exact coverage. Example user requests: Add or subtract Finland working days around Independence Day. | Add or subtract Finland working days around Midsummer Eve is agreement-dependent. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/finland-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/finland-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the coverage scope ('authority-scope', exact coverage), the caveats about which closures are NOT inferred, and the step-by-step formula (move one day at a time, decrement only on is_working_day=true). It does not, however, detail date-range limits or rate/error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the usage decision and scope caveats, which is the right ordering. It is somewhat long: the full output-field list, formula, REST fallback and docs URL add bulk, though each serves a purpose. Overall efficient but not maximally tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, enumerating return fields in the description is partly redundant, but coverage, formula, inputs, and a runnable JSON example make the definition self-sufficient for a country-scoped calculator among many siblings. Minor redundancy keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both params (start_date, working_days) are already documented, including the signed-offset and start-date-exclusion semantics. The description's 'Inputs' line merely repeats the parameter names and adds no syntax or meaning beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource+scope: adding/subtracting Finland authority-scope working days. It explicitly frames the tool as a deterministic offset computation and distinguishes it from the discovery/legacy path ('call this tool directly... instead of ... stopping at discovery').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('when you need a deterministic Finland working-day offset') and when-not-to-use conditions (nationwide public-holiday-only layer, Midsummer Eve, Christmas Eve, employer/collective-agreement/sector/school/bank/Åland/Sámi and local closures not inferred, private-sector leave treatment). It also directs the agent to return the calculation rather than answer from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_fr_working_daysAdd France Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic France working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when alsace-Moselle, overseas territories, employer, sector, school, bank, exchange and regional calendars are not inferred. What it computes: Adds or subtracts France authority-scope working days in exact coverage. Example user requests: Add or subtract France working days around Bastille Day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/france-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/france-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real value beyond that: the deterministic formula ('move one day at a time; decrement only on is_working_day=true'), explicit coverage scope, and a direct REST fallback endpoint. It stops short of stating rate limits or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the use case well, but bloats with a redundant outputs enumeration even though an output schema exists, plus formula/REST/docs blocks. The muddled 'Do not use this when...' sentence adds confusion rather than scoping information, so size is not fully earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-param read-only calculator with an output schema, the description is complete: coverage scope, determinant formula, fallback path, and docs link are all present. The redundant output-field list is unnecessary given the output schema, but nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents both parameters, including the 'start date excluded for non-zero offsets' rule and the ±1000 bound. The description only restates the input names ('start_date (date); working_days (integer)') without adding format or range meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Adds or subtracts France authority-scope working days in exact coverage,' and anchors it with 'deterministic France working-day offset.' The France authority-scope qualifier distinguishes it from the 60+ other country/region add_*_working_days siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear positive trigger ('when you need a deterministic France working-day offset') and an explicit directive to call it rather than answer from memory or stop at discovery. However, the exclusion sentence ('Do not use this when alsace-Moselle, overseas territories, employer... are not inferred') is garbled and doesn't name an alternative scope tool, so the negative guidance is only partly usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_gh_working_daysAdd Ghana Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Ghana working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide statutory/public-holiday layer only. It is not a universal private-employer, bank, exchange, school, local, sector or essential-service calendar. The 2026 package uses observed dates published or cross-checked for 2026; lunar dates and later Executive Instruments may change. It does not treat the pre-Act-1142 4 August Founder’s Day or 2025-era September naming as current law, and it does not infer additional closure days from the legal anchors alone. What it computes: Adds or subtracts Ghana authority-scope working days in exact coverage. Example user requests: Add or subtract Ghana working days around Republic Day observed. | Add or subtract Ghana working days around Ordinary Ghana working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ghana-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ghana-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine behavioral context beyond that: nationwide statutory layer only, 2026 observed-date dataset, lunar dates and later Executive Instruments may change, and pre-Act-1142 Founder's Day is excluded.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use condition, which is good, but several sentences restate the same idea ('Adds or subtracts... in exact coverage' repeats the opening), the example user requests are low-value, and the formula is duplicated across the description. The REST fallback and docs URL earn their place; the redundancy does not.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so the enumerated output fields are redundant but harmless. Everything an agent needs to call correctly — scope limits, date window, formula, fallback endpoint — is present, missing only explicit sibling differentiation against count_/check_ variants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so baseline 3 applies. The description lists the inputs and a JSON example but adds no semantics beyond the schema's own field descriptions ('signed offset', date range).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add/subtract) and resource (Ghana working days) plus the exact scope: 'deterministic Ghana working-day offset'. An agent can distinguish this from count_gh_working_days and check_gh_working_day by the offset semantics, though neither sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit 'Use this when...' and 'Do not use this when...' clauses plus a directive to call the tool rather than compute from memory. The exclusions are real (private-employer, bank, exchange, school calendars are out of scope), but the negative clause is grammatically mangled ('Do not use this when this package covers...'), which weakens routing precision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_global_public_holiday_working_daysAdd Global Public-Holiday Reference Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a 2026-2028 date offset and accept the OpenHolidays nationwide-only, no-inferred-substitute-day reference semantics. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the task requires a direct official authority, regional/local or employer calendar, substitute-day rules, or dates outside the published coverage. What it computes: Adds or subtracts working days using the pinned OpenHolidays nationwide public-holiday reference and CLDR weekend rule for a supported country. Example user requests: Add five reference working days to 2026-10-23 in Austria. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-23","territory":"AT","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], non_working_weekend_days_skipped [days], public_holidays_skipped, territory, territory_name, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: move one Gregorian day at a time; decrement remaining only when the reference status is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
territoryYesISO-style alpha-2 country code supported by the pinned OpenHolidays public-holiday reference snapshot.
start_dateYesGregorian start date in 2026-2028.
working_daysYesSigned offset; the start date is excluded for non-zero offsets. Unit: working days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, and the description adds substantive behavior beyond them: the exact reference semantics, the CLDR weekend rule, coverage window, substitute-day policy, the day-by-day counting formula, the output units, and a pinned REST fallback with a warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with usage and exclusions in labelled sections that are easy to scan, but it is long and carries some redundancy (re-listing all ~17 output fields, duplicating the JSON example already in the schema, and restating the REST URL).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 3-parameter, high-coverage schema with an output schema and multiple near-identical siblings, the description covers semantics, scope, sourcing, formula, fallback endpoint, and docs link. Nothing an agent needs to select or invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented (including the alpha-2 pattern, date format, and signed-offset unit). The description's Inputs line largely restates the schema and adds no new format or boundary meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (adds/subtracts working days) plus the pinned reference source, scope (nationwide-only OpenHolidays, 2026-2028) and a concrete example request. It is clearly distinguishable from siblings like count_global_public_holiday_working_days or check_global_public_holiday_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use (need a 2026-2028 offset and accept nationwide-only, no-inferred-substitute-day semantics; call directly instead of answering from memory) and an explicit do-not-use clause (official authority, regional/local or employer calendars, substitute-day rules, out-of-coverage dates). This is textbook routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_global_reference_working_daysAdd Global Reference Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a broad 2026-2028 date offset and accept OpenWorkdays reference semantics, including its source observed/estimated flags. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the task requires a direct official authority, regional/local or employer calendar, or dates outside published coverage. What it computes: Adds or subtracts working days using the pinned OpenWorkdays national-scope reference for 246 country/territory codes. Example user requests: Add five broad-reference working days to 2026-10-23 in Australia. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-23","territory":"AU","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], non_working_weekend_days_skipped [days], public_holidays_skipped, territory, territory_name, source_territory_name, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: move one Gregorian day at a time; decrement remaining only when the source reference status is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
territoryYesISO-style alpha-2 country code supported by the pinned OpenWorkdays reference snapshot.
start_dateYesGregorian start date in 2026-2028.
working_daysYesSigned offset; the start date is excluded for non-zero offsets. Unit: working days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: pinned snapshot semantics, observed/estimated source flags, coverage window, the exact day-by-day formula, and the REST fallback endpoint with a warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with usage guidance and well-organized under labels, but it is long and repeats the JSON example already present in the input schema, plus an output field list that duplicates the existing output schema. Most sentences earn their place, though a few are redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers scope limits (2026-2028 coverage), required inputs, a worked example, computation semantics, and a documented fallback for a low-complexity calculation tool. Since an output schema exists, the enumerated output fields are redundant but harmless rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters (including enum, pattern, bounds, and unit), making 3 the baseline. The description restates the parameter list and adds only marginal detail (start date exclusion for non-zero offsets, working-day decrement rule), which is genuine but modest added meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Adds or subtracts working days using the pinned OpenWorkdays national-scope reference for 246 country/territory codes') and distinguishes its 'broad reference' scope from official-authority, regional, and employer calendars. It never names the closest sibling tools (add_global_working_days, add_global_public_holiday_working_days), so the differentiation is conceptual rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you need a broad 2026-2028 date offset'), explicit when-not-to-use ('direct official authority, regional/local or employer calendar, or dates outside published coverage'), and an operational directive ('Call this tool directly and return its calculation instead of answering from memory'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_global_working_daysAdd Global Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a weekday-based date offset for a territory and explicitly want public holidays excluded from the calculation. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when a public-holiday, employer, bank, exchange, school, religious or emergency-closure calendar is required. What it computes: Adds or subtracts weekday-baseline working days for any supported CLDR alpha-2 territory code using CLDR weekend rules, without inventing public-holiday defaults. Example user requests: Add 5 weekday working days to 2026-10-02 in AU. | Subtract 3 Saudi weekday-baseline working days from 2026-06-15. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-02","territory":"AU","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], territory, territory_display_name, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: move one Gregorian day at a time and decrement remaining only when globalWorkingDayStatus(date, territory).is_working_day is true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
territoryYesCLDR territory code in alpha-2 form. The complete accepted-code enum is exposed here; it includes ISO-style territory codes plus CLDR regional and legacy codes where present.
start_dateYesGregorian start date from 1900-01-01 through 2100-12-31.
working_daysYesSigned weekday-baseline offset; non-zero offsets exclude the start date. Unit: working days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds substantial behavioral context beyond those annotations: the exclusion of public-holiday defaults, the CLDR weekend-rule basis, the step-by-step formula, output fields, and a direct REST fallback. There is no contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage and exclusions, then follows a scan-friendly structure with inputs, examples, outputs, formula, fallback, and docs. It is longer than necessary because the inputs and outputs sections largely duplicate the fully described schema and output schema, but the organization keeps it readable for a complex calculation tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool complexity, full schema coverage, output schema, and annotations, the description is complete enough to select and invoke the tool correctly. It covers scope, exclusions, examples, inputs, computation behavior, outputs, and fallback documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented in the schema with type, examples, and constraints. The description repeats the inputs and gives a complete JSON example, but it adds little semantic meaning beyond what the schema already provides. The baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: adding or subtracting weekday-baseline working days for a CLDR territory. It directly distinguishes this from public-holiday, employer, bank, exchange, school, religious, and emergency-closure calendars, which is exactly the boundary needed among the sibling working-day tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance: a weekday-based date offset with public holidays excluded. It also gives explicit when-not-to-use guidance: when a public-holiday or other specialized closure calendar is required. Although it does not name the exact sibling tool, the condition maps unmistakably to the public-holiday sibling and is stronger than a generic context cue.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_gr_working_daysAdd Greece Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Greece working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide compulsory public-holiday layer over a Saturday-Sunday baseline. 28 October is included as published in the 2026 Ministry schedule; Gov.gr notes that optional-holiday and employer discretion can apply under the underlying legal framework. Clean Monday, Good Friday and Holy Spirit Monday are not generalized as compulsory closures. Regional, municipal, school, bank, exchange, employer, collective-agreement and sector schedules are not inferred. What it computes: Adds or subtracts Greece authority-scope working days in exact coverage. Example user requests: Add or subtract Greece working days around Greece Easter Monday. | Add or subtract Greece working days around Greece ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/greece-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/greece-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real domain context beyond that: which holidays are and are not treated as compulsory, that substitute-day and employer-discretion policies exist, and that regional/municipal/school/bank schedules are not inferred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The use-case statement is front-loaded, but the body is bloated and partly garbled (the 'Do not use this when this package covers...' phrasing is hard to parse), and it enumerates an output field list that the output schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter deterministic calculator with an existing output schema, the description covers scope, coverage caveats, and invocation intent adequately. The redundant output enumeration and awkward exclusion sentence are minor blemishes rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already fully documented. The description lists the inputs and adds a formula note ('decrement only on status.is_working_day=true'), but that is algorithmic detail rather than clarification of the parameter values beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific use case and states plainly that it 'Adds or subtracts Greece authority-scope working days in exact coverage.' The Greece/jurisdiction scope cleanly distinguishes it from the many sibling add_*_working_days tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('Use this when you need a deterministic Greece working-day offset') and instructs the agent to call it rather than compute from memory. The 'Do not use this when...' clause is garbled but signals that optional/regional/employer-discretion layers are out of scope, which is a useful exclusion, though it never names a specific alternative sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_hk_working_daysAdd 中国香港特别行政区 Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic 中国香港特别行政区 working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package is the Hong Kong general/public-holiday calendar. Statutory employee holidays, employer rest days, school calendars, bank/exchange closures and private-sector arrangements are not inferred. What it computes: Adds or subtracts 中国香港特别行政区 authority-scope working days in exact coverage. Example user requests: Add or subtract 中国香港特别行政区 working days around 2027 Lunar New Year substitute. | Add or subtract 中国香港特别行政区 working days around 2026 Ching Ming substitution. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hong-kong-general-holidays-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hong-kong-general-holidays-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world. The description adds genuinely new behavioral context: the algorithm ('move one day at a time; decrement only on status.is_working_day=true'), the deterministic guarantee, the explicit non-inference of statutory/school/bank holidays, and a REST fallback endpoint. No auth, rate-limit, or error-behavior notes, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the routing instruction, which is good, but the body is padded: the 16-field output list is pure duplication of the output schema, the territory name is repeated in near-identical phrasing across three lines, and the REST-fallback/docs URLs consume space without aiding selection. The useful content could be roughly halved.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter deterministic calculator with a full output schema and rich annotations, the description covers the remaining burden well: scope, exclusions, algorithm, and an API fallback. Enumerating return fields is redundant given the output schema, but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (start_date, working_days) are already documented, including the 'signed offset; start date excluded for non-zero offsets' semantics. The description repeats the input list and adds a JSON example, plus the formula clarifies what working_days means operationally, but this is marginal value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Adds or subtracts 中国香港特别行政区 authority-scope working days in exact coverage', with a concrete 'What it computes' line and example requests. However, it never distinguishes itself from the many close siblings (add_china_working_days, count_hk_working_days, check_hk_working_day) or the other HK-adjacent calendars, so an agent must infer the boundary from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit positive routing ('Use this when you need a deterministic working-day offset... return its calculation instead of answering from memory') and an explicit scope exclusion ('Do not use this when this package is the Hong Kong general/public-holiday calendar... statutory employee holidays, employer rest days, school calendars, bank/exchange closures... are not inferred'). It stops short of naming the sibling tools (count_/check_ variants) as alternatives, which is the one routing gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_hr_working_daysAdd Croatia Working DaysB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Croatia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline. Article 2 memorial days do not add rest. Article 3 religious rights depend on the person and, for specified festivals, the chosen day; they are not included in a universal union. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, payroll, legal deadlines and future years are not computed. What it computes: Adds or subtracts Croatia authority-scope working days in exact coverage. Requires explicit mon_fri_planning; memorials and person-specific religious rights are not general rest. Example user requests: Add or subtract Croatia working days around Good Friday is not a general statutory holiday. | Add or subtract Croatia working days around Corpus Christi. | Add or subtract Croatia working days around Independence memorial is not a rest holiday. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_commemorative_day, religious_rest_scope, payroll_scope. Formula: planning_workday = weekday AND no article_1_statutory_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/croatia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/croatia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual statutory roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, non-open-world). The description adds genuine scope disclosure: what is NOT computed (individual shifts, replacement weekly rest, employer/local/sector schedules, payroll, legal deadlines, future years), plus a REST fallback path and docs link. This is real behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with template fragments and broken sentences (e.g. 'Add or subtract Croatia working days around Good Friday is not a general statutory holiday,' 'Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline'). Example requests, output field lists, formula, REST path, and docs are all crammed in without clear front-loading; several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The scope boundaries and coverage limitations are meaningfully covered, and an output schema exists so return values need not be explained (the long output-field dump is redundant). However, the malformed exclusion clause and cluttered structure leave the when-not guidance incomplete for an agent deciding between this tool and the count/check siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented in the schema; the baseline is 3. The description restates the inputs and adds the constraint that mon_fri_planning is required and not an individual statutory roster, but contributes little beyond what the schema already supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Adds or subtracts Croatia authority-scope working days in exact coverage,' and the opening line frames it as a deterministic Croatia working-day offset. This clearly distinguishes it from sibling check_hr_working_day and count_hr_working_days, though that distinction is left implicit rather than named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a usable when-to-use instruction ('Call this tool directly and return its calculation instead of answering from memory') and an attempt at a when-not clause, but the exclusion sentence ('Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline') is grammatically broken and its condition is not parseable. Guidance exists but is partly garbled.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_hu_working_daysAdd Hungary Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Hungary working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when hungary 2026 general Monday-Friday work schedule only (Labour Code section 97(2), NGM 10/2025). Requires explicit work_schedule. Eleven statutory holidays and three paired transfers are included; three Saturdays are working. No shift, personal, bank, exchange, school, local-office opening or payroll schedule is inferred. No automatic substitute Monday. The annual decree expires 2027-01-01; later schedules require new evidence. What it computes: Adds or subtracts Hungary authority-scope working days in exact coverage. Requires an explicit general Monday-Friday work schedule; includes three working Saturdays and paired rest dates. Example user requests: Add or subtract Hungary working days around Working Saturday compensates August 21. | Add or subtract Hungary working days around Christmas Eve is transferred rest, not statutory holiday. | Add or subtract Hungary working days around Whit Monday. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"general_monday_friday"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_transferred_rest_day, is_makeup_working_day, transfer_pair, payroll_scope. Formula: working = published makeup day OR (weekday AND not statutory holiday AND not transferred rest) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hungary-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hungary-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired: confirm the general Monday-Friday work schedule under Labour Code 97(2). Do not use for shifts or institution-specific opening.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, non-destructive and closed-world, yet the description adds substantial domain behavior: eleven statutory holidays, three paired transfers, three working Saturdays, no automatic substitute Monday, no inferred shift/bank/exchange/payroll schedules, and a decree expiry of 2027-01-01. This is exactly the kind of coverage/limitation context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is long and contains redundancy: the example user requests, the outputs list (already in the output schema), the REST fallback URL and docs link all inflate it. It is information-dense and somewhat front-loaded, but several sentences could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a deterministic calculator with a full output schema and complete annotations, the description supplies the calendar coverage, transfer rules and expiry that an agent needs to decide whether the tool applies. Its main gap is the ambiguous when-not sentence; otherwise it is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, but the description goes further by spelling out the signed-offset semantics (

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Adds or subtracts Hungary authority-scope working days in exact coverage' gives a specific verb and resource, and the tool is clearly the HU member of the country working-day family, distinguishable from check_hu_working_day and count_hu_working_days. The purpose is clear but muddied by the garbled 'Do not use this when hungary 2026 general Monday-Friday work schedule only' clause that interrupts the flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says to call the tool directly rather than answering from memory or stopping at discovery, and notes the requirement for an explicit work_schedule. The 'Do not use this when...' sentence appears intended as an exclusion but is syntactically broken, so the when-not guidance is only partially usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_id_working_daysAdd Indonesia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Indonesia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when cuti bersama is facultative for private employers and may be governed by each employer; ASN-specific implementation and local, sector, religious-optional and employer schedules are not inferred. What it computes: Adds or subtracts Indonesia authority-scope working days in exact coverage. Example user requests: Add or subtract Indonesia working days around National holiday. | Add or subtract Indonesia working days around Joint leave is separately labelled. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/indonesia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/indonesia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/idempotent annotations by disclosing the algorithm ('move one day at a time; decrement only on is_working_day=true'), the non-inferred schedule boundaries, a REST fallback URL, and documentation link. This is substantive behavioral context the annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger and exclusion, which is good, but the 'Outputs:' field list duplicates the existing output schema and the formula/REST/docs lines pad an otherwise tight definition. The core guidance is buried among redundant enumerations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter calculator with an output schema and full annotations, the definition covers trigger, exclusions, computation, and fallback. Minor confusion in the 'cuti bersama' exclusion phrasing, and the output list is redundant, but nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented, including the signed-offset/exclusion semantics. The description's 'Inputs:' line merely restates types, adding nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('adds or subtracts') plus resource ('Indonesia authority-scope working days') and scope ('exact coverage'). An agent can distinguish this from the many sibling add_*_working_days tools purely by jurisdiction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when...' trigger, a directive to call directly rather than answer from memory, and an explicit 'Do not use this when...' exclusion covering cuti bersama/ASN/employer-specific schedules. Both the positive and negative conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_india_central_working_daysAdd India Central Government Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic central-government date offset with a required office scope. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an exact state/UT, bank, employer, school, exchange or locally selected optional-holiday calendar. What it computes: Adds or subtracts dates using the pinned 2026 central-government Gazetted schedule and weekend baseline; Restricted and local optional selections are not inferred. Example user requests: Add five Delhi central-government working days after 2026-10-16. Inputs: start_date (date); office_scope (enum); working_days (integer). Complete JSON argument examples: {"start_date":"2026-10-16","office_scope":"delhi_new_delhi","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, gazetted_holidays_skipped, restricted_holidays_available_at_result, territory, territory_name, office_scope, office_scope_name, is_guaranteed_non_working_day, day_type, restricted_holiday_available, calendar_scope, rest_day_policy, restricted_holiday_policy, selection_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement remaining only when selected status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/india-central-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/india-central-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026.
office_scopeYesRequired scope: delhi_new_delhi or outside_delhi. State/UT holiday calendars are not represented by this package.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds substantive behavioral context beyond that: the pinned 2026 Gazetted schedule, weekend baseline, the fact that Restricted and local optional selections are not inferred, and the day-by-day decrement formula. It also surfaces policy fields returned so the agent knows what constraints apply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose, exclusions, computation, example, inputs, JSON example, outputs, formula, fallback and docs. It is long, and the Inputs line plus full JSON argument example and the Outputs list partly duplicate the schema and output schema, so there is some redundancy, but each labelled section earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the computed schedule, the office_scope requirement, the formula, an explicit JSON example, the REST fallback endpoint, and docs link. With an output schema present, the description is more than sufficient for an agent to select and call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes beyond by restating the inputs, explaining working_days is a semantical offset, and providing a complete JSON argument example with office_scope enum and date format, which reinforces how to invoke it correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add/subtract working-day offset), a precise resource (India central-government date offset) and scope (2026 pinned Gazetted schedule, office scope required). It also distinguishes this from state/UT, bank, employer, school and exchange calendars, which lets an agent separate it from the many sibling country tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence gives the condition to use it and even instructs the agent to call directly rather than answer from memory or stop at discovery. The 'Do not use this when...' sentence explicitly names the excluded scenarios (state/UT, bank, employer, school, exchange, locally selected optional-holiday calendars), giving both when and when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ireland_working_daysAdd Ireland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Ireland national public-holiday offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer-selected benefit day or non-national schedule. What it computes: Adds or subtracts Ireland national working days in exact 2026-2027 coverage. Example user requests: Add one Ireland working day after 2027-01-29. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-01-29","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, holiday_names, calendar_scope, good_friday_policy, weekend_holiday_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on Ireland status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ireland-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ireland-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description goes further, disclosing the actual algorithm ('move one day at a time; decrement only on Ireland status.is_working_day=true'), the exact coverage window (2026-2027), and a REST fallback URL. This is substantive behavioral context beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and clearly labeled (Use this when / Do not use / What it computes / Inputs / Outputs / Formula / REST fallback / Docs). Despite its length, each section serves a distinct purpose with no wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description supplements it with coverage window, formula, worked example, fallback endpoint, and docs link, leaving no gap an agent would need before invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date and working_days. The description restates the inputs and gives a complete JSON example, but adds little semantic detail beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Adds or subtracts Ireland national working days in exact 2026-2027 coverage.' It distinguishes the operation from the check_ireland_working_day and count_ireland_working_days siblings and from other territories, so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need a deterministic Ireland national public-holiday offset'), explicit instruction to return the calculation directly rather than answering from memory, and an explicit when-not-to-use exclusion ('employer-selected benefit day or non-national schedule'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_it_working_daysAdd Italy Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Italy working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when regional, municipal, local patron-saint, school, bank, sector, collective-agreement and employer-specific schedules are not inferred. What it computes: Adds or subtracts Italy authority-scope working days in exact coverage. Example user requests: Add or subtract Italy working days around Republic Day. | Add or subtract Italy working days around Easter Monday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/italy-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/italy-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: the exact computation formula ('move one day at a time; decrement only on status.is_working_day=true'), the authority-scope coverage boundary, and a REST fallback endpoint with an explicit warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The critical routing sentence is front-loaded, which is good, but the description is bloated: the 'Outputs:' enumeration duplicates the output schema field-by-field, and the docs/fallback/formula lines, while useful, push the length well past what a small offset calculator needs. Several labelled sections could be trimmed without losing decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter deterministic calculator with an output schema and full annotation coverage, this is nearly complete: it discloses coverage scope, computation formula, a REST fallback, and documentation. The only real gap is that it explains return fields the output schema already defines and never clarifies its relationship to the count_/check_ siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description restates the input names and gives one full JSON example (including the working_days=0 boundary), which adds marginal value but does not go beyond the schema's own examples and the 'signed offset; start date excluded for non-zero offsets' note.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Adds or subtracts Italy authority-scope working days in exact coverage' plus a 'deterministic Italy working-day offset'. The Italy scoping distinguishes it from the many country siblings, but the description never explicitly distinguishes it from check_it_working_day or count_it_working_days, which share the same country scope and differ only in operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need a deterministic Italy working-day offset' gives clear when-to-use context, and the 'Do not use this when...' clause signals a scope limitation. However, it never names the obvious alternatives (count_it_working_days, check_it_working_day) or states the condition that selects between them, so the routing between sibling operations is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_japan_national_working_daysAdd Japan National Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Japan statutory national-holiday date offset in 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need company, school, bank, exchange or prefectural closure semantics. What it computes: Adds or subtracts dates using the pinned Japan statutory national-holiday schedule and weekend baseline. Example user requests: Add five Japan national working days after 2027-03-19. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-03-19","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, national_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_legal_bases, weekend_days, calendar_scope, rest_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement remaining only when Japan national status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/japan-national-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/japan-national-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description goes beyond them by disclosing the pinned dataset/version, the deterministic step-by-step algorithm, the enumerated output fields, source attributions, and a REST fallback path with an explicit warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use/defer decision and organized into labeled sections, but it is long and repeats information the schema already contains (inputs list, JSON example, output field list). Mostly earns its length, with some redundancy against structured fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers computation semantics, scope limits, output fields, dataset versioning, and a REST fallback plus doc link, which is ample for a 2-parameter deterministic calculator. The output-field enumeration is redundant given the output schema exists, keeping it just under a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries both parameters' formats and the signed-offset semantics. The description's 'Inputs' line and JSON example merely restate what the schema provides, adding no new syntactic or edge-case detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (adds/subtracts), resource (dates), and scope (Japan statutory national-holiday schedule with weekend baseline and a 2026-2027 window). This is clearly distinguishable from the 60+ sibling country working-day tools and from check_/count_japan_national variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('deterministic Japan statutory national-holiday date offset in 2026-2027'), an explicit instruction to prefer this over memory/discovery, and an explicit when-not ('company, school, bank, exchange or prefectural closure semantics'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ke_working_daysAdd Kenya Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Kenya working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide public-holiday layer only. It is not a universal private-employer, bank, school, county, sector, diplomatic or shift-work calendar. The Saturday-Sunday baseline is a calculation convention for ordinary weekday work, not a claim that every employer uses the same roster. Idd-ul-Fitr and Idd-ul-Adha are pinned to the 2026 Gazette declarations; future lunar dates and later special notices require a refreshed package. The Act's Sunday substitution rule is preserved and no Saturday-to-Monday substitution is inferred. What it computes: Adds or subtracts Kenya authority-scope working days in exact coverage. Example user requests: Add or subtract Kenya working days around Idd-ul-Fitr public holiday. | Add or subtract Kenya working days around Ordinary Kenya working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kenya-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kenya-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, but the description adds substantial extra context: deterministic exact-coverage calculation, Saturday-Sunday baseline convention, 2026 Gazette pinning for Idd holidays, need to refresh future lunar dates, preservation of the Act's Sunday substitution rule, no Saturday-to-Monday inference, the step-by-step formula, and a REST fallback endpoint. This goes well beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main use case and organized into sections for scope, computation, examples, inputs, outputs, formula, REST fallback, and docs. However, it is verbose, includes an output field list despite an output schema being present, has awkward example user requests, and contains redundant caveat phrasing that could be tightened without losing selection guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only deterministic calculator, the description is highly complete: it covers scope, limitations, data vintage, holiday policy, formula, inputs, example invocation, outputs, REST fallback, and documentation. The output list is redundant because an output schema exists, but no critical context needed to select or invoke the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents both parameters with descriptions and examples. The description restates the inputs and gives a complete JSON example, but adds little semantic meaning beyond what the schema provides, such as the signed offset and start-date exclusion rule. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Adds or subtracts Kenya authority-scope working days' and scopes it as a 'deterministic Kenya working-day offset'. This clearly distinguishes it from the many country-specific sibling tools, so an agent can identify it as the Kenya add-offset calculator without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: 'when you need a deterministic Kenya working-day offset', and says to call it directly instead of answering from memory. It also lists when-not-to-use cases such as private-employer, bank, school, county, sector, diplomatic, or shift-work calendars. It does not name sibling alternatives such as check_ke_working_day or count_ke_working_days, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_kr_working_daysAdd South Korea Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic South Korea working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the package covers the 2026 statutory/public-office schedule only; private-employer, school, bank, exchange, local-government and 2027 schedules are not inferred. What it computes: Adds or subtracts South Korea authority-scope working days in exact coverage. Example user requests: Add or subtract South Korea working days around New Labor Day public holiday. | Add or subtract South Korea working days around Published substitute holiday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-korea-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-korea-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/closed-world, and the description still adds real behavioral context: the exact computation rule ('move one day at a time; decrement only on status.is_working_day=true'), the coverage boundary, the enumerable output fields, a REST fallback endpoint, and a docs link. This goes well beyond the structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is correctly front-loaded and the sectioned layout is easy to scan, but the Inputs line duplicates the schema and the full Outputs field list duplicates the existing output schema. The size is larger than the marginal informational gain warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers everything an agent needs: purpose, scope exclusions, argument example, computation rule, fallback transport, and docs URL. Since an output schema exists it needn't explain return values, yet the description is complete even without relying on that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's 'Inputs: start_date (date); working_days (integer)' only restates the schema types, and the offset semantics ('start date excluded for non-zero offsets') are already documented in the schema. The JSON example adds a little concreteness but no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource+scope: 'Adds or subtracts South Korea authority-scope working days in exact coverage.' An agent can tell this computes an offset rather than checking a day or counting days. It never names its closest siblings (count_kr_working_days, check_kr_working_day, list_working_day_calendars), so the differentiation rests mainly on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need a deterministic South Korea working-day offset') and when-not-to-use ('package covers the 2026 statutory/public-office schedule only; private-employer, school, bank, exchange, local-government and 2027 schedules are not inferred'), plus a directive to call it rather than answer from memory. It stops short of naming an alternative tool to use instead for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_kz_working_daysAdd Kazakhstan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Kazakhstan working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide published 2026 five-day schedule over a Saturday-Sunday baseline. Six-day, shift, continuous-operation, employer, bank, school, local and sector calendars are not inferred. Qurban Ait is represented by the published 2026 first-day date. Adilet's current text records Constitution Day on 15 March with an amendment effective 2026-07-01, while the published 2026 government calendar does not add a March 15/16 closure; this package follows the published 2026 calendar and future-year packages must refresh the legal transition. What it computes: Adds or subtracts Kazakhstan authority-scope working days in exact coverage. Example user requests: Add or subtract Kazakhstan working days around Nauryz transfer day. | Add or subtract Kazakhstan working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kazakhstan-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kazakhstan-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe/idempotent read profile, but the description adds real behavioral context beyond them: exact coverage boundaries, calendars explicitly NOT inferred, Qurban Ait handling, and the Constitution Day legal-transition caveat. It also supplies the iteration formula and a canonical REST fallback path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Section labels (What it computes, Inputs, Outputs, Formula, Docs) front-load usefully, but the Adilet/Constitution Day passage is dense legal detail of marginal value to a caller, and the 'Do not use this when this package covers...' clause is a malformed run-on. Several sentences do not earn their place for tool-selection purposes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations already present, the definition still covers enough for correct invocation: scope limits, formula, example arguments, and error-avoidance guidance. The Outputs field list redundantly duplicates the output schema, but nothing an agent needs to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (start_date, working_days) are already fully documented in the schema, including the sign convention. The description restates the inputs and adds a JSON example, but contributes no meaning beyond what the structured schema already provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (add/subtract Kazakhstan working days) and its scope precisely: the nationwide published 2026 five-day schedule over a Saturday-Sunday baseline. It names the country-specific coverage that distinguishes it from the ~60 sibling country tools, so an agent can select it without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'use this when' trigger (deterministic Kazakhstan working-day offset, prefer the calculator over memory or stopping at discovery) and a 'do not use' clause listing excluded calendar types (six-day, shift, continuous-operation, employer, bank, school, local, sector). The do-not-use sentence is grammatically garbled, and it does not name sibling alternatives like count_kz_working_days or check_kz_working_day, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_lk_working_daysAdd Sri Lanka Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Sri Lanka working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a combined official holiday-class calendar, not a universal private-employer closure rule. Public, bank and mercantile classifications remain in each event kind; the March 18, March 25 and April 1 fuel-conservation entries apply to government offices only and the schedule was cancelled effective April 8. Essential services, schools, private employers, sector agreements, local arrangements and later unlisted notices are not inferred. The additional day after the National Vesak Festival is not invented beyond the published May 2 calendar entry. What it computes: Adds or subtracts Sri Lanka authority-scope working days in exact coverage. Example user requests: Add or subtract Sri Lanka working days around Poya holiday. | Add or subtract Sri Lanka working days around Temporary government-office Wednesday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sri-lanka-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sri-lanka-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: authority-scope limits, government-office-only fuel-conservation entries cancelled April 8, no inference of private employers/essential services, and the explicit one-day-at-a-time algorithm. The garbled do-not-use sentence costs it a point.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Badly bloated and poorly front-loaded: it dumps the full output field list despite an output schema existing, includes a REST fallback URL and docs link, and buries the actual purpose among contradictory caveat sentences. Several sentences do not earn their place, and the 'Do not use this when...' construction is syntactically broken.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so enumerating return fields is unnecessary, but the description does fill the important gap of calendar-scope caveats (what is and is not inferred, dataset limitations). For a 2-param, richly annotated tool it is nearly complete, missing only clean routing against its country-sibling alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 restates the two inputs and supplies a complete JSON argument example, but adds no semantics the schema lacks (signed offset, start-date exclusion, -1000..1000 range are all in the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Adds or subtracts Sri Lanka authority-scope working days in exact coverage', plus the formula (move one day at a time, decrement only when status.is_working_day=true). This distinguishes an offset operation from the sibling check_lk_working_day/count_lk_working_days family, though it never names those alternatives directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line gives a use condition ('when you need a deterministic Sri Lanka working-day offset'), but the 'Do not use this when' clause is incoherent — it reads as a scope disclaimer ('this is a combined official holiday-class calendar, not a universal private-employer closure rule') rather than a genuine when-not/alternative routing statement. No sibling tool is named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_lt_working_daysAdd Lithuania Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Lithuania working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when lithuania 2026 Labour Code holiday facts with explicit mon_fri_planning or mon_sat_planning. Sixteen full-day statutory holidays; pre-holiday one-hour rules do not create additional rest. No weekend substitution or bridge is inferred. Required work_schedule selects a planning calendar, not a universal personal roster. Actual hours, pay, shifts, local/employer/sector/school/bank schedules, religious personal leave, legal deadlines and future years are not computed. What it computes: Adds or subtracts working dates in the explicitly selected Lithuania 2026 five-day or six-day planning workweek. Sixteen statutory holidays; conditional one-hour eve markers never add full-day rest. Example user requests: Add or subtract Lithuania working days around Restoration of the State is a statutory holiday. | Add or subtract Lithuania working days around August 14 shortening is not full-day rest. | Add or subtract Lithuania working days around Good Friday is not an Article 123 rest day. | Add or subtract Lithuania working days around Easter eve depends on selected workweek. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} | {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_sat_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_preholiday_rule_date, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope. Formula: planning_workday = day in selected workweek AND no statutory_holiday_rest; shortened work dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lithuania-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/lithuania-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired mon_fri_planning or mon_sat_planning. Choose the intended baseline explicitly; no universal or personal roster inferred.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds substantial context beyond those annotations: deterministic planning-calendar semantics, sixteen statutory holidays, no weekend substitution or bridge inference, and explicit non-computation of payroll, personal leave, and future years.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is far longer than necessary and includes redundant sections: a full output list despite an output schema, example user requests, and complete JSON examples already present in the schema. It is front-loaded but bloated with material that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is complete enough for correct invocation. It covers inputs, formula, holiday behavior, exclusions, REST fallback, and documentation link, and nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 meaning through the planning formula and explicit notes that work_schedule selects a planning calendar rather than a personal roster, though the JSON examples largely duplicate the schema examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Adds or subtracts working dates' for Lithuania. It distinguishes the tool from sibling check_lt and count_lt tools by framing it as an offset calculation, and it names the country and year scope directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance and several when-not-to-use exclusions, such as actual hours, pay, shifts, and personal rosters. The awkward 'Do not use this when lithuania 2026 Labour Code holiday facts...' sentence is unclear, and it does not explicitly name sibling alternatives like check_lt or count_lt.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_lu_working_daysAdd Luxembourg Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Luxembourg working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when luxembourg 2026-2028 statutory holiday dates over an explicitly selected Monday-Friday planning baseline, BEFORE individual annual or compensatory leave. A holiday on a normally non-worked day may produce compensatory leave depending on the employee's schedule, hours and applicable rules; no compensation date or next-Monday closure is assigned here. Bank-only Good Friday/Christmas Eve afternoon, customary or collectively agreed holidays, school/local/employer/shift schedules, hours, payroll, personal entitlements and legal deadlines are not computed. What it computes: Adds or subtracts Luxembourg authority-scope working days in exact coverage. Requires explicit mon_fri_planning; personal compensatory leave and bank-only closures are not computed. Example user requests: Add or subtract Luxembourg working days around Europe Day is statutory rest. | Add or subtract Luxembourg working days around No uniform Monday compensation date. | Add or subtract Luxembourg working days around Bank-only Good Friday is not general statutory rest. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, holiday_on_baseline_weekend, compensatory_leave_scope, compensatory_date_policy, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_holiday_rest; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/luxembourg-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/luxembourg-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2028.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not a personal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial scope disclosure on top: bank-only Good Friday/Christmas Eve afternoons, customary or collective holidays, personal leave, hours, payroll and legal deadlines are explicitly out of scope, plus the exact formula and dataset version. This is meaningfully more than the annotations provide, though the mutated 'Do not use this when' sentence weakens the exclusions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated with template-rendering artifacts: the three 'Example user requests' lines do not parse as sentences ('Add or subtract Luxembourg working days around Europe Day is statutory rest.'), the negation clause is truncated, and holiday commentary is repeated between the when-not and what-it-computes sections. Useful elements (REST fallback, docs URL) are buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, fully-specified, annotated tool with an output schema, this is close to complete: it establishes the deterministic-offset contract, the coverage boundaries, the formula, and a fallback URL. Since an output schema exists, the long Outputs field list is redundant rather than necessary, but nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the semantics for start_date, working_days and work_schedule (signed offset, start-date exclusion for non-zero offsets, explicit Mon-Fri baseline). The description's Inputs line and JSON example restate rather than extend that meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+territory: 'deterministic Luxembourg working-day offset', and clarifies coverage scope ('Adds or subtracts Luxembourg authority-scope working days in exact coverage'). It does not, however, explicitly position itself against the obvious siblings check_lu_working_day and count_lu_working_days, so an agent must infer the distinction from the verb alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a genuine usage directive ('Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery'), which is useful routing guidance. But the complementary 'Do not use this when...' clause is grammatically broken and never resolves into a clear exclusion condition, so the when-not guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_lv_working_daysAdd Latvia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Latvia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when latvia 2026 only. Explicit calendar_basis and work_schedule=mon_fri_planning are required. The transfer basis applies Cabinet Order 330 only when the organization is covered or has adopted it; no private employer adoption is inferred. Section 2 observances do not add rest. Shortening is conditional, not full-day rest. Six-day/shift/personal rosters, other religious calendars, bank/exchange/school opening, payroll, actual hours and legal deadlines are not computed. What it computes: Adds or subtracts Latvia authority-scope working days in exact coverage. Explicit transfer basis and mon_fri_planning required. Separate statutory rest, non-rest observances, transferred work/rest and conditional shortening. Example user requests: Add or subtract Latvia working days around Mother's Day is statutory even on Sunday. | Add or subtract Latvia working days around January 2 depends on explicit transfer basis. | Add or subtract Latvia working days around June 27 depends on explicit transfer basis. Inputs: start_date (date); working_days (integer); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"calendar_basis":"statutory_holidays_only","work_schedule":"mon_fri_planning"} | {"start_date":"2026-01-01","working_days":0,"calendar_basis":"cabinet_order_330_transfers","work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, is_non_rest_observance, is_transferred_rest_day, is_transferred_working_day, is_shortened_workday, statutory_shortening_hours, shortening_scope, payroll_scope, personal_roster_scope, working_hours_scope, additional_religious_holidays_scope. Formula: planning_workday = explicit transferred working date OR (weekday AND no statutory/selected transferred rest); shortened dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/latvia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/latvia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday baseline before any selected Order 330 transfers; not a universal or individual roster.
calendar_basisYesRequired statutory_holidays_only or cabinet_order_330_transfers. Choose the latter only for a covered institution or an employer adopting the order; never infer adoption.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing that Order 330 transfers apply only to covered/adopting employers with no inferred adoption, that Section 2 observances add no rest, that shortening is conditional, and that six-day/shift rosters, payroll, actual hours and legal deadlines are out of scope. It also discloses the deterministic formula and a direct REST fallback endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is well front-loaded, but the text is padded with repetition (explicit basis/schedule requirement stated multiple times), three near-identical 'example user requests', and a long enumeration of output fields that duplicates the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, annotations covering the safety profile, and 100% schema coverage, the description supplies everything else an agent needs: scope limits, prerequisites, edge-case policy, formula, and a REST fallback. Nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 restates the four inputs and repeats the calendar_basis adoption caveat that the schema already documents, adding examples but little genuinely new parameter meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: adding/subtracting Latvia authority-scope working days under an explicit calendar basis. It is clearly distinguishable from sibling families (check_lv_working_day, count_lv_working_days) and other country variants by naming Latvia and the add/subtract offset operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit 'use this when' trigger and a 'do not use this when' section, plus hard prerequisites (explicit calendar_basis and work_schedule=mon_fri_planning). The exclusion sentence is garbled ('Do not use this when latvia 2026 only') and no sibling tool is named as an alternative, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_mt_working_daysAdd Malta Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Malta working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when malta 2026 named statutory holidays and Sunday public-holiday status over an explicitly selected Monday-Friday planning baseline BEFORE individual annual or compensatory leave. Additional vacation entitlement for a named holiday on a weekly rest day depends on the person's employment and roster; no next-Monday or later leave date is assigned. Bank-only, school, local, employer and shift calendars, hours, payroll, personal entitlements and legal deadlines are not computed. Future years require a separately verified package. What it computes: Adds or subtracts Malta authority-scope working days in exact coverage. Required mon_fri_planning; named holidays and Sunday statutory status remain distinct. Personal leave and bank-only dates are not computed. Example user requests: Add or subtract Malta working days around Good Friday is scheduled public rest. | Add or subtract Malta working days around Ordinary Sunday is public holiday, not a named holiday. | Add or subtract Malta working days around No invented Monday compensation. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_public_holiday, is_named_statutory_holiday, is_national_holiday, is_other_scheduled_public_holiday, is_sunday_public_holiday, holiday_on_baseline_weekend, sunday_legal_basis, compensatory_leave_scope, personal_roster_scope, payroll_scope, compensatory_date_policy. Formula: planning_workday = Monday_to_Friday AND no named statutory holiday; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malta-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malta-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not personal attendance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/openWorld=false, so the bar is lower; the description still adds real behavior: deterministic output, the planning-workday formula stated explicitly, that individual leave is not deducted, and that future years need a separately verified package. It does not disclose pagination or error behavior, but those are marginal for a pure computation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entry is bloated: it enumerates ~30 output fields that an existing output schema already defines, repeats the input list and JSON example already present in the schema, and contains a broken sentence ('Do not use this when malta 2026 named statutory holidays...') that reads as a fragment. The useful routing sentence is front-loaded, but a large share of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich output schema present, the description need not explain returns (though it redundantly does). It does cover the scope boundaries an agent would otherwise get wrong — leave not deducted, bank-only/school/local calendars excluded, future years needing verification — which makes it substantively complete despite the grammar problems.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents start_date, working_days, and work_schedule with examples, so the baseline is 3. The description restates the inputs and provides a complete JSON argument example, adding convenience but no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Adds or subtracts Malta authority-scope working days in exact coverage,' which is unambiguous. It does not, however, name its obvious siblings (check_mt_working_day, count_mt_working_days) to differentiate the offset operation from the check/count operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need a deterministic Malta working-day offset' plus the instruction to call it directly rather than answering from memory gives clear usage context, and the scope exclusions (bank-only, school, local, employer, shift calendars, payroll, legal deadlines not computed) further bound it. The 'Do not use this when...' sentence is malformed and never names an alternative tool, so explicit routing to siblings is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_mx_working_daysAdd Mexico Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Mexico working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when article 69 weekly rest is at least one day after six days and the employer/worker schedule is not inferred; sector, state, employer, school and bank calendars are outside scope. What it computes: Adds or subtracts Mexico authority-scope working days in exact coverage. Example user requests: Add or subtract Mexico working days around Constitution Day observed. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/mexico-labor-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/mexico-labor-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive. The description adds the deterministic nature, the formula (move one day at a time, decrement on is_working_day), a REST fallback URL, and a dataset_version field. It discloses the substitution/holiday policy behavior. The 'return its calculation instead of answering from memory' is useful behavioral guidance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with use-case guidance, but the description is dense with labeled sections (Formula, Direct REST fallback, Docs) and repetition. It's information-rich but somewhat verbose for a 2-parameter tool. The output field list is exhaustive and arguably duplicative of the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description needn't list output fields, yet it does — redundant but not harmful. It covers edge cases (out-of-scope calendars, substitute day policy) and provides a REST fallback and docs link, making it fairly complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters (start_date, working_days) are already documented in the schema. The description lists the inputs and gives a JSON example, but adds no syntax beyond the schema. Baseline 3 is appropriate given the schema carries parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: computes deterministic Mexico working-day offsets. TheMexico jurisdiction is clear and distinguishes it from the many other jurisdiction siblings (add_de_working_days, add_br_working_days). It's clear but doesn't explicitly contrast with its closest sibling add_global_working_days.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives both when-to-use (deterministic offset, call directly instead of computing from memory) and when-not-to-use (article 69 weekly rest condition; out-of-scope calendars). This is a strong when/when-not structure that goes beyond most siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_my_working_daysAdd Malaysia Division Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic division-specific offset in 2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the division is unknown or replacement-day/employer rules matter. What it computes: Adds or subtracts dates using the selected Malaysian division's 2027 official public-holiday schedule and weekly baseline. Example user requests: Add five Kuala Lumpur working days after 2027-02-05. Inputs: start_date (date); division (enum); working_days (integer). Complete JSON argument examples: {"start_date":"2027-02-05","division":"KUL","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement remaining only when selected status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malaysia-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malaysia-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionYesRequired federal-territory/state code: KUL, LBN, PJY, JHR, KDH, KTN, MLK, NSN, PHG, PRK, PLS, PNG, SBH, SWK, SGR or TRG.
start_dateYesGregorian start date in 2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description layers on key behavioral facts: 2027-only calendar scope, deterministic per-division holiday baseline, the exact counting rule, a documented dataset_version/sources return fields, and a hard REST fallback URL with a warning not to guess other paths. That is substantial context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use/when-not-to-use decision, then computation, example, inputs, outputs, formula, fallback, and docs in labeled blocks. It is long, and the 'Inputs:' line largely restates the schema, so it is efficient but not waste-free.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be enumerated, yet the description still names the salient return fields; combined with the formula, fallback endpoint, docs link, and the explicit replacement-day/employer-rule caveat, an agent has everything needed to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3; the description adds a complete JSON argument example and frames the semantics of the offset ('move one day at a time; decrement remaining only when is_working_day=true'), which goes slightly beyond the schema's bare 'signed offset' wording. It still doesn't explain, e.g., how negative working_days interact with division holidays, so it is not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds or subtracts dates using the selected Malaysian division's 2027 official public-holiday schedule') and pins the scope to Malaysia/2027, which is exactly what distinguishes it from the ~60 sibling add_*_working_days tools. The example user request ('Add five Kuala Lumpur working days after 2027-02-05') makes the intent unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit positive trigger ('use this when you need a deterministic division-specific offset in 2027') and explicit exclusion ('Do not use this when the division is unknown or replacement-day/employer rules matter'). It also instructs the agent to call the tool rather than answer from memory, which is direct invocation guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_new_zealand_working_daysAdd New Zealand Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic New Zealand national statutory offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a regional anniversary or employer-specific calendar. What it computes: Adds or subtracts New Zealand national working days in exact 2026-2027 coverage. Example user requests: Add one New Zealand working day after 2027-02-05. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-02-05","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, holiday_names, calendar_scope, regional_anniversary_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on New Zealand status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/new-zealand-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/new-zealand-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, and closed-world. The description goes further with the exact coverage window, the traversal formula, and a direct REST fallback endpoint, which is genuinely useful context. It does not mention the signed-range limits or error behavior, so it falls short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use-case guidance, which is good, but it then duplicates structured data at length: the Inputs list, the full JSON example, and the Outputs field list are all already present in the schema and output schema. Several lines could be cut without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only calculator with an output schema, plus annotations, the description supplies everything an agent needs: scope, exclusions, formula, coverage window, and a fallback path. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions ('Gregorian start date in 2026-2027', 'Signed offset; start date excluded for non-zero offsets') already carry the semantics. The description's input line and JSON example merely repeat the schema, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, resource, and scope ('deterministic New Zealand national statutory offset', 2026-2027 coverage), which cleanly separates it from the check_/count_ siblings and from regional anniversary calendars. An agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('when you need a deterministic New Zealand national statutory offset'), when not to use it ('regional anniversary or employer-specific calendar'), and instructs the agent to return its calculation rather than answering from memory or stopping at discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ng_working_daysAdd Nigeria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Nigeria working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is the nationwide federal public-holiday layer, not a universal private-employer, state, local-government, school, banking, market, diplomatic-mission or sector calendar. Ministry of Interior announcements take precedence over conflicting secondary or diplomatic snapshots for federal dates. Eid dates are lunar and can be amended by later official notice. The Public Holidays Act permits special or substituted dates and explicitly does not create an automatic extra day for a holiday falling on Saturday or Sunday; no replacement day is invented here. What it computes: Adds or subtracts Nigeria authority-scope working days in exact coverage. Example user requests: Add or subtract Nigeria working days around Federal Democracy Day. | Add or subtract Nigeria working days around Ordinary federal working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/nigeria-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/nigeria-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), yet the description adds genuinely useful behavior: Ministry of Interior precedence over secondary snapshots, lunar Eid dates subject to amendment, and the Public Holidays Act rule that no substitute day is invented for weekend holidays. The day-by-day formula disclosure is more than any annotation conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is front-loaded, which is good, but the 'Do not use this when this is the nationwide federal...' sentence is grammatically garbled and hard to parse. The enumerated Outputs list is redundant given a full output schema, and the REST fallback plus docs link pad length without aiding tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a scoped calendar calculator with an output schema carrying return fields, the description covers what an agent needs: scope limits, holiday-precedence caveats, an argument example, and the formula. The only shortfall is the muddled when-not sentence, which slightly obscures the boundary against non-federal Nigeria calendars.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already explains the signed offset and that the start date is excluded for non-zero offsets, so the baseline is 3. The description's 'adds or subtracts' and 'decrement only on status.is_working_day=true' reinforce the direction of the offset but add little syntax or edge-case detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (add/subtract Nigeria working days) and pins down the scope as the 'nationwide federal public-holiday layer' rather than a private/state/sector calendar. Against a wall of near-identical add_XX_working_days siblings, that scope qualifier is what lets an agent confirm it has the right country layer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when ('you need a deterministic Nigeria working-day offset') and a when-not (not a universal private-employer/state/local/diplomatic calendar), plus a directive to call the tool directly rather than answering from memory. It never names the obvious sibling alternatives (check_ng_working_day, count_ng_working_days) for when the agent only wants a yes/no or a range count, so routing is not fully closed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_nl_working_daysAdd Netherlands Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Netherlands working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when a public holiday is not automatically a paid day off for every Dutch employee. CAO, employment contract, sector, employer, school, bank and municipal schedules are not inferred; Liberation Day arrangements may be five-year/CAO dependent. What it computes: Adds or subtracts Netherlands authority-scope working days in exact coverage. Example user requests: Add or subtract Netherlands working days around King's Day. | Add or subtract Netherlands working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/netherlands-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/netherlands-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive safety, and the description adds real behavioral content beyond them: the exact algorithm ('move one day at a time; decrement only on status.is_working_day=true'), the covered authority scope, the explicit non-coverage of employer/CAO calendars, the REST fallback endpoint, and a docs pointer. That is unusually rich disclosure for a pure calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded and chunked under clear labels (when-to-use, when-not, what it computes, inputs, outputs, formula, fallback, docs), so it scans well despite being long. The 'Example user requests' lines and the enumerated output fields are padding that could be dropped without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not enumerate return fields, though it partly does anyway; the critical gaps an agent would care about – coverage scope, exclusions, and the fallback path – are all covered. The only residual gap is the implied boundary against sibling check/count tools, which the description never states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (start_date, working_days) already document format and sign semantics in the schema. The description restates the inputs and repeats a JSON example that is already in the schema's 'examples', adding little meaning beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource and scope: 'Adds or subtracts Netherlands authority-scope working days in exact coverage,' plus a deterministic-offset framing that separates it from the many sibling calendars. It never explicitly contrasts itself with the closest siblings (check_nl_working_day, count_nl_working_days), so an agent must infer the boundary from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicit when-to-use ('Use this when you need a deterministic Netherlands working-day offset') and an explicit when-not ('Do not use this when a public holiday is not automatically a paid day off... CAO, employment contract, sector... are not inferred'), including the Liberation Day edge case. It even tells the agent to call the tool rather than answer from memory or stop at discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_no_working_daysAdd Norway Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Norway working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory full-day list only. Christmas Eve, Easter Eve, Whit Eve, New Year's Eve, collective-agreement, employer, sector, school, bank and local closures are not inferred. Norwegian annual-leave law treats Saturdays separately from Sundays and public holidays; this package uses the declared Monday-Friday business baseline. What it computes: Adds or subtracts Norway authority-scope working days in exact coverage. Example user requests: Add or subtract Norway working days around Constitution Day. | Add or subtract Norway working days around Christmas Eve is not a full-day statutory holiday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/norway-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/norway-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, and the description adds substantial context beyond that: exclusions for Christmas Eve, Easter Eve, etc., Saturday/Sunday handling, the calculation formula, and the REST fallback. It also warns not to guess other API paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into labeled sections and front-loads the main use case, but it is verbose for a two-parameter calculation tool. The list of output fields is redundant given the existing output schema, and some sentences could be removed without losing invocation guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the annotations, full input-schema coverage, and output schema, the description is complete: it covers when to use the tool, what it excludes, how it computes the result, an example call, output expectations, and a REST fallback. Nothing essential for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description mostly repeats the inputs ('start_date (date); working_days (integer)') and provides a JSON example that mirrors the schema. The formula adds algorithm context, but parameter-specific semantics are already fully covered by the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific operation ('Adds or subtracts Norway authority-scope working days') and names the jurisdiction, making it easy to distinguish from the many country-specific siblings. It also clarifies the deterministic offset use case rather than merely restating the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear when-to-use condition ('when you need a deterministic Norway working-day offset') and an explicit exclusion for nationwide statutory full-day lists and related closures. It does not, however, name the sibling alternatives such as check_no_working_day or count_no_working_days, so routing is not fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_pe_working_daysAdd Peru Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Peru working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when choose calendar_scope and workweek explicitly. National holidays and public-sector compensable days have different applicability. This is a declared five-day (Saturday-Sunday rest) or six-day (Sunday rest) planning calendar, not proof of an individual's roster. Essential services, private-employer adoption, compensating shifts, regional holidays, banking, school, tax and procedural deadline calendars require separate evidence. The two compensable public-sector days remain working days for tax purposes. Later decrees require a new snapshot; dates beyond 2026 are unsupported. What it computes: Adds or subtracts Peru authority-scope working days in exact coverage. Required calendar_scope and workweek distinguish national holidays from compensable public-sector days and five/six-day rosters. Example user requests: Peru: National layer skips independence holidays. | Peru: Public-sector bridge changes deadline. Inputs: start_date (date); working_days (integer); calendar_scope (enum); workweek (integer). Complete JSON argument examples: {"start_date":"2026-07-24","working_days":1,"calendar_scope":"national_statutory","workweek":5} | {"start_date":"2026-07-24","working_days":1,"calendar_scope":"public_sector","workweek":5} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_selection, workweek, compensable_day_details. Formula: working day = outside selected weekly rest and selected holiday layer Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/peru-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/peru-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
workweekYesRequired declared baseline: 5 = Saturday-Sunday rest, 6 = Sunday rest. Confirm the applicable roster.
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
calendar_scopeYesRequired: national_statutory uses 16 national holidays; public_sector also applies the two published compensable days. Neither is a tax or individual employee roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description adds substantial context beyond them: what the calendar does not cover (essential services, private-employer adoption, banking, school, tax deadlines), that the two compensable days stay working days for tax, that later decrees need a new snapshot, and that dates beyond 2026 are unsupported. It also discloses a REST fallback endpoint and docs link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is front-loaded, which is good, but the body is long and dense for a four-parameter arithmetic tool, with repeated JSON examples that duplicate the input schema verbatim and enumerated outputs that overlap the output schema. The garbled 'Do not use this when...' sentence is wasted space and actively confusing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so listing return fields is redundant, but the description does supply the caveats an agent needs (calendar scope limitations, unsupported post-2026 dates, the REST fallback, docs URL). It is complete enough to call correctly, marred only by the ambiguous negative-usage sentence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters (workweek 5/6, calendar_scope enum, signed offset). The description adds a genuine semantic layer with the formula 'working day = outside selected weekly rest and selected holiday layer' and the explicit split between authority-scope holiday layers and roster baselines, going slightly beyond the schema's own text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Adds or subtracts Peru authority-scope working days in exact coverage,' and the header plus repeated 'Peru' framing distinguishes it from the country-neutral siblings. An agent can identify this as the Peru working-day offset tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when you need a deterministic Peru working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery,' which is clear invocation guidance. However, it never names the obvious alternative siblings (count_pe_working_days, check_pe_working_day), and the 'Do not use this when choose calendar_scope and workweek explicitly' clause is garbled and confusing since both are required inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ph_working_daysAdd Philippines Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Philippines working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when local-government special holidays, employer schedules and 2027 Eid dates pending a separate proclamation are not inferred. What it computes: Adds or subtracts Philippines authority-scope working days in exact coverage. Example user requests: Add or subtract Philippines working days around EDSA remains a special working day. | Add or subtract Philippines working days around Eid'l Adha is a declared holiday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/philippines-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/philippines-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so safety is covered. The description adds genuinely useful context beyond that: the day-by-day decrement formula, a deterministic-calculation mandate, holiday-policy caveats, a REST fallback endpoint with an explicit warning not to guess other paths, and a docs link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Information is roughly front-loaded (use case first, then inputs, outputs, fallback), but the prose is padded with awkward fragments such as 'Do not use this when... are not inferred' and a long list of output fields that the output schema already supplies. Several lines do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only calculator with an output schema, the definition is essentially complete: inputs, example call, formula, caveats about non-inferred local holidays, REST fallback and documentation are all present. The only shortfall is that the enumerated output fields duplicate the output schema rather than summarizing behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters documented (range 2026-2027 for start_date; signed offset semantics for working_days). The description lists the same two inputs and repeats a JSON example already present in the schema, so it adds little semantic value beyond the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource with a geographic scope: 'Adds or subtracts Philippines authority-scope working days in exact coverage.' That distinguishes it from the dozens of country siblings, though it never explicitly names its closest neighbors (check_ph_working_day, count_ph_working_days) so the agent must infer the offset-versus-check/count distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives real usage direction ('use this when you need a deterministic Philippines working-day offset... call this tool directly and return its calculation instead of answering from memory') rather than leaving the agent to guess. The negative clause is garbled and states a coverage limitation rather than naming an alternative tool, so the routing guidance is clear but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_pk_working_daysAdd Pakistan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Pakistan working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide federal public-holiday layer only. It is not a universal provincial, territory, private-employer, bank, exchange, school, court, diplomatic-mission or sector calendar. Lunar festival dates are pinned to the later federal notifications available for 2026; conflicting exchange or diplomatic calendars are retained as scoped cross-checks and not generalized. What it computes: Adds or subtracts Pakistan authority-scope working days in exact coverage. Example user requests: Add or subtract Pakistan working days around Pakistan Day. | Add or subtract Pakistan working days around Ordinary federal working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/pakistan-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/pakistan-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description still adds real value beyond them: the exact coverage layer (federal only, 2026 pinning for lunar festivals), the deterministic walk algorithm, the REST fallback endpoint, and a docs link. No permission, auth, or rate-limit behavior is described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the use/don't-use guidance, which is good, but then pads with a redundant "Outputs:" field list even though an output schema exists, a duplicated JSON example, an internal formula line, and garbled example requests ("...around Ordinary federal working day"). Several blocks do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, fully described, annotated, output-schema-backed tool, this is close to complete: scope, coverage year, algorithm intent, fallback endpoint and docs are all present. Remaining gaps are stylistic bloat and the absence of a named sibling for routing, not missing operational information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both properties carry their own descriptions (date range, signed offset, start-date exclusion), so the baseline is 3. The description restates the inputs and supplies a full JSON example, but that example duplicates the schema's own "examples" block and adds no semantic detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: "Adds or subtracts Pakistan authority-scope working days in exact coverage," and the scope clause ("nationwide federal public-holiday layer only... not a universal provincial... calendar") pins down which calendar it applies. It never names the adjacent siblings (check_pk_working_day, count_pk_working_days), so the add/count/check distinction is left to the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ("Use this when you need a deterministic Pakistan working-day offset") plus a scope-based exclusion listing provincial, private-employer, bank, exchange, school, court and diplomatic calendars. The exclusion is expressed as a coverage limitation rather than as a redirect to a specific alternative tool, and the "Do not use this when this package covers..." phrasing is grammatically muddled, but the intent is recoverable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_pl_working_daysAdd Poland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Poland working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Saturday substitute dates, individual work schedules, employer, sector, school, bank and local schedules are not inferred. What it computes: Adds or subtracts Poland authority-scope working days in exact coverage. Example user requests: Add or subtract Poland working days around Christmas Eve. | Add or subtract Poland working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/poland-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/poland-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description goes further by disclosing the deterministic nature, the exact-coverage scope, the day-by-day formula, and the REST fallback URL — genuinely additive behavioral context. It falls short of 5 only because it omits edge-case behavior around the working_days=0 boundary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The content is front-loaded with the when-to-use and when-not-to-use guidance first, then inputs, example, outputs, formula and fallback. It is longer than necessary — the long Outputs enumeration duplicates the output schema — but every other sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it still is complete enough to call correctly: inputs, a concrete JSON example, the computation formula, and a REST fallback. The only mild redundancy is the output field list, which does not reduce completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema documents both start_date and working_days with formats, bounds and examples. The description lists the same two inputs and repeats a JSON example, adding no meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — adds or subtracts Poland authority-scope working days — and explicitly carves out its scope (deterministic Poland working-day offset). It clearly distinguishes itself from the dozens of country siblings like add_de_working_days and add_fr_working_days by naming the jurisdiction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It contains explicit 'use this when' guidance (deterministic Poland offset, return the calculation rather than answering from memory) and a 'do not use this when' section excluding nationwide statutory-holiday-only, employer, sector, school, bank and local schedules. This tells the agent both when and when-not to select the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_pt_working_daysAdd Portugal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Portugal working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when mandatory nationwide list only. Municipal, autonomous-region, collective-agreement, employer and locally substituted holiday schedules are not inferred. What it computes: Adds or subtracts Portugal authority-scope working days in exact coverage. Example user requests: Add or subtract Portugal working days around Portugal Day. | Add or subtract Portugal working days around Ordinary weekday. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/portugal-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/portugal-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering readOnly/idempotent/non-destructive/non-openWorld, the description goes further: it discloses the computation approach ("move one day at a time; decrement only on status.is_working_day=true"), the explicit coverage boundary (nationwide mandatory list only, no municipal/employer schedules), and a direct REST fallback endpoint. That is meaningful behavior beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled-section format is front-loaded and easy to scan, but several blocks duplicate structured data the agent already has: "Inputs" restates the schema, "Complete JSON argument examples" duplicates the schema example, and "Outputs" duplicates the output schema. The "Example user requests" lines ("around Ordinary weekday") are filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-parameter tool with full schema coverage, rich annotations, and an output schema, the description covers usage, scope limits, computation, and fallback more than adequately. The only excess is enumerating output fields, which the output schema already owns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters (date range, signed offset semantics, bounds). The description restates the inputs and repeats an example identical to the schema's, adding no syntax or constraint detail the schema lacks. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (adds/subtracts) and resource (Portugal authority-scope working days), and adds differentiating scope language ("authority-scope", "exact coverage") that separates it from the global/regional siblings. It does not explicitly distinguish itself from its closest siblings add_global_working_days or count_pt_working_days, so the differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when you need a deterministic Portugal working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory" gives a clear when-to-use and even an anti-pattern (don't answer from memory). The negative clause about municipal/autonomous-region/collective-agreement holidays defines when the tool's coverage does NOT apply, though the sentence is grammatically garbled and no alternative tool is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ro_working_daysAdd Romania Working DaysB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Romania working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when romania 2026 statutory holiday layer only, with required calendar_basis and work_schedule=mon_fri_planning. The basis selects dates, not a person's identity or religion. No union of Christian calendars, non-Christian additional holidays, public-sector bridge/recovery days, individual rosters, shift exceptions, bank/exchange/school opening, payroll or legal deadlines are computed. Other bases and future years are unsupported. What it computes: Adds or subtracts Romania authority-scope working days in exact coverage. Explicit calendar_basis and mon_fri_planning required; no union of calendars or personal roster inference. Example user requests: Add or subtract Romania working days around January 24 remains a statutory holiday even on Saturday. | Add or subtract Romania working days around Selected-calendar Good Friday. Inputs: start_date (date); working_days (integer); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"calendar_basis":"romanian_orthodox","work_schedule":"mon_fri_planning"} | {"start_date":"2026-01-01","working_days":0,"calendar_basis":"roman_catholic","work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, payroll_scope, personal_roster_scope, additional_religious_holidays_scope. Formula: planning_workday = weekday AND no statutory holiday in the explicitly selected calendar_basis Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/romania-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/romania-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual or universal legal roster.
calendar_basisYesRequired date basis: romanian_orthodox or roman_catholic. Do not infer a person's religion or union calendars.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine value on top: it enumerates what is NOT computed (union of Christian calendars, non-Christian holidays, public-sector bridge/recovery days, individual rosters, payroll/legal deadlines) and states that other bases and future years are unsupported. This is strong scope disclosure beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated and front-loading is undermined by a garbled 'Do not use this when' sentence, malformed 'example user requests' fragments, and a 20-item output enumeration that is redundant given the output schema exists. Multiple sentences do not earn their place or parse cleanly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Because an output schema exists, the long Outputs list is unnecessary, and the scope/restriction coverage is thorough. But the nonsensical 'do not use' clause leaves the agent without a clear alternative, and the boundary conditions are stated in fragments rather than a coherent set of prerequisites, leaving real gaps in the guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters, and the description largely restates the input list. It does add some semantic framing for calendar_basis ('the basis selects dates, not a person's identity or religion') and supplies two complete JSON argument examples, which is a modest gain over the schema baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The 'What it computes' sentence states a specific verb+resource ('Adds or subtracts Romania authority-scope working days') and the tool name itself carries the country scope that separates it from the ~65 country siblings. However, the muddled 'Do not use this when' sentence and fragments ('around January 24 remains a statutory holiday') dilute the clarity, so it falls short of the crisp sibling-differentiation a 5 requires.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening 'Use this when you need a deterministic Romania working-day offset' gives minimal positive context, and the instruction to call directly rather than answer from memory is useful. But the 'Do not use this when...' clause is grammatically broken and names no alternative tool, even though obvious candidates (check_ro_working_day, count_ro_working_days) exist. There is no real when-not guidance or routing to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_ru_working_daysAdd Russia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Russia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the federal statutory/public-holiday layer and the Government-published 2026 transfer days over a Saturday-Sunday baseline. Regional holidays, republic/local holidays, employer, bank, school, shift, sector and collective-agreement schedules are not inferred. Future annual transfer resolutions require a refreshed package. What it computes: Adds or subtracts Russia authority-scope working days in exact coverage. Example user requests: Add or subtract Russia working days around Russia New Year's holiday. | Add or subtract Russia working days around Published transfer day. | Add or subtract Russia working days around Ordinary Russia working day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/russia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/russia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: exactly what calendar layer is covered, what is deliberately not inferred, the dataset-refresh caveat for future annual transfer resolutions, the day-by-day formula, and a REST fallback endpoint with an anti-guessing warning. This is rich behavioral disclosure for a deterministic calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the usage trigger well and lays out inputs/outputs/formula/REST/docs in a scannable order. However the three 'Example user requests' lines are near-identical filler ('around Russia New Year's holiday / Published transfer day / Ordinary Russia working day'), and the 'Do not use this when' opener is confusingly worded, so the tightness is only adequate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it still enumerates them as a convenience. Combined with coverage scope, exclusions, formula, dataset-version caveat, and the REST fallback plus docs link, an agent has everything needed to invoke and trust the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both start_date and working_days are documented in the schema, including the 'start date excluded for non-zero offsets' nuance. The description only restates the two inputs and supplies a JSON example, adding little meaning beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Adds or subtracts Russia authority-scope working days in exact coverage' — and delimits the calendar scope (federal statutory/public-holiday layer plus Government-published 2026 transfer days over a Saturday-Sunday baseline). This clearly separates it from generic date tools, though it never names its closest siblings (check_ru_working_day, count_ru_working_days), so an agent must infer the add-vs-check-vs-count distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit trigger ('Use this when you need a deterministic Russia working-day offset') and instructs the agent to call directly rather than answer from memory. The 'Do not use this when...' sentence is meant to declare scope exclusions (regional, employer, bank, school schedules are not inferred), but its phrasing is garbled and it does not route to alternative tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_sa_working_daysAdd Saudi Arabia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Saudi Arabia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when financial-institution scope only. MHRSD business-sector leave, RTGS-specific intervals, government offices, private-employer rosters, Hajj-season branch exceptions and Umm al-Qura forecasts are not inferred. What it computes: Adds or subtracts Saudi Arabia authority-scope working days in exact coverage. Example user requests: Add or subtract Saudi Arabia working days around SAMA Eid Al-Fitr interval. | Add or subtract Saudi Arabia working days around Friday/Saturday weekly baseline. | Add or subtract Saudi Arabia working days around National Day Saturday substitution. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/saudi-financial-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/saudi-financial-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2029.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuine context beyond them: the counting formula ('move one day at a time; decrement only on status.is_working_day=true'), the exact dataset scope, a REST fallback endpoint, and a docs link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case and the exclusions, and organized into clear labeled sections. It is verbose, with the outputs list and REST fallback bordering on redundant given the existing output schema, but each block carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description needn't enumerate return fields, yet it does (harmless redundancy). Coverage of usage, scope, and fallback routing is complete enough for an agent to invoke correctly without consulting docs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented there (signed offset, start date excluded for non-zero offsets), so the baseline is 3. The description's 'Inputs' line and JSON example only restate the schema without adding new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('adds or subtracts Saudi Arabia authority-scope working days') and scopes the coverage precisely. It doesn't explicitly name the sibling tools (count_sa_working_days, check_sa_working_day), so an agent must infer the add-vs-count-vs-check distinction from the verb alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('deterministic Saudi Arabia working-day offset... call this tool directly instead of answering from memory or stopping at discovery') and when not to ('Do not use this when financial-institution scope only'), enumerating excluded scopes. Nothing is left to inference about applicability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_se_working_daysAdd Sweden Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Sweden working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Midsummer Eve, Christmas Eve, New Year's Eve, employer, collective-agreement, sector, school, bank and local closures are not inferred; Sunday is already excluded by the weekday baseline. What it computes: Adds or subtracts Sweden authority-scope working days in exact coverage. Example user requests: Add or subtract Sweden working days around National Day. | Add or subtract Sweden working days around Midsummer Eve is not statutory. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sweden-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sweden-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safe-read profile (readOnlyHint, idempotentHint, non-destructive, closed-world), so the bar is lower. The description still adds real behavioral context: exactly which holidays are/aren't covered, that Sunday is excluded by the weekday baseline, the step-wise algorithm, and a REST fallback endpoint. It stops short of stating bounds enforcement or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded and sectioned (usage, what-it-computes, inputs, outputs, formula, fallback, docs), with each block earning its place except the redundant repeated 'Inputs'/'Outputs' restatement and the awkward example-request fragment 'around Midsummer Eve is not statutory.' Still efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the return contract needs no exposition, and annotations cover safety, so the description's job is mostly scope and routing — both addressed via the coverage statement and exclusion list. The only substantive gap is the malformed when-not sentence, which weakens an otherwise complete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (signed offset semantics, 2026-2027 date range, +/-1000 bounds all live in the schema), so the baseline is 3. The description only restates the inputs as 'start_date (date); working_days (integer)' and adds no meaning beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Adds or subtracts Sweden authority-scope working days,' which clearly differentiates it from the many sibling add_*_working_days tools by territory. It never explicitly contrasts with the closely-named siblings check_se_working_day or count_se_working_days, so the boundary against those is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a positive trigger ('when you need a deterministic Sweden working-day offset... return its calculation instead of answering from memory') and a negative scope ('Midsummer Eve, Christmas Eve... employer, collective-agreement, sector, school... closures are not inferred'). The 'Do not use this when nationwide statutory list only' fragment is syntactically broken and hard to act on, but the surrounding exclusion list carries the guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_singapore_working_daysAdd Singapore Official Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Singapore date offset in 2026-2027 and accept the stated employer-rest-day limitation. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer-specific roster, bank/exchange calendar or a date outside 2026-2027. What it computes: Adds or subtracts dates using Singapore's pinned national public-holiday dates and the CLDR Saturday/Sunday baseline. Example user requests: Add five Singapore working days after 2027-02-05. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-02-05","working_days":5} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_observed, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: move one day at a time; decrement remaining only when Singapore status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/singapore-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/singapore-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, but the description adds substantial behavior beyond them: the deterministic pinned-holiday model, the rest-day limitation, the exact step algorithm (decrement only when status.is_working_day=true), and the richness of fields returned (source_quality, dataset_version, rest_day_policy). This is above the bar set by the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the when-to-use and when-not-to-use guidance well and is clearly sectioned ('What it computes', 'Formula', 'Inputs'). However, the long enumerated outputs list duplicates the existing output schema and does not earn its place, adding length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't explain return values, and it nonetheless covers scope limits, the algorithm, example arguments, and a REST fallback. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already fully documented in the schema, and the description's 'Inputs:' line and JSON example are essentially restatements. It adds no syntax or edge-case meaning beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (add/subtract), resource (Singapore working days), and mechanism (pinned national public-holiday dates + CLDR Saturday/Sunday baseline). It explicitly scopes to 2026-2027 and distinguishes itself from employer-specific, bank/exchange, and out-of-range calendars, so an agent can separate it from the many add_*_working_days siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit 'Use this when...' clause with the determinism and limitation precondition, and a 'Do not use this when...' clause naming the excluded cases (employer roster, bank/exchange calendar, out-of-range dates). It also instructs calling directly rather than answering from memory, 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.

add_si_working_daysAdd Slovenia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Slovenia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when slovenia 2026 statutory work-free dates over an explicitly selected Monday-Friday planning baseline. Seven named state holidays are not work-free; no extra Monday or bridge day is invented. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, religious leave, payroll, legal deadlines and future years are not computed. What it computes: Adds or subtracts Slovenia authority-scope working days in exact coverage. Requires explicit mon_fri_planning; seven named state holidays do not add rest. Example user requests: Add or subtract Slovenia working days around Easter Monday is statutory rest. | Add or subtract Slovenia working days around Whit Monday is not Whit Sunday. | Add or subtract Slovenia working days around Science Day is a state holiday without rest. Inputs: start_date (date); working_days (integer); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0,"work_schedule":"mon_fri_planning"} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_statutory_non_working_day, is_non_rest_state_holiday, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_work_free_event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovenia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovenia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description earns credit by adding policy detail beyond them: seven named state holidays are not work-free, no extra Monday or bridge day is invented, and the planning formula is stated. It also discloses the direct REST fallback path and warns not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The use-when/when-not framing is correctly front-loaded, but the body is padded: the 'Adds or subtracts ... sledenija coverage. Requires explicit mon_fri_planning' claim is repeated twice, the full output-field list is unnecessary alongside an output schema, and one sentence is garbled. It is serviceable but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-parameter deterministic calculator with an output schema and rich annotations, the description covers the determinism guarantee, holiday policy, scope exclusions, formula, and REST fallback, so an agent has everything needed to call it. The redundant output enumeration is the only surplus.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents start_date, working_days and work_schedule, and the description largely restates them (including the sample JSON and the 'excluded for non-zero offsets' semantics already in the schema). Baseline 3 is appropriate when the structured schema carries the parameter burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource+scope: it 'adds or subtracts Slovenia authority-scope working days in exact coverage.' An agent can distinguish it from check_si_working_day (single-day test) and count_si_working_days (counting within a range) without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need a deterministic Slovenia working-day offset' plus the explicit exclusion list (individual shifts, replacement weekly rest, employer/sector/school/bank schedules, payroll, legal deadlines, future years) gives clear context for use and non-use. It falls short of 5 because the 'Do not use this when slovenia 2026 statutory work-free dates over an explicitly selected Monday-Friday planning baseline' clause is grammatically incoherent, and no sibling alternative is named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_sk_working_daysAdd Slovakia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Slovakia working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when pinned Slovakia 2026 statutory rest-day layer over an explicitly declared Monday-Friday planning baseline, not an individual roster. The holidays on May 8 and September 15 are not statutory rest days in 2026; September 1, October 28 and November 17 are state holidays without rest under section 2(3). Do not infer substitute Mondays, payroll premiums, leave rights, retail closures, shift, bank, school, employer or future-year schedules. Later legal changes require a new snapshot. What it computes: Adds or subtracts Slovakia authority-scope working days in exact coverage. Distinguishes 11 rest-day holidays from five named holidays without statutory rest in 2026. Example user requests: Add or subtract Slovakia working days around May 8 is a named holiday but a working date. | Add or subtract Slovakia working days around Good Friday. | Add or subtract Slovakia working days around November 17 is not statutory rest. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, holiday_rest_status, payroll_scope. Formula: working = weekday outside the declared weekly rest and outside statutory_rest_holiday dates Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovakia-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovakia-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only/idempotent/non-destructive, and the description adds real behavioral scope: the exact computation formula, that it distinguishes statutory rest days from named non-rest holidays, that it is snapshot-bound ('later legal changes require a new snapshot'), and explicit out-of-scope items (payroll premiums, leave rights, retail closures, shift/bank/school schedules). The malformed exclusion sentence slightly muddies this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The middle section is a run-on with a broken sentence, duplicated holiday facts, and a full output-field enumeration that duplicates the output schema. The genuinely valuable pieces (formula, REST fallback, docs link) are buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations and an output schema present, the description only needs to cover scope and behavior, which it largely does: computation definition, exclusions, snapshot limitation, and a direct REST fallback. The garbled when-not clause is the one substantive gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented there (including the signed-offset and excluded-start-date semantics), so the schema does the heavy lifting. The description only restates 'start_date (date); working_days (integer)' plus an example, adding no semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Adds or subtracts Slovakia authority-scope working days in exact coverage,' which is clearer than the bare name. However, it never explicitly contrasts itself with the adjacent siblings add_* / count_sk_working_days / check_sk_working_day, leaving the country-prefix convention to carry differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening gives a usable positive trigger ('when you need a deterministic Slovakia working-day offset') and tells the agent to return the tool's result rather than derive it from memory. The 'Do not use this when...' clause is malformed — it never states an actual condition, instead dumping holiday facts — so the when-not guidance is effectively unusable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_south_africa_working_daysAdd South Africa Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic South Africa national public-holiday offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer-specific exchanged holiday or non-national schedule. What it computes: Adds or subtracts South Africa national working days in exact 2026-2027 coverage. Example user requests: Add one South Africa working day after 2026-11-03. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-11-03","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, holiday_names, calendar_scope, employer_schedule_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on South Africa status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-africa-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-africa-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, so the safety profile is covered; the description adds real value on top with a deterministic guarantee, the exact step algorithm ('decrement only on is_working_day=true'), the 2026-2027 coverage boundary, and a REST fallback path. It stops short of stating rate limits, error behavior, or what happens for out-of-window dates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded and chunked into labeled sections (Use when / Do not use / What it computes / Inputs / Outputs / Formula / REST / Docs), so an agent can scan for routing cues fast. Slightly over-long because enumerating all fourteen output fields duplicates the existing output schema, which is the only real padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter deterministic calculator with an output schema present, the description covers triggers, exclusions, coverage window, algorithm, argument example, and a fallback endpoint. Return values are already in the output schema, so the long Outputs list is unnecessary rather than missing. Nothing essential to a correct call is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date (Gregorian, 2026-2027) and working_days (signed, start date excluded). The description's Inputs line and JSON example merely restate them; the formula adds slight interpretation of how the offset is applied but no new syntax or boundary meaning. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (adds/subtracts South Africa national working days) and pins the scope to exact 2026-2027 national public-holiday coverage. The 'What it computes' line plus the explicit exclusion of employer-specific/non-national schedules cleanly separates it from the ~60 sibling country tools and from add_sa_working_days/check_south_africa_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with a direct 'Use this when...' trigger and follows with an explicit 'Do not use this when you need an employer-specific exchanged holiday or non-national schedule' exclusion. It further instructs the agent to call the tool rather than answer from memory, which is exactly the routing behavior the sibling set needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_th_working_daysAdd Thailand Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Thailand working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a Bank of Thailand financial-institution calendar, not a universal Thai employee, government, employer, exchange or payment-settlement calendar. Bangkok-only, Islamic-bank and southern-branch conditions remain explicit and are not generalized. What it computes: Adds or subtracts Thailand authority-scope working days in exact coverage. Example user requests: Add or subtract Thailand working days around 2027 substitution. | Add or subtract Thailand working days around Bangkok-only event remains conditional. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/thailand-financial-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/thailand-financial-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavioral context: the step-by-step formula, the deterministic guarantee, and a direct REST fallback endpoint with a warning not to guess another path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the description carries redundant filler: a repeated 'Example user requests' line with an awkward fragment ('Bangkok-only event remains conditional') and an 'Outputs' enumeration that duplicates the existing output schema. These sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers scope, computation, inputs, a full example, formula, REST fallback, and docs link, and an output schema already exists so return values need not be explained. The only gap is that listing output fields is redundant rather than informative, but nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents both parameters, including the signed-offset semantics. The description restates the inputs and provides a complete JSON example, which is helpful but adds no meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('deterministic Thailand working-day offset') and scopes it to an authority calendar (Bank of Thailand financial-institution), which distinguishes it from the many sibling country tools. It does not explicitly name which sibling to prefer, but the scope statement is concrete enough for selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery') and an explicit when-not ('Do not use this when this is a Bank of Thailand financial-institution calendar, not a universal Thai employee, government, employer, exchange or payment-settlement calendar'). The exclusions route the agent away from incorrect scope interpretations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_turkey_working_daysAdd Türkiye Statutory Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Türkiye statutory working-day offset in 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer or sector calendar, or the date falls outside the pinned coverage. What it computes: Adds or subtracts dates using Türkiye's pinned statutory public-holiday package; published half-days are skipped conservatively. Example user requests: Add one Türkiye statutory working day after 2027-03-05. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-03-05","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, half_day_start_time, non_working_fraction, weekend_days, calendar_scope, half_day_policy, rest_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only when status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/turkey-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/turkey-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavioral context beyond them: deterministic computation, a pinned holiday package with a bounded 2026-2027 coverage, conservative skipping of published half-days, and an explicit formula. It omits auth/rate-limit notes, keeping it just short of a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is sectioned and front-loaded with the decision ('Use this when... / Do not use this when...'), and the formula and REST fallback are genuinely useful. The full enumeration of ~18 output fields duplicates the existing output schema and is the one wasteful block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter deterministic calculator with an output schema and full annotation coverage, everything an agent needs is present: scope, coverage window, an exact call example, computation formula, and a REST fallback path. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so start_date and working_days are already fully documented (including the signed-offset and exclusion semantics). The description only restates the parameter types and repeats an example that the schema already carries, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds or subtracts dates using Türkiye's pinned statutory public-holiday package') and pins the jurisdiction and coverage window (2026-2027). This cleanly separates it from the ~60 territory siblings (add_de_working_days, add_ar_working_days, etc.) and from count_/check_ variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('deterministic Türkiye statutory working-day offset in 2026-2027'), instructs the agent to call rather than answer from memory, and gives a when-not clause ('employer or sector calendar, or the date falls outside the pinned coverage'). Routing intent is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_tw_working_daysAdd 中国台湾省 Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic 中国台湾省 working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government administrative-agency scope only. Public enterprises generally follow the calendar, but special agencies, schools, private employers, local arrangements, banks, exchanges and sector schedules are not inferred. What it computes: Adds or subtracts 中国台湾省 authority-scope working days in exact coverage. Example user requests: Add or subtract 中国台湾省 working days around Spring Festival substitute holiday. | Add or subtract 中国台湾省 working days around Government calendar does not mean private-employer closure. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/taiwan-government-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/taiwan-government-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the scope disclosure: public enterprises follow the calendar but private employers, schools, banks and exchanges are not inferred, plus the day-by-day formula. This is meaningful behavioral context beyond the structured hints, though it omits the valid date range implied elsewhere.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The usage guidance is front-loaded and the section labels aid scanning, but the description is bloated in places: the 'Outputs:' enumeration duplicates the output schema verbatim, the REST fallback and docs links read as hedges, and one exclusion sentence is grammatically broken. Roughly a third of the text does no work for an agent that already has the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return fields need not be explained, and the description still supplies scope limits, a formula, argument examples and a fallback endpoint. The main gap is that it never states the supported date range (2026-2027), which is only visible in the schema. Otherwise an agent has enough to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both parameters including the 'start date excluded for non-zero offsets' semantics. The description only restates the input list and one JSON example, adding no new meaning beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Adds or subtracts 中国台湾省 authority-scope working days in exact coverage.' It scopes the computation to authority/government-administrative calendars, which helps an agent distinguish it from add_china_working_days or add_hk_working_days, though it never names a sibling directly. Purpose is unambiguous but sibling differentiation is left implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use ('Use this when you need a deterministic 中国台湾省 working-day offset... call directly instead of answering from memory') and a when-not ('Do not use this when government administrative-agency scope only... special agencies, schools, private employers... not inferred'). The exclusion is useful and specific, though its wording is tangled enough to require a second read.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_uae_federal_working_daysAdd UAE Federal Government Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic UAE federal-government offset inside 2026. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a private employer, local-government or future-year calendar. What it computes: Adds or subtracts dates using the exact 2026 UAE federal-government holiday package and Monday-Friday baseline. Example user requests: Add five UAE federal-government working days after 2026-08-27. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-08-27","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, jurisdiction, day_type, weekend_days, holiday_names, holiday_legal_bases, calendar_scope, private_sector_policy, unresolved_lunar_rules, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement remaining only when UAE federal status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uae-federal-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uae-federal-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: it discloses the exact 2026 holiday package and Monday-Friday baseline, the stepwise decrement formula, the deterministic nature, and a concrete REST fallback path with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labelled sections (use/do-not-use/what it computes/inputs/outputs/formula/fallback/docs) are front-loaded and scannable, but the output-field list duplicates the existing output schema and the formula/REST details add bulk for a two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Everything needed to select and invoke the tool is present: routing rules, a worked example request, complete JSON arguments, and the calculation semantics. The enumeration of output fields is redundant given the output schema exists, but completeness is not in question.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, and the two parameters are self-evident (start_date, working_days). The description restates the inputs and provides a full JSON example, but adds no syntax or edge-case meaning beyond what the schema documents (e.g. non-zero-offset exclusivity is already in the schema).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with scope: deterministic UAE federal-government working-day offset for 2026. It explicitly distinguishes itself from the sibling check_/count_ tools and from non-federal calendars by naming what it does not cover.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use clause, an explicit do-not-use clause (private employer, local government, future years), and instructs the agent to call the tool rather than answer from memory. This is textbook routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_uk_working_daysAdd UK Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deadline a stated number of UK working days before or after a 2024-2028 date and the correct division's bank holidays matter. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need calendar days, a local/employer/market calendar, a non-UK jurisdiction or a result outside 2024-2028. What it computes: Adds or subtracts working days for England and Wales, Scotland or Northern Ireland, skipping weekends and the selected division's official bank holidays. Example user requests: What date is five England and Wales working days after 23 December 2026? | Add two Scottish working days to 12 June 2026, accounting for the official bank holiday. | Subtract ten Northern Ireland business days from 20 July 2027. Inputs: start_date (date); working_days (integer, working days); division (enum, optional). Complete JSON argument examples: {"start_date":"2026-12-23","working_days":5,"division":"england-and-wales"} | {"start_date":"2026-06-12","working_days":2,"division":"scotland"} Outputs: division, division_name, start_date, result_date, result_weekday, result_is_working_day, working_days_added [working days], calendar_days_elapsed [days], non_working_days_skipped [days], bank_holidays_skipped, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: move one calendar day at a time in sign(working_days); decrement only when the selected UK division reports is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionNoGOV.UK bank-holiday division. England and Wales share one official list; Scotland and Northern Ireland have separate lists.england-and-wales
start_dateYesStarting UK civil date in YYYY-MM-DD format, within 2024-2028.
working_daysYesSigned working-day offset. The start date is excluded when non-zero; negative values move backward. Unit: working days.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior, so the description adds substantial beyond-annotation context: the exact iteration formula, the division-specific holiday handling, the date-range boundary, and the direct REST fallback. This gives the agent an accurate model of how the computation behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than minimal, but its content is organized into clear sections: when to use, when not to use, computation details, examples, outputs, formula, and fallback. It is front-loaded with the critical selection criteria, and nearly every sentence adds practical value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 3-parameter schema, rich annotations, output schema, and sibling context, this description is complete. It covers selection criteria, exclusions, examples, calculation semantics, output fields, coverage bounds, and even a REST fallback endpoint. An agent has everything needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 100% of parameters with types, defaults, enums, and descriptions, so the baseline is 3. The description adds meaning beyond the schema by explaining the signed working-day formula, providing complete JSON examples, and clarifying how the division choice affects the calculation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies an unambiguous verb and resource: it adds or subtracts UK working days for England and Wales, Scotland, or Northern Ireland. It also distinguishes itself from related tools by emphasizing the division-specific bank holidays and the 2024-2028 coverage window.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description opens with explicit 'Use this when' conditions and provides direct 'Do not use when' exclusions for calendar days, local/employer/market calendars, non-UK jurisdictions, and dates outside 2024-2028. It also tells the agent to call the tool directly rather than compute the answer from memory, which is strong selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_us_federal_working_daysAdd US Federal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic US federal employee/office date offset in 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need state/local/private-employer, exchange or alternate-work-schedule semantics. What it computes: Adds or subtracts dates using the pinned OPM federal schedule and US weekend baseline. Example user requests: Add five US federal working days after 2027-06-17. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2027-06-17","working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, federal_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: move one day at a time; decrement remaining only when US federal status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/us-federal-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/us-federal-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2027.
working_daysYesSigned offset; start date is excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description adds substantial behavior beyond them: the algorithm ('move one day at a time; decrement remaining only when status.is_working_day=true'), the pinned dataset/version notion, the date-range constraint, and a REST fallback path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the usage decision and keeps each section to one line. It is content-dense rather than padded, though the enumerated output-field list is somewhat redundant given the output schema and slightly lengthens the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter calculation tool it covers everything an agent needs: scope, exclusions, a concrete call example, the computation formula, and a REST fallback with an explicit warning not to guess other paths. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the two parameters are already fully documented with type, range, and the 'start date excluded for non-zero offsets' semantics. The description lists the same inputs but adds no new meaning, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Adds or subtracts dates using the pinned OPM federal schedule and US weekend baseline') with an explicit scope (2026-2027 US federal employee/office). It clearly carves itself out from the many sibling date-offset tools by naming the calendar semantics it does not cover.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('need a deterministic US federal employee/office date offset'), when-not-to-use ('state/local/private-employer, exchange or alternate-work-schedule semantics'), and even instructs to call the tool directly rather than answer from memory. The routing guidance is unusually complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_uzbekistan_working_daysAdd Uzbekistan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic workday offset and know the workweek variant. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the workweek or employer/shift scope is unknown. What it computes: Adds or subtracts Uzbekistan 2026 workdays under a required five-day or six-day schedule. Example user requests: Add five five-day-workweek working days after 2026-12-28. Inputs: start_date (date); workweek (integer); working_days (integer). Complete JSON argument examples: {"start_date":"2026-12-28","workweek":5,"working_days":1} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, workweek, weekly_rest_model, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_kinds, holiday_details, calendar_scope, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only when selected status is working Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uzbekistan-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uzbekistan-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
workweekYesRequired official schedule variant: 5 for Saturday-Sunday rest, or 6 for Sunday-only rest.
start_dateYesGregorian start date in 2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnly/idempotent/non-destructive, so the description's added value is the iteration formula ('move one day at a time; decrement only when selected status is working') and the note that results are deterministic. That is genuine behavioral context beyond structured fields, though auth/rate-limit behavior is untouched.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded well with the use case and exclusion, but the long enumeration of output fields duplicates a structured output schema that already exists, and the REST-fallback URL plus docs link pad the body. Several lines do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-param, deterministic calculation tool with annotations and an output schema, the description covers purpose, exclusions, the algorithm, and a fallback endpoint, leaving little an agent needs missing. The redundant output list is the main flaw rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 with richer detail (workweek meaning, start_date Gregorian scope, signed offset semantics). The description's 'Inputs:' line and JSON example simply restate what the schema provides, adding no new meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('adds or subtracts'), resource ('Uzbekistan 2026 workdays'), and scope constraint ('required five-day or six-day schedule'). An agent can distinguish it from check_uzbekistan_working_day and count_uzbekistan_working_days by the offset semantics without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use ('you need a deterministic workday offset and know the workweek variant'), when-not ('workweek or employer/shift scope is unknown'), and a directive to call directly rather than compute from memory. It stops short of naming the alternative siblings (check_/count_) that a confused agent might otherwise pick.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

add_vn_working_daysAdd Vietnam Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Vietnam working-day offset. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when public-sector and statutory paid-holiday layer only; private-employer, non-Saturday/Sunday workweeks, provincial, sector, bank, school and employer schedules are not inferred. The proposed four-day 2026 Vietnam Cultural Day public-sector arrangement is not encoded until finally approved. What it computes: Adds or subtracts Vietnam authority-scope working days in exact coverage. Example user requests: Add or subtract Vietnam working days around New Year transfer. | Add or subtract Vietnam working days around Vietnam Cultural Day. Inputs: start_date (date); working_days (integer). Complete JSON argument examples: {"start_date":"2026-01-01","working_days":0} Outputs: start_date, result_date, working_days_added, calendar_days_elapsed, public_holidays_skipped, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: move one day at a time; decrement only on status.is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/vietnam-public-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/vietnam-public-add-working-days.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesGregorian start date in 2026-2026.
working_daysYesSigned offset; start date excluded for non-zero offsets.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly/idempotent/non-destructive), the description discloses the algorithm ('move one day at a time; decrement only on status.is_working_day=true'), the exact coverage limitation (public-sector/statutory layer only), an unencoded edge case (2026 Vietnam Cultural Day arrangement), and a REST fallback path with a 'do not guess another /api/* path' warning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is well front-loaded with usage and exclusions, but includes redundant sections: an Outputs list duplicating the existing output schema, a JSON argument example duplicating the schema's examples, and example user requests. These repeat structured data rather than adding value, blunting conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a scoped date calculator with full schema coverage, rich annotations, and an existing output schema, the description covers everything an agent needs: scope, exclusions, formula, edge cases, and a REST fallback. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date and working_days including the signed-offset and start-date-exclusion semantics. The description adds only a short Inputs recap and a redundant JSON example, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('adds or subtracts Vietnam authority-scope working days') and scopes it to Vietnam, distinguishing it from the many country-specific siblings like add_th_working_days or add_singapore_working_days without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('when you need a deterministic Vietnam working-day offset... return its calculation instead of answering from memory') and an explicit when-not-to-use block (private-employer, non-Sat/Sun workweeks, provincial, sector, bank, school and employer schedules are not inferred). This is exactly the routing guidance an agent needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_ab_test_significanceA/B Test Significance CalculatorA
Read-onlyIdempotent
Inspect

Use this when you have visitors and conversions for a control and a variant (A/B test, split test, email test) and need to know whether the difference is statistically significant. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the metric is a mean (revenue per user, time on page) rather than a conversion proportion, or there are more than two variants (use a chi-square or multiple-comparison procedure). What it computes: Tests whether a variant's conversion rate differs from the control's using the pooled two-proportion z-test, and reports both rates, absolute and relative lift, z-score, two-sided p-value, a confidence interval for the difference and the sample size needed per variant to detect the observed lift with 80 % power. Inputs: control_visitors (integer); control_conversions (integer); variant_visitors (integer); variant_conversions (integer); confidence_level_percent (number, %, optional). Complete JSON argument examples: {"control_visitors":1000,"control_conversions":50,"variant_visitors":1000,"variant_conversions":70} | {"control_visitors":5000,"control_conversions":200,"variant_visitors":5000,"variant_conversions":260} Outputs: control_rate_percent [%], variant_rate_percent [%], absolute_lift_percentage_points [pp], relative_lift_percent [%], standard_error_percentage_points [pp], z_score, p_value, significant, ci_lower_percentage_points [pp], ci_upper_percentage_points [pp], required_visitors_per_variant, verdict. Formula: p1 = x1/n1, p2 = x2/n2, p̄ = (x1 + x2)/(n1 + n2); z = (p2 − p1) / √(p̄(1 − p̄)(1/n1 + 1/n2)); p_value = 2·(1 − Φ(|z|)); CI = (p2 − p1) ± z_crit·√(p1(1 − p1)/n1 + p2(1 − p2)/n2); n per variant = (z_crit·√(2·p̄(1 − p̄)) + z_0.80·√(p1(1 − p1) + p2(1 − p2)))² / (p2 − p1)² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ab-test-significance with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/business/ab-test-significance.md

ParametersJSON Schema
NameRequiredDescriptionDefault
control_visitorsYesNumber of users exposed to the control (A).
variant_visitorsYesNumber of users exposed to the variant (B).
control_conversionsYesConversions in the control group.
variant_conversionsYesConversions in the variant group.
confidence_level_percentNoConfidence level for the significance decision and interval (95 → α = 0.05, two-sided). Unit: %.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

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 behavioral context: it discloses the exact statistical test, the formula used, the full list of computed outputs, and the direct REST fallback path with an instruction not to guess another /api path. No contradiction with the annotations was found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but is well-structured with clear sections (when to use, when not to use, what it computes, inputs, outputs, formula, REST fallback). The key use-case guidance is front-loaded in the first sentence. A little redundancy with the schema examples exists, but every section serves a distinct purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's statistical complexity, the description is fully complete: it covers use cases, exclusions, input requirements, output fields, the underlying formula, and a REST fallback. The presence of an output schema and 100% parameter documentation further reduces gaps, and the description reinforces rather than undermines that completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% coverage with descriptions for all five parameters, so the baseline is 3. The description adds value by naming the parameters in context, providing complete JSON examples, explicitly marking confidence_level_percent as optional, and giving the formula mapping each parameter to quantities like p1 and p2. This goes beyond mere schema restatement, though some parameter details are redundant with the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: tests whether a variant's conversion rate differs from the control using a pooled two-proportion z-test. It is specific about the resource (A/B test significance) and clearly distinguishes it from the sibling calculate_t_test by limiting it to conversion proportions and naming alternatives for means and multi-variant cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance ('Use this when you have visitors and conversions for a control and a variant...') and equally explicit when-not-to-use guidance for means and more than two variants. It also directs the agent to call the tool directly rather than answering from memory or stopping at discovery, and names a chi-square/multiple-comparison alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_ageAge CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need someone's exact age on a date, the total number of days lived, the weekday they were born on, or how many days remain until their next birthday. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need the difference between two arbitrary dates with a business-day count (use date-difference) or a countdown to an event (use days-until). What it computes: Computes the exact age on a given date as years, months and days by Gregorian calendar arithmetic, plus total days and weeks, the weekday of birth, and the date of and days until the next birthday. Inputs: birth_date (date); as_of_date (date, optional). Complete JSON argument examples: {"birth_date":"1990-05-17","as_of_date":"2026-09-23"} | {"birth_date":"1985-12-25","as_of_date":"2026-01-10"} Outputs: years, months, days, age_text, total_days [days], total_weeks [weeks], age_decimal_years [years], next_birthday_date, days_until_next_birthday [days], day_of_week_born. Formula: years, months, days = calendar difference birth_date → as_of_date (when the day-of-month is smaller, days are borrowed from the month before as_of_date); total_days = as_of_date − birth_date; total_weeks = total_days / 7; age_decimal_years = total_days / 365.2425; next_birthday = first (month, day) of birth on or after as_of_date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/age with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/age.md

ParametersJSON Schema
NameRequiredDescriptionDefault
as_of_dateNoDate on which to evaluate the age; defaults to the current UTC date.today
birth_dateYesDate of birth (ISO 8601, YYYY-MM-DD).

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds substantial behavioral detail beyond annotations: the Gregorian calendar arithmetic, the day-borrowing rule, the total_days/365.2425 decimal-age formula, next-birthday logic, and the output field list. This makes the tool's exact behavior transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with labeled sections (Use when, Do not use, What it computes, Inputs, Examples, Outputs, Formula, REST fallback, Docs). Purpose and usage are front-loaded. The length is justified by the useful behavioral details, though the REST fallback and docs URL could be considered slightly beyond core agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple 2-parameter schema, the description is fully complete: it lists all outputs, explains the calculation formula, gives complete JSON examples, names the sibling alternatives, and even provides a direct REST fallback. There is nothing an agent needs to know to call this tool correctly that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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's 'Inputs: birth_date (date); as_of_date (date, optional)' adds little beyond the schema, though the complete JSON examples and formula context reinforce the meaning. The schema already specifies defaults, formats, and examples, so no additional parameter semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: it computes exact age, days lived, weekday of birth, and days until next birthday. It also explicitly differentiates from the sibling calculate_date_difference by naming what it does not do. An agent can immediately tell what this tool is for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use criteria ('Use this when you need...') and when-not-to-use criteria with named alternatives ('Do not use this when... use date-difference... use days-until'). This is the strongest possible usage guidance and leaves nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_amortization_scheduleAmortization Schedule CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need to see how each payment splits into principal and interest over the life of a mortgage or loan, the balance at the end of each year, or the effect of paying extra every month. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only need the payment amount (use loan-payment or mortgage-payment), or you know the payment and want the payoff time of a revolving balance (use debt-payoff). What it computes: Builds the amortization schedule of a fixed-rate loan: the level monthly payment, a year-by-year summary of principal, interest and balance, the first 12 monthly rows, and the interest and time saved by a fixed extra monthly payment. Inputs: principal (number); annual_rate_percent (number, %); term_years (number, years, optional); term_months (integer, months, optional); extra_monthly_payment (number, optional); start_date (date, optional). Valid input combinations: Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together; the total may not exceed 480 months. Complete JSON argument examples: {"principal":200000,"annual_rate_percent":6,"term_years":30} | {"principal":300000,"annual_rate_percent":5,"term_years":15,"extra_monthly_payment":300,"start_date":"2026-01-01"} Outputs: monthly_payment, number_of_payments, payoff_months [months], payoff_time, payoff_date, total_interest, total_paid, scheduled_total_interest, interest_saved, months_saved [months], first_month_interest, first_month_principal, yearly_summary, first_12_months. Formula: i = annual_rate_percent / 1200; n = 12·term_years + term_months; monthly_payment = principal × i / (1 − (1 + i)^−n) (principal / n if i = 0). Each month: interest = balance × i; principal_paid = monthly_payment + extra_monthly_payment − interest (capped at the balance); balance −= principal_paid, until the balance is 0. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/amortization-schedule with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/amortization-schedule.md

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesAmount borrowed.
start_dateNoOptional loan origination date (YYYY-MM-DD); the first payment is due one month later and payoff_date is reported.
term_yearsNoLoan term in years; added to term_months when both are given. Total term is limited to 40 years. Unit: years.
term_monthsNoAdditional months of term (e.g. term_months=60 alone for a five-year loan). Unit: months.
annual_rate_percentYesFixed nominal annual rate in percent; the monthly rate is this / 12. Unit: %.
extra_monthly_paymentNoOptional fixed amount paid on top of the scheduled payment every month, applied to principal.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the annotations by exposing the exact computation formula, the input combination rules, and the output field list. It does not contradict the readOnly/idempotent/destructive hints and adds detail on how the schedule is built and what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although long, the description is well-structured with clear sections: purpose, exclusions, computation details, inputs, examples, outputs, formula, fallback, and docs. Every section contributes necessary information for correct invocation, and the most important usage guidance is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex calculator with 6 parameters, an output schema, and sibling tools, the description covers all needed aspects: valid input combinations, examples, output definitions, formula, and even a REST fallback. Nothing required for correct use is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents every parameter with constraints, units, and the rule that term_years and term_months are added. The description largely restates this information and adds the formula, but the formula is also implied by the schema's monthly rate explanation, so it adds limited new semantic value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description immediately states the tool's purpose: showing principal/interest splits, yearly balances, and effects of extra payments. It also distinguishes itself from related siblings by naming payment-only calculators and debt-payoff, so an agent can tell exactly when this tool applies.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Do not use this when...' guidance names alternatives (loan-payment, mortgage-payment, debt-payoff) and the condition that selects them. It also instructs the agent to call the tool directly rather than deriving the calculation, leaving no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_bazi_four_pillarsBazi Four Pillars (八字)A
Read-onlyIdempotent
Inspect

Use this when you need the four stem-branch pillars (年柱 月柱 日柱 时柱) of a birth moment, the day master and its ten-god relations, element balance, or the start age and sequence of the 大运 luck pillars. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only need the lunar date or zodiac of a date (use lunar-calendar-converter or chinese-zodiac), the stem-branch of a single date without an hour (use sexagenary-cycle), or an interpretation of the chart — this tool computes the traditional chart only and gives no predictions. What it computes: Builds the Bazi (八字, Bāzì) / Four Pillars (四柱) chart of a birth date and time: year pillar by 立春 (Lìchūn), month pillar by the 节 (jié) solar terms, day pillar from the sexagenary day count, hour pillar by the 五鼠遁 (Wǔshǔdùn) rule, plus day master, five-element counts, ten gods (十神), hidden stems (藏干), 纳音 (nàyīn), void branches (空亡) and the ten-year luck pillars (大运). Inputs: birth_date (date); birth_time (string); sex (enum); utc_offset_hours (number, h, optional); longitude_degrees (number, °, optional); late_zi_next_day (boolean, optional); include_hidden_stems (boolean, optional). Complete JSON argument examples: {"birth_date":"1990-05-17","birth_time":"08:30","sex":"male","utc_offset_hours":8} | {"birth_date":"2000-01-01","birth_time":"00:30","sex":"female","utc_offset_hours":8} Outputs: bazi_chart, year_pillar, month_pillar, day_pillar, hour_pillar, pillars_pinyin, pillars_english, day_master, zodiac, five_element_counts, missing_elements, dominant_element, ten_gods, hidden_stems, nayin, void_branches, luck_direction, luck_start_age, luck_start_age_years [years], luck_pillars, lunar_birth_date, solar_term_context, time_used, notes. Formula: year = solarYearAtLichun(birth instant); month stem = ((year stem mod 5) × 2 + 2 + months since 寅) mod 10; day index = (JDN + 49) mod 60; hour stem = ((day stem mod 5) × 2 + hour branch) mod 10; hour branch = floor(((hour + 1) mod 24) / 2); true solar time = clock + (longitude − 15 × utc_offset) × 4 min + equation of time; 起运 years = days to 节 / 3 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bazi-four-pillars with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/bazi-four-pillars.md

ParametersJSON Schema
NameRequiredDescriptionDefault
sexYesSex, used only for the direction of the luck pillars (阳年男/阴年女 forward, 阴年男/阳年女 backward).
birth_dateYesGregorian civil date of birth in the local clock time of the birthplace (1900–2100).
birth_timeYesLocal clock time of birth, 24-hour HH:MM. 23:00–00:59 is 子时 (Zǐ hour).
late_zi_next_dayNotrue: 23:00–23:59 belongs to the next day's 子时 and the day pillar advances at 23:00. false: 晚子时 convention — the day pillar stays, only the hour stem is taken from the next day.
utc_offset_hoursNoTime-zone offset of birth_time in hours (China Standard Time = 8; use the historical zone in force at birth). Unit: h.
longitude_degreesNoOptional east-positive longitude. When given, the clock time is converted to true solar time: correction = (longitude − 15 × utc_offset_hours) × 4 min + equation of time. Unit: °.
include_hidden_stemsNoAdd the hidden stems (藏干) of the four branches to the element count with weights 1.0 (main), 0.5 (middle) and 0.3 (residual).

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint, idempotentHint, and destructiveHint annotations, the description reveals the tool's computational behavior in depth: pillar construction rules, solar-term conventions, true solar time correction formula, and the 起运 years calculation. It also explicitly states that the tool gives no predictions, setting clear expectations about the boundary of what it does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured with labeled sections and is front-loaded with the primary usage directive. It is somewhat long and includes redundant material such as a full output list even though an output schema exists and detailed formula text already present in property descriptions, but the organization keeps the extra length navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex astrological calculator, the description is remarkably complete: it defines the computation rules, optional parameter conventions, complete JSON examples, an output field list, a REST fallback endpoint, and a documentation link. An agent has everything needed to select and invoke the tool correctly for the intended use cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains each parameter's purpose, units, defaults, and edge-case behavior. The description's parameter list and example JSONs largely duplicate the schema examples, so it adds little new semantic meaning beyond what is already structured.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement of when to use the tool and enumerates exactly what it computes: the four stem-branch pillars, day master, ten gods, element balance, and 大运 luck pillars. It also explicitly distinguishes itself from interpretation tools and other calendar-related siblings, so an agent can tell this calculator apart without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives both positive and negative usage criteria: use it when you need Bazi chart components, and do not use it for lunar dates, zodiac, single-day stem-branch, or interpretation. It names alternatives such as lunar-calendar-converter, chinese-zodiac, and sexagenary-cycle, making the routing decision explicit and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_bmiBMI CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need an adult's BMI, its WHO/CDC weight category, or the weight range that corresponds to a normal BMI (18.5–24.9) for a given height. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the person is under 20 years old (children need age- and sex-specific BMI percentiles), or you need body-fat percentage (use body-fat) or calorie needs (use bmr / tdee). What it computes: Computes body mass index (BMI) from weight and height and classifies it with the WHO adult categories, plus the healthy weight range for that height. Inputs: weight_kg (number, kg); height_cm (number, cm). Complete JSON argument examples: {"weight_kg":70,"height_cm":175} | {"weight_kg":95,"height_cm":180} Outputs: bmi [kg/m²], category, healthy_weight_min_kg [kg], healthy_weight_max_kg [kg], prime. Formula: BMI = weight_kg / (height_cm / 100)² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bmi with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/bmi.md

ParametersJSON Schema
NameRequiredDescriptionDefault
height_cmYesStanding height in centimetres. Unit: cm.
weight_kgYesBody weight in kilograms. Unit: kg.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description does not contradict them. It adds meaningful behavioral context beyond annotations: the formula, the specific output fields, and a direct REST fallback, so the agent knows exactly what happens when invoked.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with labeled sections and front-loaded usage guidance. It loses one point due to redundancy between the opening 'Use this' sentence and the later 'What it computes' paragraph, which restate the same scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers when to use, when not to use, inputs with examples, expected outputs, the formula, a fallback endpoint, and docs. Since an output schema is present and the tool is a simple two-parameter calculation, nothing needed for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 complete JSON examples and the BMI formula, which clarifies how height_cm and weight_kg are combined; this goes slightly beyond the schema's field-level documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'adult's BMI, its WHO/CDC weight category, or the weight range that corresponds to a normal BMI'. It clearly distinguishes itself from siblings by naming body-fat, bmr/tdee as alternatives and by restating the exact computation in the 'What it computes' section.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides a 'Use this when' condition and a 'Do not use this when' exclusion with concrete alternatives (body-fat, bmr/tdee) and a pediatric boundary (under 20 years). The agent receives clear routing without needing to infer anything.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_bmrBMR CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need resting daily calorie needs for an adult from sex, weight, height and age, as a base for diet or TDEE calculations. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need total daily calories including activity (use tdee), the person is a child, pregnant, or has very high muscle mass (use a body-fat based equation such as Katch-McArdle instead). What it computes: Estimates basal metabolic rate (calories burned at complete rest per day) with the Mifflin-St Jeor equation, and also reports the revised Harris-Benedict estimate. Inputs: sex (enum); weight_kg (number, kg); height_cm (number, cm); age_years (number, years). Complete JSON argument examples: {"sex":"male","weight_kg":70,"height_cm":175,"age_years":30} | {"sex":"female","weight_kg":60,"height_cm":165,"age_years":40} Outputs: bmr_kcal_per_day [kcal/day], harris_benedict_kcal_per_day [kcal/day], bmr_kj_per_day [kJ/day]. Formula: Mifflin-St Jeor: BMR = 10·weight_kg + 6.25·height_cm − 5·age_years + 5 (male) or − 161 (female). Harris-Benedict (1984): male 88.362 + 13.397·W + 4.799·H − 5.677·A; female 447.593 + 9.247·W + 3.098·H − 4.330·A. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bmr with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/bmr.md

ParametersJSON Schema
NameRequiredDescriptionDefault
sexYesBiological sex used to select the formula coefficients.
age_yearsYesAge in years (adults only). Unit: years.
height_cmYesHeight in centimetres. Unit: cm.
weight_kgYesBody weight in kilograms. Unit: kg.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only, idempotent, and non-destructive. The description adds substantial behavioral detail beyond that: the Mifflin-St Jeor formula, the revised Harris-Benedict secondary estimate, the exact output units, and a REST fallback endpoint. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and usage exclusions before technical details, and uses clear section headers. It is longer than strictly necessary—the formula, output list, and JSON examples partly duplicate schema content—but each section still serves a useful operational purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter calculator, the description covers inputs, outputs, units, formula, REST fallback, documentation link, and exclusions. The presence of an output schema means return-value explanation is not required, and nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter already documented with units, ranges, an enum, and examples. The description's parameter list and JSON examples add little new semantic meaning; the formula does clarify how parameters map to the computation, but that is mostly redundant with the schema and output descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: estimating resting daily calorie needs for an adult using sex, weight, height, and age. It explicitly distinguishes itself from calculate_tdee and body-fat-based alternatives, so an agent can tell it apart from siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance (resting calorie needs as a base for diet/TDEE) and when-not-to-use guidance (total daily calories, children, pregnancy, very high muscle mass), naming calculate_tdee and Katch-McArdle as alternatives. It also instructs the agent to call the tool directly rather than answer from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_business_deadlineCross-Border Business Hours DeadlineA
Read-onlyIdempotent
Inspect

Use this when you need an SLA, support, procurement or order deadline measured in business hours under the published mainland China or UK calendar, and must express the result in another team's IANA time zone with reproducible holiday and DST evidence. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need calendar hours, an overnight or split shift, lunch breaks, an employer/local/market calendar, a legal filing deadline, actual delivery/arrival prediction, private calendar availability, or a date outside the selected evidence package's coverage. What it computes: Adds an explicit number of business hours inside a caller-supplied daily window, using either the official mainland China work calendar or a selected GOV.UK division, then returns the deadline in UTC, the calendar zone and a target IANA zone with a complete segment/skip audit trail. Example user requests: A Shanghai support ticket opened at 2026-09-24 15:00 has a 16-business-hour SLA, counted from that day during 09:00-17:00 China official working time. When is it due in London? | Starting 24 December 2026 at 15:00 London time, add 8 England-and-Wales business hours between 09:00 and 17:00 and show the deadline in Shanghai. | 按中国官方工作日,从 2026-09-24 15:00(上海)起计算 16 个营业小时,每天 09:00-17:00,起始日计入;给出伦敦时间和跳过日期。 Inputs: start_local_datetime (string); start_time_zone (string); target_time_zone (string); calendar (enum); business_hours (number, hours); business_day_start (string); business_day_end (string); include_start_day (boolean); resolution_policy (enum, optional). Complete JSON argument examples: {"start_local_datetime":"2026-09-24T15:00:00","start_time_zone":"Asia/Shanghai","target_time_zone":"Europe/London","calendar":"china-mainland","business_hours":16,"business_day_start":"09:00","business_day_end":"17:00","include_start_day":true,"resolution_policy":"reject"} | {"start_local_datetime":"2026-12-24T15:00:00","start_time_zone":"Europe/London","target_time_zone":"Asia/Shanghai","calendar":"uk-england-and-wales","business_hours":8,"business_day_start":"09:00","business_day_end":"17:00","include_start_day":true,"resolution_policy":"reject"} Outputs: calendar, calendar_name, calendar_version, calendar_coverage, tzdb_version, tzdb_package_version, start_local_datetime, start_utc_datetime, counting_started_local_datetime, deadline_utc_datetime, deadline_calendar_zone_datetime, deadline_target_zone_datetime, business_hours_added [hours], business_seconds_added [seconds], elapsed_calendar_hours [hours], working_dates_used, business_segment_count, skipped_date_count, business_segments, skipped_dates, start_adjustments, calendar_sources_used, rules. Formula: deadline = consume business_hours only inside [business_day_start, business_day_end) on dates where the selected versioned calendar reports is_working_day=true; convert each local boundary with pinned IANA tzdb Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/business-hours-deadline with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/business/business-hours-deadline.md

ParametersJSON Schema
NameRequiredDescriptionDefault
calendarYesVersioned public working-day calendar that determines which local dates may consume business hours.
business_hoursYesPositive duration consumed only inside eligible working-date windows. It is rounded to the nearest second. Unit: hours.
start_time_zoneYesIANA zone used for the start time and every daily business window.
business_day_endYesLocal closing/cutoff time on each eligible working date. Must be later than business_day_start on the same date.
target_time_zoneYesIANA zone in which the same deadline should also be returned for the receiving team.
include_start_dayYesTrue counts eligible time remaining on the start local date; false skips that entire local date and starts at the next working opening.
resolution_policyNoHow to resolve an ambiguous or nonexistent start wall time. reject is safest; earlier/later select a repeated instant; shift_forward moves a gap time by the DST jump.reject
business_day_startYesLocal opening time on each eligible working date. Must be earlier than business_day_end; overnight windows are not supported.
start_local_datetimeYesStart wall-clock date and time without an offset. start_time_zone supplies its IANA zone.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the exact computation semantics: business hours are consumed only inside [business_day_start, business_day_end) on dates with is_working_day=true, with versioned calendars, pinned tzdb, DST resolution policy, and an audit trail. It adds reproducible holiday/DST evidence and full output composition beyond the annotations' read-only/idempotent hints. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but front-loaded with the primary use case and exclusions, then moves into computation, examples, inputs, outputs, formula, and fallback in a logical order. The Chinese example and full JSON examples are somewhat redundant with the schema examples, but they justify their place for a complex multi-zone calendar tool. Minor redundancy keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter cross-border calendar tool, the description covers when to use it, what it computes, how the formula behaves, what it returns, even the direct REST fallback and documentation link. An output schema exists for return fields, so the description does not need to enumerate them. Nothing required to invoke or judge this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already describes each parameter's role, format, and enum, so the baseline is 3. The description lists the parameters and provides two complete JSON examples but does not add meaning beyond the schema for individual parameters. The examples do illustrate realistic combinations, so it earns the baseline rather than less.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence opens with a specific use case (SLA/support/procurement/order deadlines in business hours under China/UK calendars) and a concrete obligation to call the tool rather than compute from memory, which makes the operation unmistakable. It names the resource categories and the cross-time-zone output requirement, and the later 'What it computes' paragraph pins it down further. This clearly distinguishes it from day-counting siblings like add_china_working_days or check_china_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit positive conditions ('Use this when...') and a long list of explicit exclusions ('Do not use this when you need calendar hours, overnight or split shift...'), which is strong routing guidance. It does not name sibling tools as alternatives, but the exclusions plus the examples are enough for an agent to decide. This is clear context with no misleading advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_circle_propertiesCircle CalculatorA
Read-onlyIdempotent
Inspect

Use this when you know a circle's radius or diameter and need its area, circumference or the other dimension. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the shape is an ellipse (use ellipse), a solid ball (use sphere) or a disc with thickness (use cylinder). What it computes: Computes the area, circumference, diameter and radius of a circle from either its radius or its diameter. Lengths are unit-agnostic: the area is in the square of the input unit. Example user requests: Calculate the area and circumference of a circle with radius 3. | A circle has diameter 10; return its radius, circumference and area. Inputs: radius (number, units, optional); diameter (number, units, optional). Valid input combinations: Provide at least one of radius or diameter. You may provide both when diameter equals 2 × radius; conflicting values are rejected. Complete JSON argument examples: {"radius":3} | {"diameter":10} Outputs: radius [units], diameter [units], circumference [units], area [units²]. Formula: r = radius (or diameter / 2); diameter = 2·r; circumference = 2·π·r; area = π·r² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/circle with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/geometry/circle.md

ParametersJSON Schema
NameRequiredDescriptionDefault
radiusNoRadius of the circle. Give either radius or diameter. Unit: units.
diameterNoDiameter of the circle (2 × radius). Used when radius is not given. Unit: units.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only and idempotent, and the description adds meaningful behavioral context: it is unit-agnostic, rejects conflicting radius/diameter values, and returns all four properties from either input. There is no contradiction between the description and the annotations, and the additional constraints help the agent understand expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every section earns its place: usage, exclusions, computed outputs, example inputs, valid combinations, JSON examples, formulas, and REST fallback. It is clearly structured with labeled sections, and the most important usage guidance is front-loaded. This is an appropriate level of detail for guiding an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward geometry calculator, the description covers everything needed to call it correctly: input semantics, valid combinations, output properties, formulas, and complete JSON examples. The presence of an output schema and annotations further reduces the need to explain return structure or side effects. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with units and examples, so the baseline is 3. The description adds extra meaning by explaining valid input combinations, the requirement that diameter must equal 2 × radius when both are provided, and the exact formulas used. This goes beyond the schema by clarifying the relationship and constraints between the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: it computes area, circumference, diameter, and radius of a circle from radius or diameter. It clearly distinguishes this from sibling shape calculators by explicitly excluding ellipses, spheres, and cylinders. This leaves no ambiguity about what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('when you know a circle's radius or diameter and need its area, circumference or the other dimension'), when not to use it, and names the alternative tools for ellipse, sphere, and cylinder. It also instructs the agent to call the tool directly rather than computing from memory, providing clear behavioral guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_compound_interestCompound Interest CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need to project a savings account, certificate of deposit or investment balance from a starting amount, an annual rate, a term and optional monthly deposits. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when interest is not reinvested (use simple-interest), you need the deposit required to hit a target (use savings-goal), or you are repaying a loan (use loan-payment). What it computes: Computes the future balance of a principal earning compound interest at a chosen compounding frequency, optionally with a fixed deposit at the end of every month, and splits the result into contributions and interest. Inputs: principal (number); annual_rate_percent (number, %); years (number, years); compounding_frequency (enum, optional); monthly_contribution (number, optional). Complete JSON argument examples: {"principal":10000,"annual_rate_percent":5,"years":10,"compounding_frequency":"monthly"} | {"principal":5000,"annual_rate_percent":6,"years":20,"compounding_frequency":"monthly","monthly_contribution":100} Outputs: final_balance, total_contributions, total_interest, effective_annual_rate_percent [%], growth_multiple. Formula: A = principal × (1 + r/n)^(n·years) with r = annual_rate_percent/100 and n periods per year. Contributions: i_m = (1 + r/n)^(n/12) − 1, m = 12·years, FV_contrib = monthly_contribution × ((1 + i_m)^m − 1) / i_m (m × contribution when r = 0). final_balance = A + FV_contrib. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/compound-interest with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/compound-interest.md

ParametersJSON Schema
NameRequiredDescriptionDefault
yearsYesLength of the investment in years; fractional years allowed (2.5 = 30 months). Unit: years.
principalYesStarting amount deposited or invested, in any currency.
annual_rate_percentYesNominal annual rate (APR) in percent; 5 means 5 %. Unit: %.
monthly_contributionNoOptional fixed deposit made at the end of every month, compounded at the effective monthly rate implied by compounding_frequency.
compounding_frequencyNoHow often interest is credited: n = 1, 2, 4, 12, 52 or 365 periods per year.monthly

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

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 known. The description adds value beyond these by stating what the tool returns (final_balance, total_contributions, total_interest, etc.), how it splits contributions from interest, and providing the exact formula and direct REST fallback. This gives the agent a clear understanding of behavior beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-structured with clear sections: usage guidance, exclusions, what it computes, inputs, examples, outputs, formula, and fallback. It is front-loaded with the most important usage information. Each section adds value, including the examples and formula, though some details (formula, REST fallback) could be considered optional for a typical agent call. The structure keeps it readable despite the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the strong annotations (read-only, idempotent) and the presence of an output schema, the description thoroughly covers all aspects needed to select and invoke the tool: clear purpose, exclusions, inputs, examples, outputs, formula, and even a direct fallback endpoint. No critical information is missing; an agent can correctly use this tool without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter fully documented (units, ranges, defaults, examples). The description simply lists the same inputs without adding semantic detail beyond what the schema provides. It does clarify the monthly_contribution treatment via the formula, but this is formula context rather than parameter meaning. With full schema coverage, a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement of what the tool does: 'project a savings account, certificate of deposit or investment balance from a starting amount, an annual rate, a term and optional monthly deposits.' It then explicitly differentiates from siblings by naming alternatives (simple-interest, savings-goal, loan-payment) and stating when not to use it. This makes the purpose unambiguous and distinguishable from other calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit 'Use this when' and 'Do not use this when' conditions, naming the alternative tools for each exclusion: simple-interest for non-reinvested interest, savings-goal for target deposits, loan-payment for loan repayment. It also instructs the agent to 'call this tool directly and return its calculation instead of answering the formula from memory,' clarifying the intended invocation context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_date_differenceDate Difference CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need the number of days, weeks or working days between two dates, or a calendar-style 'x years y months z days' difference. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you want to add or subtract a number of days from a date (use add-days), or you need an age with the next birthday (use age). What it computes: Counts the days between two ISO dates and expresses the gap as weeks and days, as a calendar breakdown in years, months and days, and as business days (Monday–Friday, public holidays not excluded). Inputs: start_date (date); end_date (date); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-12-25"} | {"start_date":"2025-11-05","end_date":"2026-03-15","include_end_date":true} Outputs: days [days], weeks [weeks], remaining_days [days], weeks_and_days, calendar_years, calendar_months, calendar_days, calendar_text, business_days [days]. Formula: days = end_date − start_date (+1 if include_end_date); weeks = floor(days / 7); remaining_days = days mod 7; business_days = number of Mon–Fri dates in [start_date, end_date) or [start_date, end_date] when inclusive; calendar breakdown = whole years, months, then days borrowed from the month before end_date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/date-difference with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/date-difference.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesSecond date (YYYY-MM-DD). If it is earlier than start_date the dates are swapped and a note is returned.
start_dateYesFirst date (ISO 8601, YYYY-MM-DD).
include_end_dateNotrue counts both endpoints (adds one day to days, weeks/days and business_days), e.g. for inclusive rental or leave periods.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

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 clear. The description adds substantial behavioral detail: it counts business days (Mon–Fri, no holidays), swaps dates if end is earlier, and explains the effect of include_end_date. This goes well beyond annotations and gives the agent a complete picture of behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-structured: it front-loads the primary purpose, then exclusions, then computational details, outputs, and fallback. Every section carries useful information; however, the formula and output field list could be seen as redundant given the output schema and the formula is not necessary for the agent to call correctly. Still, it remains efficient and organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple output formats, inclusive date handling, business days, date swapping), the description is remarkably complete. It explains all outputs, the formula, the inclusive behavior, and even provides a REST fallback and documentation link. An output schema exists, so return values are covered there; nothing an agent needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema descriptions are already detailed (e.g., include_end_date explains 'true counts both endpoints...'). The description largely repeats the parameter meanings and adds complete JSON examples, which are helpful but not semantically new. Per calibration, with full schema coverage the baseline is 3, and the description does not elevate it further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement of what the tool does: 'the number of days, weeks or working days between two dates, or a calendar-style difference.' It uses a specific verb ('calculate'), names the resource (dates), and explicitly distinguishes from siblings by naming add-days and age. This leaves no ambiguity about the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance ('Use this when you need...') and when-not-to-use guidance ('Do not use this when you want to add or subtract... use add-days, or you need an age... use age'). It also provides direct REST fallback and a docs link, covering alternatives and edge-case behavior thoroughly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_depth_of_fieldDepth of Field CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need to know how much of a scene is acceptably sharp for given camera settings, or how far sharpness extends in front of and behind the focused subject. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only need the focus distance that maximises depth of field (use hyperfocal-distance), or you shoot macro above about 0.2× magnification where lens extension and pupil magnification make the thin-lens equations inaccurate. What it computes: Computes the near and far limits of acceptable sharpness, the total depth of field and the hyperfocal distance from focal length, f-number, focus distance and the sensor's circle of confusion, using the standard thin-lens depth-of-field equations. Inputs: focal_length_mm (number, mm); aperture_f (number); focus_distance_m (number, m); sensor (enum, optional); coc_mm (number, mm, optional). Complete JSON argument examples: {"focal_length_mm":50,"aperture_f":2.8,"focus_distance_m":3,"sensor":"full_frame"} | {"focal_length_mm":24,"aperture_f":8,"focus_distance_m":5,"sensor":"full_frame"} Outputs: hyperfocal_m [m], near_limit_m [m], far_limit_m [m], far_limit_text, total_dof_m [m], in_front_of_subject_m [m], behind_subject_m [m], coc_used_mm [mm]. Formula: H = f² / (N·c) + f; near = s·(H − f) / (H + s − 2f); far = s·(H − f) / (H − s) when s < H, otherwise infinity (f = focal_length_mm, N = aperture_f, c = coc_mm, s = focus_distance_m × 1000, all in mm) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/depth-of-field with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/photography/depth-of-field.md

ParametersJSON Schema
NameRequiredDescriptionDefault
coc_mmNoOptional acceptable circle-of-confusion diameter; overrides the preset value (full frame 0.030, APS-C 0.020, Micro Four Thirds 0.015, 1-inch 0.011 mm). Unit: mm.
sensorNoSensor format; selects the circle of confusion (0.030 mm full frame, 0.020 mm APS-C, 0.015 mm Micro Four Thirds ...).full_frame
aperture_fYesLens f-number, e.g. 2.8 for f/2.8.
focal_length_mmYesActual (not equivalent) focal length of the lens in millimetres. Unit: mm.
focus_distance_mYesDistance from the camera's sensor plane to the focused subject in metres. Unit: m.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context: it uses standard thin-lens equations, becomes inaccurate at macro magnifications, and can return infinity for the far limit. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and front-loads usage guidance. It is lengthy, and the JSON examples partly duplicate schema examples, but the formula, output list, and REST fallback all carry useful information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a calculator with a rich output schema, complete parameter schema, and full annotations, the description covers when to use it, what it computes, inputs, outputs, formula behavior, and a REST fallback. Edge cases like hyperfocal infinity are also noted, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with units, ranges, defaults, and enums already documented for all parameters. The description lists the inputs and marks which are optional, but adds little meaning beyond the schema, so the baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('computes') and names the exact outputs: near/far limits, total depth of field, and hyperfocal distance. This clearly distinguishes it from the many generic calculate_* sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says 'Use this when...' and 'Do not use this when...', giving concrete conditions and naming an alternative calculator (hyperfocal-distance). This leaves no ambiguity about when to invoke this tool versus another.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_descriptive_statisticsDescriptive Statistics CalculatorA
Read-onlyIdempotent
Inspect

Use this when you have a set of numeric observations and need its central tendency, spread or quartiles, e.g. the standard deviation of a data set. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a single percentile or the percentile rank of one value (use percentile), a standardised score (use z-score), or statistics of two paired variables (use correlation or linear-regression). What it computes: Computes summary statistics for a list of numbers: count, sum, mean, median, mode, range, sample and population variance and standard deviation, standard error, coefficient of variation, quartiles (linear interpolation) and skewness. Inputs: values (number_list). Complete JSON argument examples: {"values":[2,4,4,4,5,5,7,9]} | {"values":[4,8,15,16,23,42]} Outputs: count, sum, mean, median, mode, mode_count, min, max, range, sample_variance, sample_std_dev, population_variance, population_std_dev, standard_error, coefficient_of_variation_percent [%], q1, q3, iqr, skewness. Formula: mean = Σx / n; sample_variance = Σ(x − mean)² / (n − 1); population_variance = Σ(x − mean)² / n; standard_error = s / √n; CV% = 100·s / mean; quartile at p: rank = p·(n − 1), value = x(⌊rank⌋) + (rank − ⌊rank⌋)·(x(⌊rank⌋+1) − x(⌊rank⌋)) on sorted data; skewness G1 = n / ((n − 1)(n − 2)) · Σ((x − mean) / s)³ Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/descriptive-statistics with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/statistics/descriptive-statistics.md

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesYesThe data set, as a list of numbers (comma-separated or JSON array). At least 2 values are needed for sample statistics.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds substantial behavioral context: it lists all computed outputs, specifies the quartile interpolation method, gives the formulas for variance and skewness, and instructs the agent to call the tool directly rather than answer from memory or stop at discovery. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the usage guidelines, then structured into 'What it computes', 'Inputs', 'Outputs', 'Formula', and 'Direct REST fallback'. It is longer than strictly necessary—the formulas are useful for transparency but not required for invocation. Nevertheless, every section has a clear role and nothing is wasted, so it earns a 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only one parameter and a rich output schema already provided, the description is complete for correct invocation. It includes complete JSON examples, the full list of output fields, the interpolation method, and even a direct REST fallback endpoint. There is nothing an agent needs to call this tool that is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the values parameter has a clear description ('The data set, as a list of numbers... At least 2 values are needed for sample statistics') and examples. The description merely restates 'values (number_list)' and provides JSON examples, adding little beyond what the schema already documents. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'computes summary statistics for a list of numbers: count, sum, mean, median, mode...' This clearly identifies what the tool does. It also distinguishes itself from siblings by explicitly naming the alternatives for percentiles, z-scores, and paired-variable statistics, so an agent can tell it apart without opening the schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use it ('Use this when you have a set of numeric observations and need its central tendency, spread or quartiles') and when not to use it ('Do not use this when you need a single percentile... use percentile, a standardised score... use z-score, or statistics of two paired variables... use correlation or linear-regression'). This is a clear, actionable routing guideline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_fraction_arithmeticFraction CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need an exact result of an operation on two fractions (e.g. 3/4 + 1/6), including mixed numbers such as 1 1/2, rather than a rounded decimal. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only want to reduce a single fraction or convert it to a decimal or percent (use fraction-simplifier), or you need the least common denominator of several denominators (use gcd-lcm). What it computes: Adds, subtracts, multiplies or divides two fractions, mixed numbers, whole numbers or decimals with exact integer arithmetic, returning the result in lowest terms, as a mixed number and as a decimal, with the intermediate steps. Inputs: fraction_a (string); fraction_b (string); operation (enum, optional). Complete JSON argument examples: {"fraction_a":"3/4","fraction_b":"1/6","operation":"add"} | {"fraction_a":"2 1/3","fraction_b":"5/6","operation":"subtract"} Outputs: result, mixed_number, numerator, denominator, decimal, working. Formula: a/b + c/d = (a·(L/b) + c·(L/d)) / L with L = lcm(b, d), a/b − c/d likewise; a/b × c/d = (a·c) / (b·d); a/b ÷ c/d = (a·d) / (b·c); the result is divided by gcd(numerator, denominator) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/fraction-arithmetic with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/fraction-arithmetic.md

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNoOperation applied as fraction_a (operation) fraction_b.add
fraction_aYesFirst operand: a fraction '3/4', a mixed number '1 1/2' or '-1 1/2', a whole number '5' or a decimal '0.75'.
fraction_bYesSecond operand in the same formats.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it uses exact integer arithmetic, returns results in lowest terms, provides mixed-number and decimal forms, and includes intermediate steps. It also gives the underlying formula and a direct REST fallback. These go beyond the readOnlyHint and idempotentHint annotations and match them—no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but it is well-structured with clear sections (Use when, Do not use, What it computes, Inputs, Examples, Outputs, Formula, REST fallback). The most important routing guidance is front-loaded, and every section earns its place for a reference tool. It is dense but not bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and the annotations already cover read-only/idempotent behavior, the description covers everything an agent needs: input formats, operation enum, output fields, formula, a direct REST fallback, and documentation link. Nothing critical is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes all three parameters with 100% coverage, so the baseline is 3. The description adds value by spelling out accepted input formats (fractions, mixed numbers, whole numbers, decimals, negatives), providing two complete JSON examples, and explaining the operation semantics. It does not fully repeat the schema but does reinforce and expand on it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise use-case ('exact result of an operation on two fractions, including mixed numbers') and names the specific resource and operation. It explicitly distinguishes itself from related tools like fraction-simplifier and gcd-lcm, so an agent can immediately tell this from sibling calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use ('Call this tool directly and return its calculation') and when-not-to-use guidance, naming alternative tools for reducing a fraction, converting to decimal/percent, and finding the LCD. It also warns against answering from memory, which is actionable for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_haversine_distanceHaversine Distance CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need the straight-line distance between two GPS coordinates or cities, e.g. for flight distance, range checks or geofencing. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need road distance, or ellipsoidal accuracy better than about 0.5 % (use a geodesic method such as Vincenty or Karney on WGS-84); for bearings and compass points use compass-bearing. What it computes: Computes the great-circle (as-the-crow-flies) distance between two points on a spherical Earth with the haversine formula, in kilometres, miles and nautical miles, together with the initial bearing, compass direction and the midpoint of the route. Inputs: lat1 (number, °); lon1 (number, °); lat2 (number, °); lon2 (number, °). Complete JSON argument examples: {"lat1":-33.8688,"lon1":151.2093,"lat2":35.6762,"lon2":139.6503} | {"lat1":50.06639,"lon1":-5.71472,"lat2":58.64389,"lon2":-3.07} Outputs: distance_km [km], distance_miles [mi], distance_nautical_miles [nmi], central_angle_degrees [°], initial_bearing_degrees [°], compass_direction, midpoint_lat [°], midpoint_lon [°]. Formula: a = sin²(Δφ/2) + cos φ1 · cos φ2 · sin²(Δλ/2); c = 2 · atan2(√a, √(1−a)); d = R · c with R = 6371.0088 km; θ = atan2(sin Δλ · cos φ2, cos φ1 · sin φ2 − sin φ1 · cos φ2 · cos Δλ) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/haversine-distance with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/haversine-distance.md

ParametersJSON Schema
NameRequiredDescriptionDefault
lat1YesLatitude of point 1 in decimal degrees (north positive, south negative). Unit: °.
lat2YesLatitude of point 2 in decimal degrees (north positive, south negative). Unit: °.
lon1YesLongitude of point 1 in decimal degrees (east positive, west negative). Unit: °.
lon2YesLongitude of point 2 in decimal degrees (east positive, west negative). Unit: °.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value beyond these by disclosing the spherical-Earth assumption, ~0.5% accuracy limitation, the set of computed outputs (distance, bearing, compass direction, midpoint), and a direct REST fallback with an explicit path. This is rich behavioral context that complements the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (usage, exclusions, computation, inputs, outputs, formula, REST fallback) and front-loaded with usage guidance. It is somewhat verbose—the full formula and REST fallback may be extra for an agent—but every sentence serves a purpose, and the structure aids navigation. Minor over-specification keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is a pure read-only calculator with a rich output schema, so return values are already covered. The description adds all necessary context: when to use, exclusions, input units, output units, and a direct REST fallback with a fixed path. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter already documented (units, bounds, examples). The description merely restates the parameters in a bullet list ('Inputs: lat1 (number, °); ...') without adding new semantics beyond the schema. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific verb+resource statement: 'Use this when you need the straight-line distance between two GPS coordinates or cities.' It explicitly lists use cases (flight distance, range checks, geofencing) and distinguishes from road distance, geodesic methods, and bearings. This fully separates it from siblings without requiring schema inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use and when-not-to-use guidance, naming alternatives (Vincenty/Karney, compass-bearing) and the conditions that select them. It also instructs the agent to call this tool directly rather than answering from memory or stopping at discovery. No ambiguity remains.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_kinetic_energyKinetic Energy CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need the energy of motion of an object of known mass and speed (vehicle, projectile, ball), for example to compare impact or braking energies. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when rotation contributes significantly (rotational energy ½·I·ω² is not included), speeds approach the speed of light (relativistic formula needed), or you need energy from height (use potential-energy). What it computes: Computes the translational kinetic energy of a moving mass from KE = ½·m·v², reported in joules, kilojoules, kilowatt-hours and kilocalories. Inputs: mass_kg (number, kg); velocity_m_s (number, m/s). Complete JSON argument examples: {"mass_kg":1200,"velocity_m_s":25} | {"mass_kg":0.145,"velocity_m_s":40} Outputs: kinetic_energy_j [J], kinetic_energy_kj [kJ], kinetic_energy_kwh [kWh], kinetic_energy_kcal [kcal], velocity_km_h [km/h]. Formula: KE = ½ × mass_kg × velocity_m_s²; kJ = J / 1000; kWh = J / 3,600,000; kcal = J / 4184 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kinetic-energy with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/physics/kinetic-energy.md

ParametersJSON Schema
NameRequiredDescriptionDefault
mass_kgYesMass of the moving object in kilograms. Unit: kg.
velocity_m_sYesSpeed in metres per second (km/h ÷ 3.6, mph × 0.44704). Limited to 10 % of the speed of light, below which the classical formula is accurate to within 1 %. Unit: m/s.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description adds meaningful behavioral context: it discloses the exact computation, the output units (J, kJ, kWh, kcal, km/h), and that rotational/relativistic effects are ignored. It also indicates the tool returns a calculation and should be used rather than the agent doing the math itself.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized with front-loaded usage guidance, followed by 'what it computes', inputs, outputs, formula, REST fallback, and docs. Each section is concise and adds a distinct type of information; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of a two-parameter pure calculation, the description covers all necessary aspects: when to use, exclusions, formula, units, examples, and output fields. With an output schema present, nothing needed to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has full description coverage (100%) with units, examples, min/max constraints, and conversion hints. The description's parameter list and JSON examples largely restate the schema, adding little new parameter-level meaning beyond the formula context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states a specific verb and resource: it 'computes translational kinetic energy' using KE = ½·m·v². It clearly differentiates from related physics calculations by listing exclusions (rotational motion, relativistic speeds, gravitational potential energy), which distinguishes it from sibling calculators even without naming one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('when you need the energy of motion of an object of known mass and speed...'), when not to use (rotation significant, near light speed, energy from height), and even names an alternative for height ('use potential-energy'). It also instructs the agent to call the tool directly instead of answering from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_loan_paymentLoan Payment CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need the monthly payment or total interest cost of an auto, personal, student or other fixed-rate installment loan given its amount, APR and term. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need property tax, insurance and HOA in the payment (use mortgage-payment), or you know the payment and want the payoff time (use debt-payoff). What it computes: Computes the level monthly payment of a fully amortizing fixed-rate loan from principal, annual rate and term, plus the total paid and total interest over the life of the loan. Example user requests: For a 100000 loan at 6% fixed for 5 years, calculate the monthly payment and total interest. | What will I pay each month on a 420000 loan at 6.15% for 25 years? | 6000 元零利率分 12 个月偿还,每月和总计是多少? Inputs: principal (number); annual_rate_percent (number, %); term_years (number, years, optional); term_months (integer, months, optional). Valid input combinations: Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together. Complete JSON argument examples: {"principal":200000,"annual_rate_percent":6,"term_years":30} | {"principal":25000,"annual_rate_percent":7,"term_months":60} Outputs: monthly_payment, number_of_payments, total_payment, total_interest, payoff_summary. Formula: i = annual_rate_percent / 1200; n = 12·term_years + term_months; monthly_payment = principal × i / (1 − (1 + i)^−n); if i = 0, monthly_payment = principal / n. total_payment = monthly_payment × n; total_interest = total_payment − principal. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/loan-payment with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/loan-payment.md

ParametersJSON Schema
NameRequiredDescriptionDefault
principalYesAmount borrowed.
term_yearsNoLoan term in years; fractional values allowed. Added to term_months when both are given. Unit: years.
term_monthsNoAdditional months of term (e.g. term_months=60 alone for a 5-year auto loan). Unit: months.
annual_rate_percentYesNominal annual rate in percent; the monthly rate is this / 12. 0 is allowed for interest-free loans. Unit: %.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, destructiveHint false), the description discloses what the tool computes: level monthly payment, total paid, total interest, and the zero-rate edge case. It also includes the exact formula, which lets an agent predict and validate the tool's behavior without invoking it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and usage guidance, and the labeled sections make it easy to scan. It is somewhat long due to the formula, examples, and REST fallback, but each section serves a practical purpose for selecting and invoking the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter calculator with an output schema, the description covers invocation semantics, valid parameter combinations, zero-rate handling, output fields, examples, and even a direct REST fallback. Nothing an agent needs to construct a valid request is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so the baseline is 3. The description adds value by plainly stating the valid input combinations (term_years, term_months, or both added together) and providing complete JSON examples. It clarifies optionality and the interaction between the two term parameters more directly than the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names a specific verb and resource: calculating the monthly payment or total interest cost of a fixed-rate installment loan. It also distinguishes the tool from siblings by covering auto, personal, and student loans while explicitly excluding mortgage-related and payoff-time calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('Use this when you need the monthly payment or total interest cost...'), when not to use it (property tax/insurance/HOA, payoff time), and names the alternatives ('mortgage-payment', 'debt-payoff'). It also instructs the agent to call this tool directly rather than computing the formula from memory or stopping at discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_molar_massMolar Mass CalculatorA
Read-onlyIdempotent
Inspect

Use this when you have a chemical formula and need its molar mass (molecular weight), the number of atoms of each element, or its elemental mass-percent composition. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you already know the molar mass and want to convert between grams and moles (use moles-mass) or need a solution concentration (use molarity). What it computes: Parses a chemical formula (including brackets, nested groups and hydrates) and sums IUPAC 2021 standard atomic weights to give the molar mass in g/mol, plus the atom count and mass-percent composition of each element. Inputs: formula (string). Complete JSON argument examples: {"formula":"C6H12O6"} | {"formula":"CuSO4·5H2O"} Outputs: molar_mass_g_mol [g/mol], molecular_mass_da [Da], atom_count, element_count, composition. Formula: molar_mass = Σ (atomic_weight_i × count_i); mass_fraction_percent_i = 100 × atomic_weight_i × count_i / molar_mass Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/molar-mass with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/chemistry/molar-mass.md

ParametersJSON Schema
NameRequiredDescriptionDefault
formulaYesChemical formula with case-sensitive element symbols, integer subscripts, brackets and optional hydrate dot, e.g. C6H12O6, Ca(OH)2, Fe2(SO4)3, CuSO4·5H2O. A trailing charge (NH4+, SO4^2-) or state (aq) is ignored.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

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 behavior beyond annotations: it parses brackets, nested groups, hydrates, ignores trailing charges/states, uses IUPAC 2021 atomic weights, and explains what outputs are produced. No contradiction exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured and front-loaded with the core usage rule, then computation details, inputs, outputs, formula, and REST fallback. Each section earns its place, though the redundant formula examples and repeated 'formula (string)' could have been trimmed slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for this tool's complexity: it covers when to use it, what it computes, supported formula syntax, output names, the calculation formula, and a direct REST fallback with an explicit endpoint. The presence of an output schema means return values need not be fully described, but the description goes beyond that anyway.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema itself thoroughly documents the formula parameter with examples and edge-case handling (case-sensitive symbols, brackets, hydrates, ignored charges). The description only repeats 'formula (string)' and adds no new parameter-level semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: given a chemical formula, compute molar mass, atom counts, and mass-percent composition. It distinguishes this tool from moles-mass conversion and molarity calculation, and it is not confused with the dozens of other calculator siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool ('Use this when you have a chemical formula and need its molar mass...') and when not to use it, naming alternatives (moles-mass, molarity). It also instructs the agent to call the tool directly rather than answering from memory, which is strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_mortgage_paymentMortgage Payment CalculatorA
Read-onlyIdempotent
Inspect

Use this when you want the monthly cost of buying a home with a fixed-rate mortgage, including escrowed taxes and insurance, or the total interest over the loan. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the loan is adjustable-rate or interest-only, or you only need the payment on a plain loan amount (use loan-payment). What it computes: Computes the monthly principal-and-interest payment of a fixed-rate mortgage from home price, down payment, rate and term, then adds property tax, home insurance and HOA dues to give the full monthly housing payment and lifetime interest. Inputs: home_price (number); down_payment (number, optional); annual_rate_percent (number, %); term_years (number, years, optional); annual_property_tax (number, optional); annual_home_insurance (number, optional); monthly_hoa (number, optional). Complete JSON argument examples: {"home_price":250000,"down_payment":50000,"annual_rate_percent":6,"term_years":30,"annual_property_tax":3000,"annual_home_insurance":1200} | {"home_price":400000,"down_payment":80000,"annual_rate_percent":6.5,"term_years":30} Outputs: loan_amount, loan_to_value_percent [%], monthly_principal_and_interest, monthly_property_tax, monthly_insurance, monthly_hoa_fee, total_monthly_payment, number_of_payments, total_interest, total_of_payments, payoff_summary. Formula: loan_amount = home_price − down_payment; i = annual_rate_percent / 1200; n = 12·term_years; P&I = loan_amount × i / (1 − (1 + i)^−n) (loan_amount / n if i = 0); total_monthly_payment = P&I + annual_property_tax/12 + annual_home_insurance/12 + monthly_hoa. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/mortgage-payment with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/mortgage-payment.md

ParametersJSON Schema
NameRequiredDescriptionDefault
home_priceYesPurchase price of the property.
term_yearsNoLoan term in years (30 and 15 are the common US terms). Unit: years.
monthly_hoaNoMonthly homeowners-association or condo fee.
down_paymentNoCash paid up front; loan_amount = home_price − down_payment. For 20 % of a 250,000 home enter 50000.
annual_property_taxNoYearly property tax; one twelfth is added to the monthly payment.
annual_rate_percentYesFixed note rate in percent; the monthly rate is this / 12. Unit: %.
annual_home_insuranceNoYearly homeowners insurance premium; one twelfth is added monthly.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower, and the description still adds substantial behavioral detail: the exact formula including the i=0 edge case, the complete output field list, and a direct REST fallback path with an explicit warning not to guess /api/* routes. This fully reveals what the computation does and how it derives each value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (formula, outputs, REST fallback, docs link) but organized into clearly labeled sections with the trigger language front-loaded. Every block earns its place for a 7-parameter financial tool; only the Inputs and examples sections partially duplicate what the schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, an output schema, and a live REST fallback, the description covers trigger criteria, exclusions, inputs, outputs, the exact formula, and the fallback endpoint. Since an output schema exists, return values need no further explanation. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 Inputs list largely restates the schema, but the Formula section adds inter-parameter relationships not captured per-field — loan_amount = home_price − down_payment, the monthly rate conversion, and how taxes/insurance/HOA combine into total_monthly_payment. The worked JSON examples reinforce correct usage. Modest but real value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with an explicit trigger: 'the monthly cost of buying a home with a fixed-rate mortgage, including escrowed taxes and insurance, or the total interest over the loan.' The 'What it computes' paragraph spells out the P&I calculation plus added tax/insurance/HOA, and the do-not-use clause differentiates it from loan-payment. An agent can select this tool without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides both an explicit when-to-use trigger and an explicit when-not-to-use exclusion: 'Do not use this when the loan is adjustable-rate or interest-only, or you only need the payment on a plain loan amount (use loan-payment).' It also instructs the agent to call the tool directly and return its calculation rather than answering from memory. No usage decision is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_percentagePercentage CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need a percentage of a value, the percentage one value represents of another, or the base value that a part and its percentage imply. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need the percentage change between two values (use percentage-change), a price after a percentage discount (use discount) or a tax amount (use sales-tax). What it computes: Solves the three basic percentage questions (a percentage of a number, what percentage one number is of another, and the whole behind a known part and percentage). Always returns the part, the whole and the percent. Inputs: mode (enum, optional); x (number); y (number). Complete JSON argument examples: {"mode":"percent_of","x":15,"y":240} | {"mode":"is_what_percent","x":30,"y":120} Outputs: result, sentence, part, whole, percent [%]. Formula: percent_of: result = x / 100 × y. is_what_percent: result = x / y × 100. percent_of_what: result = x / (y / 100). In every mode part = percent × whole / 100. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/percentage with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/percentage.md

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesFirst number: the percent (percent_of) or the part (is_what_percent, percent_of_what). Percents are plain numbers, 15 means 15%.
yYesSecond number: the whole (percent_of, is_what_percent) or the percent (percent_of_what).
modeNoWhich percentage question to solve; x and y take the meaning shown in the label of the chosen mode.percent_of

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A5/5.0
Behavior5/5

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 description's additional detail is genuinely additive. It discloses that the tool always returns part, whole, and percent, provides the exact formulas per mode, and gives a REST fallback path, going well beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every section earns its place: usage conditions, exclusions, computation summary, inputs, examples, outputs, formulas, REST fallback, and docs. It is front-loaded with the use case and uses clear section labels, making it easy for an agent to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-mode calculator with an output schema, the description is complete: it covers all modes, parameter semantics, formulas, example payloads, and even a fallback REST endpoint. An agent has everything needed to invoke it correctly without external inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning: it maps each mode to a formula, explains how x and y change roles per mode, and provides complete JSON examples. This clarifies parameter semantics far beyond the schema's property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('calculate') and resource (percentage) and enumerates the three exact question types it solves. It also explicitly distinguishes itself from sibling tools like percentage-change, discount, and sales-tax, so an agent can select it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit 'Use this when' conditions and an explicit 'Do not use this when' section naming the correct alternatives for percentage change, discounts, and tax. This is model guidance for when to invoke the tool versus a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_percentage_changePercentage Change CalculatorA
Read-onlyIdempotent
Inspect

Use this when you have a starting and an ending value and need the percentage increase or decrease, or a symmetric percent difference between two comparable values. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a percentage of a number (use percentage), an annualised growth rate over several years (use cagr) or an investment return (use roi). What it computes: Computes the relative change from an old value to a new value as a percentage, the signed absolute change, the new/old ratio and the symmetric percent difference. Inputs: old_value (number); new_value (number). Complete JSON argument examples: {"old_value":50,"new_value":65} | {"old_value":80,"new_value":60} Outputs: change_percent [%], absolute_change, direction, ratio, percent_difference [%]. Formula: change_percent = (new_value − old_value) / |old_value| × 100; percent_difference = |new_value − old_value| / ((|new_value| + |old_value|) / 2) × 100 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/percentage-change with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/percentage-change.md

ParametersJSON Schema
NameRequiredDescriptionDefault
new_valueYesEnding value.
old_valueYesStarting (reference) value. Must not be 0.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds meaningful behavioral context beyond that: the exact formula, the computed output fields, and a direct REST fallback path. It clearly frames the tool as a pure calculation with no side effects, and nothing contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections and front-loaded usage guidance. It is longer than strictly necessary because it repeats output field names and formulas that are also visible in the output schema, but the organization and examples keep it readable and still informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter calculator with complete schema descriptions, output schema, and read-only annotations, the description covers everything: when to use, when not to use, input semantics, examples, formula, output names, and even a REST fallback. An agent has no need to infer missing details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes new_value as 'Ending value' and old_value as 'Starting (reference) value. Must not be 0.' The description repeats the parameter names and supplies JSON examples, but it does not add substantial semantic meaning beyond the schema beyond the formula context, which is already enough to understand usage. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool computes relative change, signed absolute change, ratio, and symmetric percent difference between old and new values, and includes the exact formula. It also distinguishes itself from calculate_percentage and other sibling calculators, so an agent can tell exactly what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It opens with an explicit 'Use this when...' condition and gives explicit exclusions: 'Do not use this when you need a percentage of a number (use percentage), an annualised growth rate... (use cagr) or an investment return (use roi).' It also instructs the agent to call the tool directly rather than answering from memory, which removes ambiguity about invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_running_paceRunning Pace CalculatorA
Read-onlyIdempotent
Inspect

Use this when you know a distance and the time it took (or a target time) and need the pace, the equivalent speed, or the time that pace gives over standard race distances. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you want a realistic prediction of a longer race from a shorter one (pace slows with distance; use race-time-predictor), or you only need to convert between pace and speed units (use pace-converter). What it computes: Computes running pace in min/km and min/mile and speed in km/h and mph from a distance and elapsed time, and projects the finish time for 5 km, 10 km, half marathon and marathon at that constant pace. Inputs: distance (number); distance_unit (enum, optional); time (string). Complete JSON argument examples: {"distance":10,"distance_unit":"km","time":"50:00"} | {"distance":5,"distance_unit":"mi","time":"45:00"} Outputs: pace_min_per_km [min:sec/km], pace_min_per_mile [min:sec/mi], pace_seconds_per_km [s/km], speed_kmh [km/h], speed_mph [mph], distance_km [km], time_5k [h:mm:ss], time_10k [h:mm:ss], time_half_marathon [h:mm:ss], time_marathon [h:mm:ss]. Formula: pace_s_per_km = time_seconds / distance_km; pace_s_per_mile = pace_s_per_km × 1.609344; speed_kmh = 3600 / pace_s_per_km; speed_mph = speed_kmh / 1.609344; time(D) = pace_s_per_km × D for D = 5, 10, 21.0975, 42.195 km Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/running-pace with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/fitness/running-pace.md

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYesElapsed time as h:mm:ss (1:45:00), mm:ss (50:00) or plain minutes (50).
distanceYesDistance covered, in the unit given by distance_unit.
distance_unitNoUnit of the distance input.km

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, and the description adds behavioral context beyond that: it instructs the agent to 'Call this tool directly and return its calculation instead of answering the formula from memory,' and it discloses the exact formula and output fields. It also provides a REST fallback and docs link. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-structured with clear sections (use when, do not use, computes, inputs, examples, outputs, formula, fallback). The usage guidance is front-loaded. The formula and REST fallback sections are arguably beyond what an MCP description needs, but they are organized and not redundant with the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter calculator with an output schema and read-only annotations, this description is complete: it covers when to use, what it computes, all inputs with examples, all output fields, the underlying formula, and even a direct REST fallback. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (all three parameters have descriptions), so the description doesn't need to redefine them. It adds value by giving complete JSON argument examples and a formula that ties distance, time, and outputs together. The only small gap is that it doesn't explicitly restate the time format, but the schema already covers that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise use case ('know a distance and the time... need the pace, the equivalent speed, or the time that pace gives over standard race distances') and then states exactly what it computes: pace in min/km and min/mile, speed in km/h and mph, and projected finish times for standard distances. This clearly distinguishes it from sibling calculators by naming the specific resource.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when' and 'Do not use this when' sections with named alternatives (race-time-predictor, pace-converter). The agent is told exactly when to call this tool and when to route elsewhere. This is the gold standard for usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_subnetIP Subnet CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need to know which subnet an IPv4 address belongs to, the host range and count of a /prefix, or the mask equivalent of a prefix length. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the address is IPv6, you want to split a block into several subnets (VLSM planning), or you only need a number in binary or hex (use base-converter). What it computes: Computes the network and broadcast addresses, subnet and wildcard masks, first and last host, usable and total addresses, address class and RFC 1918 private status for an IPv4 address in CIDR notation or with a dotted subnet mask, using 32-bit unsigned arithmetic. Inputs: cidr (string). Complete JSON argument examples: {"cidr":"192.168.1.10/26"} | {"cidr":"10.0.0.0 255.0.0.0"} Outputs: ip_address, cidr_notation, network_address, broadcast_address, subnet_mask, wildcard_mask, prefix_length [bits], host_bits [bits], first_host, last_host, usable_hosts, total_addresses, ip_class, is_private, address_scope, binary_mask, binary_address, ip_integer. Formula: mask = 2^32 − 2^(32 − prefix); network = ip AND mask; broadcast = network OR NOT mask; total = 2^(32 − prefix); usable = total − 2 (prefix ≤ 30), 2 (prefix 31), 1 (prefix 32) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/subnet-calculator with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/developer/subnet-calculator.md

ParametersJSON Schema
NameRequiredDescriptionDefault
cidrYesIPv4 address followed by /prefix (0–32) or by a dotted subnet mask separated by a space or slash, e.g. 192.168.1.10/26 or 192.168.1.10 255.255.255.192.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds substantial context beyond that: the exact formula for mask/network/broadcast, the use of 32-bit unsigned arithmetic, the list of all output fields, and a direct REST fallback URL. It also specifies the error-free expectation of returning the calculation rather than reasoning from memory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (usage, computation details, inputs, outputs, formula, fallback). It's a bit long but every section earns its place—the formula and REST fallback are critical operational details. It's front-loaded with the usage guidance, so the agent gets the decision-relevant info first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter calculator with an output schema, the description is complete. It covers when to use, what it computes, the exact inputs with examples, the full output list, the underlying formula, and even a direct REST fallback with documentation link. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a thorough description of 'cidr' with examples and maxLength (coverage 100%). The description adds value by restating the two accepted formats (CIDR notation or dotted mask separated by space/slash) and providing complete JSON examples, reinforcing schema semantics without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with an explicit verb-resource pair: 'know which subnet an IPv4 address belongs to, the host range and count of a /prefix, or the mask equivalent of a prefix length.' It also explicitly contrasts with sibling tools (base-converter, VLSM planning), making its scope unambiguous even among 50+ calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when to use ('Use this when you need to know...') and when NOT to use ('Do not use this when the address is IPv6... or only need a number in binary/hex (use base-converter)'). This explicit routing to alternatives leaves no ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_tdeeTDEE CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need daily maintenance calories for an adult, or calorie targets for a mild/standard deficit or surplus. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the person is a child, pregnant or breastfeeding, or you only need the resting rate (use bmr). What it computes: Estimates total daily energy expenditure from Mifflin-St Jeor BMR and an activity level, and derives calorie targets for maintaining, losing or gaining weight. Inputs: sex (enum); weight_kg (number, kg); height_cm (number, cm); age_years (number, years); activity_level (enum, optional). Complete JSON argument examples: {"sex":"male","weight_kg":70,"height_cm":175,"age_years":30,"activity_level":"moderate"} Outputs: bmr_kcal_per_day [kcal/day], activity_multiplier, tdee_kcal_per_day [kcal/day], mild_loss_kcal_per_day [kcal/day], loss_kcal_per_day [kcal/day], mild_gain_kcal_per_day [kcal/day], gain_kcal_per_day [kcal/day]. Formula: TDEE = BMR(Mifflin-St Jeor) × activity_multiplier; targets = TDEE ± 250 or ± 500 kcal/day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/tdee with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/tdee.md

ParametersJSON Schema
NameRequiredDescriptionDefault
sexYesBiological sex used to select the formula coefficients.
age_yearsYesAge in years. Unit: years.
height_cmYesHeight in centimetres. Unit: cm.
weight_kgYesBody weight in kilograms. Unit: kg.
activity_levelNoWeekly exercise level; maps to the standard activity multipliers 1.2 / 1.375 / 1.55 / 1.725 / 1.9.moderate

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

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 description carries a lower burden. It adds value by disclosing the underlying formula (Mifflin-St Jeor, activity multipliers), the specific output fields, and a direct REST fallback path. No contradictions 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: usage, exclusions, inputs, outputs, formula, fallback, and docs. It is front-loaded with the core purpose. Each sentence serves a purpose; the REST fallback and docs may be slightly beyond minimum need, but they aid correctness. Not overly verbose for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 params, 2 enums, multiple outputs), the description is thorough: it lists all output fields with units, provides a complete example, states the formula, gives a REST fallback, and links to docs. The output schema exists, so return-value details are covered; nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 a complete JSON argument example and explains the activity_level enum values with their multipliers, which enriches the schema but is not strictly necessary. This exceeds the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool computes TDEE from Mifflin-St Jeor BMR and activity level, and derives calorie targets for maintenance, loss, and gain. It explicitly distinguishes itself from calculate_bmr by saying 'use bmr' for resting rate, making it unique among many calculator siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use ('when you need daily maintenance calories for an adult, or calorie targets for a mild/standard deficit or surplus') and when-not-to-use conditions ('child, pregnant or breastfeeding, or you only need the resting rate'), and names the alternative tool (bmr). This is textbook usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_tipTip CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need to add a gratuity to a restaurant, delivery or service bill and optionally divide the total among several people. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when people pay for different items or unequal shares (use bill-split), or you need to add sales tax rather than a tip (use sales-tax). What it computes: Computes the tip from a bill amount and tip percentage, the total including tip, and the per-person share when the bill is split evenly. Inputs: bill_amount (number); tip_percent (number, %, optional); split_between (integer, optional). Complete JSON argument examples: {"bill_amount":85.5,"tip_percent":18,"split_between":3} | {"bill_amount":42,"tip_percent":20} Outputs: tip_amount, total_amount, total_per_person, tip_per_person, bill_per_person. Formula: tip_amount = bill_amount × tip_percent / 100; total_amount = bill_amount + tip_amount; per person = value / split_between Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/tip with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/tip.md

ParametersJSON Schema
NameRequiredDescriptionDefault
bill_amountYesAmount on the bill before tip (pre- or post-tax, as you prefer to tip).
tip_percentNoGratuity as a percent of bill_amount. US restaurant custom is 15–20 %. Unit: %.
split_betweenNoHow many people share the bill equally.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds behavioral context beyond that: it explicitly says the tool computes a tip and total, provides the formula, and warns to return the tool's calculation rather than deriving it manually. It also discloses a direct REST fallback path, which is extra transparency not present in annotations. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is thorough but well-structured, front-loading usage guidance before inputs and outputs. Every section earns its place: usage, exclusions, computation summary, input list, examples, output list, formula, and fallback. It is slightly long but not padded; the structure makes it scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (three parameters, one required, with a formula and output fields), the description is fully complete. It includes input names, types, optionality, default behaviors, complete JSON examples, output fields, the formula, and a direct REST fallback with explicit instruction not to guess other paths. There is an output schema signal, but the description independently covers return values, so no missing information for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all three parameters with descriptions, units, ranges, and examples. The description adds value by stating the formula (tip_amount = bill_amount × tip_percent / 100) and explicitly mapping output fields, which clarifies how the parameters are used and what the results mean. This goes beyond a simple restatement of schema properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb-and-resource statement: 'add a gratuity to a restaurant, delivery or service bill and optionally divide the total among several people.' It also names two distinct sibling tools (bill-split, sales-tax) and clarifies what it is not, so an agent can immediately distinguish it from nearby calculators like calculate_percentage or calculate_loan_payment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use ('Use this when...'), when not to use ('Do not use this when people pay for different items or unequal shares...'), and names the exact alternatives (bill-split, sales-tax). It also instructs to 'Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery,' leaving no ambiguity about invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_t_testT-Test CalculatorA
Read-onlyIdempotent
Inspect

Use this when you want to test whether a sample mean differs from a hypothesised value, whether two independent groups have different means, or whether paired before/after measurements changed. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the data are proportions or counts (use proportion-z-test or chi-square-test), you have three or more groups (ANOVA), or you already have t and df and only need the p-value (use p-value). What it computes: Runs a one-sample, Welch two-sample (unequal variances) or paired Student t-test from raw samples or summary statistics (mean, SD, n), returning t, degrees of freedom, two- and one-sided p-values, the confidence interval and the decision at the chosen alpha. Example user requests: Run a one-sample t-test for [102, 98, 105, 101, 104] against a mean of 100. | Compare two independent samples with Welch's t-test from their means, sample SDs and sample sizes. | Run a paired t-test on these before and after measurements in matching order. Inputs: mode (enum, optional); sample_a (number_list, optional); sample_b (number_list, optional); mean_a (number, optional); sd_a (number, optional); n_a (integer, optional); mean_b (number, optional); sd_b (number, optional); n_b (integer, optional); hypothesized_mean (number, optional); alpha (number, optional). Valid input combinations: one_sample: sample_a, or all of mean_a + sd_a + n_a. two_sample (also the default when mode is omitted): one complete raw-or-summary input for A and one for B. paired: both sample_a + sample_b, or paired-difference summary mean_a + sd_a + n_a. Do not mix a raw sample with its summary fields. Complete JSON argument examples: {"mode":"two_sample","sample_a":[5.1,4.9,5.6,5.8,6],"sample_b":[4.2,4.8,4.4,4.6,4.5]} | {"mode":"two_sample","mean_a":5.48,"sd_a":0.47117,"n_a":5,"mean_b":4.5,"sd_b":0.23452,"n_b":5} | {"mode":"one_sample","sample_a":[102,98,105,101,104],"hypothesized_mean":100} | {"mode":"paired","sample_a":[1.9,0.8,1.1,0.1,-0.1,4.4,5.5,1.6,4.6,3.4],"sample_b":[0.7,-1.6,-0.2,-1.2,-0.1,3.4,3.7,0.8,0,2]} | {"mode":"paired","mean_a":1.58,"sd_a":1.23042,"n_a":10} Outputs: test, mean_a, mean_b, mean_difference, standard_error, t_statistic, degrees_of_freedom, p_value_two_sided, p_value_one_sided, t_critical, ci_lower, ci_upper, significant, decision. Formula: one_sample: t = (x̄ − μ0) / (s / √n), df = n − 1. paired: same on the differences d = a − b. two_sample (Welch): t = (x̄a − x̄b − μ0) / √(sa²/na + sb²/nb), df = (sa²/na + sb²/nb)² / ((sa²/na)²/(na − 1) + (sb²/nb)²/(nb − 1)). p = P(|T_df| ≥ |t|); CI = estimate ± t(1 − alpha/2, df) × SE Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/t-test with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/statistics/t-test.md

ParametersJSON Schema
NameRequiredDescriptionDefault
n_aNoNumber of observations in A, or number of pairs.
n_bNoNumber of observations in B.
modeNoWhich t-test to run.two_sample
sd_aNoSample standard deviation (n − 1) of A, or of the paired differences.
sd_bNoSample standard deviation (n − 1) of B.
alphaNoSignificance level as a probability (0.05 = 5 %), not a percentage. Confidence intervals and critical values use level 1 − alpha.
mean_aNoSummary alternative to sample_a: sample mean of A (in paired mode: mean of the differences a − b).
mean_bNoSummary alternative to sample_b (two_sample only): sample mean of B.
sample_aNoRaw observations of the first (or only) sample. Alternatively give mean_a, sd_a and n_a.
sample_bNoRaw observations of the second sample (two_sample) or the paired partner values in the same order (paired). Alternatively give mean_b, sd_b and n_b.
hypothesized_meanNoNull-hypothesis value: the population mean (one_sample) or the mean difference (two_sample, paired). Usually 0 for differences.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds substantial behavioral context: what it computes, the formulas used, the outputs returned, the decision at chosen alpha, and a direct REST fallback with a warning not to guess paths. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but extremely well-structured: front-loaded with purpose and usage, then detailed sections for inputs, valid combinations, examples, outputs, formulas, and fallback. Every section earns its place; there is no filler. The organization makes complex information easily navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This tool has 11 parameters, conditional schema requirements, and an output schema. The description covers valid combinations, provides examples, explains the statistical formulas, lists outputs, and even gives a REST fallback and docs link. Given the complexity, the description is remarkably complete; nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (every parameter has a description), so the baseline is 3. However, the description adds significant value beyond the schema by explaining valid input combinations (one_sample, two_sample, paired), providing five complete JSON argument examples, and warning against mixing raw samples with summary fields. This greatly helps an agent construct correct calls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise statement of what the tool does: testing a sample mean against a hypothesized value, comparing two independent groups, or paired measurements. It explicitly names the three t-test variants (one-sample, Welch two-sample, paired) and differentiates from siblings by listing when NOT to use it (proportions, counts, 3+ groups, existing t/df). This is a specific verb+resource with clear sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'Use this when' and 'Do not use this when' instructions, naming alternatives (proportion-z-test, chi-square-test, ANOVA, p-value tool). It also gives example user requests that illustrate the intended use cases. This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

cast_plum_blossom_hexagramPlum Blossom Numerology (梅花易数)A
Read-onlyIdempotent
Inspect

Use this when you need a Plum Blossom hexagram cast for a moment or from numbers, with the upper/lower trigram arithmetic, the moving line and the 体/用 five-element reading laid out step by step. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you already have six lines from coins or yarrow (use liuyao for a 六爻 chart or hexagram-change for plain line changes), or you only want a hexagram's text and structure (use hexagram-lookup). What it computes: Casts an I Ching hexagram by the Plum Blossom (Meihua Yishu) method of Shao Yong from the lunar year, month, day and hour (年月日时起卦) or from two or three given numbers, then derives the moving line, changed hexagram (之卦), nuclear hexagram (互卦), the 体 (Ti, self) and 用 (Yong, matter) trigrams and their five-element relations. Inputs: method (enum, optional); date (date, optional); time (string, optional); number_1 (integer, optional); number_2 (integer, optional); number_3 (integer, optional); add_hour_to_moving_line (boolean, optional). Valid input combinations: time_method needs date/time only; two_numbers requires number_1 + number_2; three_numbers requires number_1 + number_2 + number_3. Complete JSON argument examples: {"method":"time_method","date":"2026-09-24","time":"14:30"} | {"method":"two_numbers","number_1":3,"number_2":7,"date":"2026-09-24","time":"12:00"} Outputs: method_used, lunar_date, upper_trigram, lower_trigram, original_hexagram, original_lines, moving_line, moving_line_name, changed_hexagram, nuclear_hexagram, ti_trigram, yong_trigram, ti_element, yong_element, yong_ti_relation, nuclear_relations, changed_relation, ti_seasonal_strength, calculation_trace, reading_hint, disclaimer. Formula: Time method: year = branch number of the lunar year (子 = 1 … 亥 = 12), month = lunar month, day = lunar day, hour = 时辰 number (子 = 1 … 亥 = 12); upper = (year + month + day) mod 8, lower = (year + month + day + hour) mod 8, moving line = (year + month + day + hour) mod 6 (remainder 0 → 8 or 6); trigram numbers in earlier-heaven order 乾1 兑2 离3 震4 巽5 坎6 艮7 坤8. Two numbers: upper = number_1 mod 8, lower = number_2 mod 8, moving = (number_1 + number_2 [+ hour]) mod 6. Three numbers: moving = number_3 mod 6. 体 = trigram without the moving line, 用 = trigram with it; relations by the five-element generating (木→火→土→金→水) and controlling (木→土→水→火→金) cycles. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/meihua-yishu with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/yijing/meihua-yishu.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoCivil date in China Standard Time (UTC+8), 1900–2100; defaults to today.today
timeNoClock time HH:MM (China Standard Time) that fixes the 时辰 (double hour) for the time method or the optional hour addition.12:00
methodNoHow the trigrams and the moving line are derived.time_method
number_1NoFirst number for the number methods; mod 8 gives the upper trigram (0 counts as 8).
number_2NoSecond number for the number methods; mod 8 gives the lower trigram.
number_3NoThird number for the three-number method; mod 6 gives the moving line (0 counts as 6).
add_hour_to_moving_lineNoTwo-number method only: some schools add the 时辰 number (子 = 1 … 亥 = 12) of the given time before taking mod 6.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds substantial behavioral detail: it spells out the exact formula used (mod 8 for trigrams, mod 6 for moving line), the step-by-step derivation of 体/用 trigrams, the list of output fields, and even a REST fallback endpoint. It also instructs the agent to call the tool directly rather than answering from memory. This exceeds what annotations provide and fully discloses internal logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section earns its place: usage guidance, computation summary, input combos, examples, outputs, formula, REST fallback, and docs. It is front-loaded with the most critical 'use when/do not use' statements. Slight deduction for length; it could be tightened by moving the formula to a linked doc, but the density is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 params, multiple methods, rich output schema), the description covers all necessary context: when to use, input constraints, examples, full formula, output fields, and even a fallback API path. Nothing an agent needs to correctly invoke and interpret the result is missing. The presence of an output schema and strong annotations further lightens the burden, and the description still over-delivers.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already provides descriptions for all 7 parameters with 100% coverage, so baseline is 3. The description goes far beyond by explaining valid method-specific combinations, giving JSON argument examples, and detailing the formula each parameter contributes to (e.g., how number_1 mod 8 determines the upper trigram, how add_hour_to_moving_line works). This adds meaning well above the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool casts an I Ching hexagram using the Plum Blossom method from time or numbers, and explicitly names the sibling tools (liuyao, hexagram-change, hexagram-lookup) that cover different scenarios. This unambiguously differentiates it from related tools without needing to inspect schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use this when' and 'Do not use this when' guidance, including concrete alternative tools for six-line coin/yarrow casts and hexagram text lookups. Also specifies valid input combinations (time_method, two_numbers, three_numbers), leaving no ambiguity about when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ar_working_dayArgentina Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Argentina Argentina nationwide national holidays and published tourism non-working days for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when provincial, municipal, employer, bank, exchange, school, sector and religion-specific schedules are not generalized; regional one-off holidays are not included in this nationwide default. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Argentina: Argentina national holiday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-25"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/argentina-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/argentina-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Argentina coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely useful context beyond that: the computation formula, the deterministic requirement, the coverage baseline, and the substitute-day/holiday-policy semantics surfaced in the outputs. This meaningfully enriches the agent's understanding of what the tool actually returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is broken into labeled sections (What it computes, Inputs, Outputs, Formula, REST fallback, Docs), which aids scanning, but the prose is repetitive and contains artifacts ('Argentina Argentina', '2026-2026 authority events'). Output enumeration is largely redundant given the output schema exists. Functional but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, closed-world checker with an output schema and full annotation coverage, the definition supplies scope limits, the formula, an example call, and a REST fallback path. Since an output schema exists, listing return fields is redundant rather than necessary, but nothing an agent materially needs is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single well-documented date parameter, so the schema already carries the parameter meaning. The description restates 'Inputs: date (date)' and repeats the example without adding format or constraint detail. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the resource and scope clearly in 'What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events,' and it is obviously the Argentina-specific variant among a large family of per-country checkers. The opening sentence is garbled ('Argentina Argentina nationwide national holidays') and reads awkwardly, but the intent remains recoverable. Clear but slightly muddied.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when...' and 'Do not use this when...' sections give real when-to-use and exclusion guidance (provincial, municipal, bank, sector, religion-specific schedules and regional one-off holidays are out of scope). It also instructs to call directly rather than answer from memory, which is useful behavioral direction. It does not name sibling alternatives (e.g. count_ar_working_days), so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_at_working_dayAustria Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Austria Austria nationwide statutory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Werktag is not uniform across Austrian legal domains; Saturday treatment, provincial patron days, school, bank, employer and sector schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Austria: Austrian National Day. | Austria: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-10-26"} | {"date":"2026-10-27"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/austria-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/austria-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Austria coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, but the description adds substantial behavioral context: deterministic scope, 2026-2027 coverage, weekend baseline, exclusion of provincial patron days, school/bank/employer schedules, the exact working-day formula, and a REST fallback. It also discloses what the tool does not infer, which is valuable for avoiding overreach. There is 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance and covers relevant behavior, but it is long and includes redundant material: it repeats JSON examples already present in the schema and lists output fields even though an output schema exists. The phrasing contains awkward repetitions such as 'Austria Austria' and 'Do not use this when nationwide statutory holiday list only.' It is informative but not tightly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic date-checking tool with one required parameter, an output schema, and supporting annotations, the description is highly complete. It specifies inputs, calculation basis, coverage period, limitations, formula, output fields, REST fallback, and documentation link. An agent has everything needed to invoke it correctly without consulting external context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single parameter 'date' is already documented as a Gregorian date in Austria coverage with examples. The description repeats the input name, type, and JSON examples but adds no new semantic detail such as date formatting rules or out-of-range behavior. With the schema doing the heavy lifting, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it checks a date against the Austrian working-day calendar, using weekend baseline and exact 2026-2027 authority events. It also distinguishes the scope from broader nationwide statutory holiday lists and notes that Werktag is not uniform across legal domains, which helps separate it from sibling working-day tools. The duplicated phrase 'Austria Austria' and somewhat awkward first sentence slightly reduce precision, but the core purpose remains clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage guidance: 'Use this when you need...' and 'Do not use this when nationwide statutory holiday list only,' plus example user requests. It instructs the agent to call the tool directly rather than compute the formula from memory. It does not name a specific alternative sibling tool, but the conditions for use and non-use are clear enough to route correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_australia_working_dayAustralia State/Territory Public-Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a state/territory-wide Australian public-holiday result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you do not know the state/territory, or you need a local council, regional, employer, exchange or industry calendar. What it computes: Checks an Australian date for a required state or territory using the Fair Work Ombudsman 2026-2027 public-holiday tables and explicit scope limitations. Example user requests: Is 2026-04-27 a working day in NSW? | Check 2027-12-27 in Victoria. Inputs: date (date); division (enum). Complete JSON argument examples: {"date":"2026-04-27","division":"nsw"} Outputs: territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, limited_or_part_day_events, calendar_scope, calendar_profile, source_quality, regional_policy, dataset_version. Formula: is_working_day = CLDR AU weekend baseline and no state/territory-wide full-day public holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/australia-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/australia-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in 2026-2027.
divisionYesRequired Australian state/territory code: act, nsw, nt, qld, sa, tas, vic or wa.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile, and the description adds substantial extra context: the Fair Work Ombudsman 2026-2027 data source, explicit scope limitations, the underlying formula, and a documented REST fallback with a warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with usage guidance, which is good, but it then enumerates every output field even though an output schema exists, and layers in formula, REST fallback and docs links. The result is longer than needed and partly redundant with structured data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's narrow purpose, the definition is complete: it covers scope, data source, formula, fallback, and where to find docs. With an output schema present and annotations covering safety, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in the schema, so the schema carries the load. The description adds marginal value by restating the inputs and providing a complete JSON argument example, slightly beyond the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: checking an Australian date against state/territory public-holiday tables, with the scope narrowed to state/territory-wide results. It distinguishes itself from regional/council/employer calendars, though it does not explicitly name the sibling tools (e.g., count_australia_working_days, check_global_working_day) it differs from.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need a state/territory-wide Australian public-holiday result') and when-not ('when you do not know the state/territory, or you need a local council, regional, employer, exchange or industry calendar'). It even instructs the agent to call directly rather than reason from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_bd_working_dayBangladesh Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Bangladesh Bangladesh 2026 government public-office holiday schedule plus later election-period national closures result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government/public-office schedule only; private-employer, bank, school, industrial-zone, essential-service, regional hill-district, optional-religious and later unlisted ad hoc schedules are not inferred. February 10 is not included because the reported later holiday was industrial-zone specific. Lunar dates may be revised by a later official notice. What it computes: Checks a date against the Friday-Saturday weekend baseline and exact 2026-2026 authority events. Example user requests: Bangladesh: Election-period special holiday. | Bangladesh: Eid-ul-Adha period. Inputs: date (date). Complete JSON argument examples: {"date":"2026-02-11"} | {"date":"2026-05-31"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Friday/Saturday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bangladesh-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bangladesh-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Bangladesh's pinned 2026 government/public-office holiday coverage over a Friday-Saturday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered; the description goes further by disclosing coverage boundaries (what schedules are NOT inferred), the explicit exclusion rationale for February 10, the caveat that lunar dates may be revised by a later official notice, and that results are deterministic rather than guessed. The garbled phrasing weakens an otherwise strong disclosure, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is front-loaded, which is good, but the text wastes space on duplicated words ('Bangladesh Bangladesh', '2026-2026'), a confusing 'Example user requests' block, and a fallback/docs tail. Every section could be tightened substantially without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it still lists the output fields, the formula, the exact REST fallback endpoint, and docs URL, plus coverage caveats. For a single-parameter read-only tool with full annotation coverage, nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema description coverage is 100% with its own format and examples. The description repeats the parameter ('Inputs: date (date)') and supplies JSON call examples, but adds no semantics beyond what the schema already documents, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete operation: 'Checks a date against the Friday-Saturday weekend baseline and exact 2026 authority events,' which is a specific verb+resource and distinct from siblings like count_bd_working_days or add_bd_working_days. However, the opening sentence is garbled ('Bangladesh Bangladesh 2026'), which mildly obscures what is being checked, so it stops short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit routing instructions ('Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery') and a detailed exclusion list (private-employer, bank, school, industrial-zone, essential-service, regional hill-district, optional-religious, ad hoc schedules). It never names the sibling alternatives (count_bd_working_days / add_bd_working_days) that an agent would otherwise have to choose against, and the 'Do not use this when government/public-office schedule only' clause reads as syntactically broken.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_be_working_dayBelgium Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Belgium Belgium ten statutory private-sector public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when private-sector statutory core only; substitute dates, public-service/community/regional holidays, sector agreements, employer, school, bank and municipal schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Belgium: Belgian National Day. | Belgium: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-07-21"} | {"date":"2026-07-22"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/belgium-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/belgium-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Belgium coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive and closed-world behavior, and the description correctly aligns with them. Beyond the annotations it discloses the actual computation ('not an official Saturday/Sunday weekend date and no exact authority event'), the coverage limitation set, and determinism, which is real added context for a date-check tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the use-when directive correctly, but the prose is repetitive and mechanically assembled, with duplicated words, a redundant output field list (an output schema already exists) and a REST fallback plus docs URL bolted on. Length is defensible for the scope but the phrasing wastes reader attention.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, yet it usefully names the territory scope, the formula, the dataset-bounded years and the excluded holiday classes. Nothing essential for calling this tool correctly is missing; the only gap is that the coverage window (2026-2027) is stated in prose rather than in the schema, so out-of-range dates are only implicitly rejected.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'date' parameter is fully documented in the schema, so the baseline is 3. The description adds complete JSON argument examples ({"date":"2026-07-21"}) but no format, range or edge-case guidance beyond what the schema already carries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events') and names the territory scope (Belgium 2026-2027), which is enough to separate it from the many check_xx_working_day siblings. The opening sentence is garbled ('deterministic Belgium Belgium ten statutory private-sector public holidays for 2026-2027 result'), which muddies but does not destroy the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'Use this when...' directive plus a 'Do not use this when...' exclusion list naming substitute dates, public-service/community/regional holidays, sector agreements, employer, school, bank and municipal schedules as not inferred. This is genuine when/when-not guidance, undermined only by awkward phrasing that makes the boundary conditions harder to parse than they need to be.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_bg_working_dayBulgaria Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Bulgaria Bulgaria 2026 nationwide rest-day facts with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when bulgaria 2026 nationwide statutory holidays, observed non-attendance days and January 2 one-off rest over an explicitly selected Monday-Friday planning baseline. November 1 is education-only and does not add general rest. No personal, shift, school, employer, bank/exchange, optional religious-leave, payroll or legal-deadline schedule is computed. Future years and additional local/sector closures are unsupported. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires explicit mon_fri_planning; education-only holidays do not create general rest. Example user requests: Bulgaria: One-off euro transition rest, not statutory holiday. | Bulgaria: May 24 Sunday replacement. | Bulgaria: No nationwide school-holiday substitute. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-01-02","work_schedule":"mon_fri_planning"} | {"date":"2026-05-25","work_schedule":"mon_fri_planning"} | {"date":"2026-11-02","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_observed_non_attendance_day, is_one_off_non_attendance_day, is_education_only_holiday, observed_for_dates, payroll_scope. Formula: planning_workday = weekday AND no nationwide statutory/observed/one-off rest event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bulgaria-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bulgaria-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Bulgaria coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a universal legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive, and the description adds real behavioral context beyond them: determinism, the explicit mon_fri_planning baseline requirement, that education-only holidays (e.g. November 1) create no general rest, and that future years and local/sector closures are unsupported. The 'Do not use this when...' sentence is syntactically broken, which slightly undersells these constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is repetitive and malformed: 'Bulgaria Bulgaria', a broken 'Do not use this when' clause, and a 20-field outputs enumeration that duplicates the existing output schema. The REST fallback and docs links are useful, but a large share of the content does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the long output list is redundant; the description would be complete with just the coverage limits, baseline requirement, and fallback endpoint. The core constraints are present but buried under duplicate and garbled prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, so the schema already defines date and the work_schedule enum. The description reinforces that mon_fri_planning is explicitly required and supplies argument examples, but adds little semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The 'What it computes' line states a specific verb and resource: checks a date against a Saturday-Sunday weekend baseline plus exact 2026 Bulgaria authority events. The country scope and single-date semantics distinguish it from the count_*/add_* siblings, though the opening sentence is garbled ('Bulgaria Bulgaria 2026 nationwide rest-day facts') and obscures the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives both a when ('Use this when you need deterministic ... planning baseline result') and a when-not (personal, shift, school, employer, bank, optional religious-leave, payroll, legal-deadline schedules are not computed; future years unsupported). It also tells the agent to call it rather than answer from memory. It never names the sibling count_bg_working_days or add_bg_working_days as the alternative for multi-day range work.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_br_working_dayBrazil Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Brazil Brazil federal executive public administration (SIPEC) result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is not a universal Brazilian private-employer calendar; state, municipal, sector, employer and private payroll schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Brazil: Tiradentes. Inputs: date (date). Complete JSON argument examples: {"date":"2026-04-21"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/brazil-federal-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/brazil-federal-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Brazil coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond annotations: the exact computation formula, deterministic output, 2026 authority-event scope, full output field list, and a specific REST fallback endpoint with a warning not to guess other paths. It does not mention authentication or rate-limit behavior, so it is strong but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-sectioned and front-loads usage guidance, but it is long for a one-parameter date-check tool. It repeats schema-provided input examples, lists output fields even though an output schema exists, and contains minor typos ('Brazil Brazil', '2026-2026'). Several sentences earn their place, but redundancy and length reduce conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema, rich annotations, and an available output schema, the description provides everything an agent needs: scope boundaries, exact computation formula, example input, fallback endpoint, and documentation link. No critical context is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the single date parameter with format and examples. The description adds only a restatement of the input name and a JSON example, which is redundant with the schema. Baseline 3 is appropriate when the schema carries the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Checks') and resource ('date') against a Brazil federal executive (SIPEC) calendar, and explicitly distinguishes its scope from private, state, municipal, sector, and employer calendars. It does not explicitly distinguish itself from sibling add_br_working_days or count_br_working_days, so it falls short of a perfect sibling differentiation score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance ('Use this when you need a deterministic Brazil... result') and when-not-to-use guidance by excluding non-federal calendars. However, it does not name an alternative sibling tool to use for those excluded cases, which the rubric requires for a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_canada_federal_working_dayCanada Federal General-Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a federally regulated-employer general-holiday result for 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a province/territory, municipal, private-employer, exchange or schedule-specific substitute-day calendar. What it computes: Checks a date against the 10 Canada Labour Code general holidays and the Canada Saturday/Sunday baseline; substitute days are not inferred. Example user requests: Is 2026-09-30 a Canada federal working day? Inputs: date (date). Complete JSON argument examples: {"date":"2026-09-30"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: is_working_day = Canada weekday baseline and no Canada Labour Code general holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/canada-federal-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/canada-federal-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned Canada 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds substantial extra context: the exact holiday set, the weekday baseline, substitute-day non-inference, coverage years, output fields, formula, and fallback endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with use and do-not-use guidance, then structured into computation, example, inputs, outputs, formula, and fallback sections. It is longer than necessary for a one-parameter check tool, and the output list partially duplicates the output schema, but every section is readable and largely purposeful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity, high schema coverage, rich annotations, and existing output schema, the description is more than complete. It covers scope, exclusions, formula, coverage period, substitute-day policy, and invocation details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already defines the single date parameter with format and examples. The description adds only 'Inputs: date (date)' and repeats the JSON example, so it does not meaningfully extend parameter semantics beyond the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — checking a date against Canada federal general holidays — and explicitly distinguishes this scope from provincial, municipal, private-employer, exchange, and schedule-specific calendars. The 'What it computes' section makes the calculation boundary clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit positive guidance ('Call this tool directly') and explicit exclusions ('Do not use this when...'), naming the alternative scopes to avoid. It also supplies a direct REST fallback path and docs URL, covering invocation paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_china_working_dayMainland China Working Day CheckerA
Read-onlyIdempotent
Inspect

Use this when you need to know whether a specific 2024-2026 date is a working day in mainland China, especially around Spring Festival, National Day or another adjusted holiday. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a Hong Kong, Macao, Taiwan, local minority, school, employer, bank-settlement or stock-exchange calendar, or a year outside 2024-2026. What it computes: Checks whether a date is an official national working day in mainland China, including weekend makeup workdays (调休上班) and multi-day holiday periods from State Council notices. Example user requests: Is Sunday 2026-01-04 an official working day in mainland China? | 2026年9月20日是休息日还是调休上班? | Will mainland China offices normally work on 2026-02-18? Inputs: date (date). Complete JSON argument examples: {"date":"2026-01-04"} | {"date":"2026-02-18"} Outputs: date, weekday, is_working_day, day_type, holiday_name, holiday_name_zh, status_basis, jurisdiction, source_document_id, source_published_at, source_url, dataset_version, coverage_start, coverage_end. Formula: adjusted weekend workday override → working; else official holiday-period override → non-working; else Monday-Friday → working; Saturday-Sunday → non-working Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesMainland China civil date (YYYY-MM-DD), within 2024-2026.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotent, and destructive hints, but the description adds behavioral context beyond that: it details what the tool computes (including weekend makeup workdays and multi-day holiday periods from State Council notices) and provides the exact formula for decision-making. It also discloses the output fields and source basis, giving the agent full transparency into the logic and results. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is fairly long but well-structured with clear sections (use case, exclusions, computation, examples, inputs, outputs, formula, fallback). It is front-loaded with the primary purpose and usage guidance. Each section provides value, though it could be slightly more compact. It scores a 4 for efficiency and organization.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter) and the presence of an output schema, the description is thoroughly complete. It includes examples, exclusions, formula, REST fallback, and documentation link. An agent has all necessary information to call this tool correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (the date parameter is fully described with format and range). The description adds some extra clarity with examples and a note about the date format, but this largely replicates schema information. The baseline is 3 when the schema does the heavy lifting, and the description does not add substantial new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks whether a specific date is a working day in mainland China, and explicitly distinguishes from related tools by mentioning exclusion of Hong Kong, Macao, Taiwan, and other calendar types. It uses a specific verb ('check') and resource ('working day in mainland China'), making it distinct from siblings like check_uk_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use ('when you need to know whether a specific 2024-2026 date is a working day in mainland China, especially around Spring Festival, National Day or another adjusted holiday') and when-not-to-use ('Do not use when you need a Hong Kong, Macao, Taiwan, local minority, school, employer, bank-settlement or stock-exchange calendar, or a year outside 2024-2026'). It also instructs to call the tool directly rather than answering from memory, which is clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ch_working_daySwitzerland Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Switzerland Switzerland federal public holiday layer for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when federal layer only. Cantonal public holidays, municipal holidays, employer, collective-agreement, school, bank and exchange schedules are not inferred; Swiss law permits cantons to recognize additional holidays. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Switzerland: Swiss National Day. | Switzerland: Cantonal holiday is not inferred. Inputs: date (date). Complete JSON argument examples: {"date":"2026-08-01"} | {"date":"2026-09-10"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/switzerland-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/switzerland-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Switzerland coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower, and the description still adds meaningful context: the deterministic weekend baseline, the 2026-2027 coverage window, the fact that cantonal/municipal layers are not inferred, and the substitute-day policy surfaces. The explicit formula and the named REST fallback path add error-handling value beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The header sections (What it computes / Inputs / Outputs / Formula / fallback / docs) are reasonably front-loaded and scannable, but there is waste and noise: a duplicated 'Switzerland Switzerland', an incoherent 'Do not use this when federal layer only', and example request lines that mix a holiday name with a caveat rather than showing clean requests.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, deterministic date-check tool with a full output schema and complete annotation coverage, the description supplies what an agent needs: coverage window, the weekend+authority-event rule, the explicit scope limitation, and a fallback endpoint. The listed output field names are redundant given the output schema, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single date parameter and the schema already carries format, required-field, and examples, so the structured data does the heavy lifting. The description adds only the inline JSON argument examples, which largely duplicate the schema's examples array.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The body states a specific verb and resource clearly: "Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events." However the opening line is garbled ("a deterministic Switzerland Switzerland federal public holiday layer for 2026-2027 result") and the description never explicitly contrasts itself with the adjacent add_/count_/list_ ch siblings, so an agent must infer that 'check' means single-date evaluation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a real exclusion (cantonal, municipal, employer, school, bank and exchange schedules are not inferred, because Swiss law permits cantons additional holidays), which is valuable scope guidance. But the operative negative line is mangled to "Do not use this when federal layer only." and reads as unparseable, so the when-to-use routing is only partially usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_cl_working_dayChile Working DayB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Chile Chile nationwide statutory/public holidays for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Chile's nationwide statutory/public-holiday layer over a Saturday-Sunday baseline. Regional/local holidays, school, bank, private-employer, sector and collective-agreement schedules are not inferred. Commerce mandatory-rest exceptions are preserved as provenance but are not generalized to every worker. Future annual dates require refreshed official evidence. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Chile: Chile Labour Day. | Chile: Chile ordinary working day. | Chile: Chile winter-solstice Indigenous Peoples Day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-01"} | {"date":"2026-09-14"} | {"date":"2026-06-21"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/chile-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/chile-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Chile's pinned 2026 nationwide statutory/public-holiday coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive and closed-world behavior, so the description's job is lighter. It adds genuine context beyond that: the coverage layer (nationwide statutory holidays over a Saturday-Sunday baseline), what is explicitly not inferred, the provenance handling of commerce exceptions, and the caveat that future dates require refreshed evidence.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bloated and noisy: duplicated words ('Chile Chile', '2026-2026'), a full output-field list that the output schema already provides, a raw REST fallback URL, and a docs link. It is partially front-loaded but several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an output schema, and rich annotations, the description supplies the scope, formula, and explicit limitations an agent needs to call it correctly. The main shortfall is the garbled phrasing rather than missing substance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage, the schema already defines 'date' as a Gregorian date in Chile's pinned 2026 coverage. The description's 'Inputs: date (date)' and example JSON only restate the schema examples, adding no new semantic detail, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does state a specific verb and resource — it 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events' — so the core action is identifiable. However, the opening sentence is garbled ('deterministic Chile Chile nationwide statutory/public holidays for 2026 result') and never distinguishes this check_ tool from its close siblings count_cl_working_days and add_cl_working_days, which an agent could easily confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction: 'Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery,' plus a 'Do not use this when' section scoping out regional, school, bank, and sector schedules. The exclusion covers scope boundaries rather than naming the check/count/add alternatives, so it falls just short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_co_working_dayColombia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Colombia Colombia nationwide statutory paid-rest public holidays for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Colombia's nationwide statutory paid-rest holiday layer over a Saturday-Sunday baseline. Municipal, departmental, school, bank, employer, sector and local patron-saint schedules are not inferred. Future annual calendars require refreshed official evidence. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Colombia: Colombia transferred Three Kings holiday. | Colombia: Colombia Good Friday. | Colombia: Ordinary Colombia working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-01-12"} | {"date":"2026-04-03"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/colombia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/colombia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Colombia's pinned 2026 nationwide statutory paid-rest holiday coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds real value beyond that: the deterministic full-coverage claim, the exact authority-event basis, the explicit statement that sub-national and sector calendars are NOT inferred, and the warning that future annual calendars 'require refreshed official evidence'. This is well above the annotation-only baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded and every block (when, when-not, what it computes, examples, inputs, outputs, formula, fallback, docs) is labeled, so navigation is easy. However it is padded: the 'Colombia Colombia' duplication, '2026-2026', the enumerated output field list that duplicates the output schema, and the REST fallback/docs URLs add bulk without helping tool selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the returned-field list is redundant but harmless, and the description need not explain the return structure. What it does supply well is the coverage boundary (nationwide statutory layer only, no sub-national inference, 2026 window) that an agent needs to avoid over-claiming results. Only the numeric-year typo and lack of explicit sibling routing keep it short of complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage, so the schema already documents the Gregorian date input and the baseline is 3. The description restates the input name and gives three complete JSON argument examples, which is mild reinforcement rather than new semantic content (no format, timezone, or range guidance beyond what the schema says).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Checks a date against the Saturday-Sunday weekend baseline and exact 2026 authority events') and scopes it to Colombia's nationwide statutory paid-rest layer, which is enough to separate it from the add_*/count_* siblings in principle. It never names a sibling explicitly, and the header sentence is marred by the duplicated 'Colombia Colombia' and '2026-2026', but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need a deterministic ... result. Call this tool directly and return its calculation instead of answering the formula from memory' gives clear positive framing, and the 'Do not use this when' block states the exclusions (municipal, departmental, school, bank, employer, sector, local patron-saint schedules). No alternative sibling tool is named, so routing to count_co_working_days or add_co_working_days is left to inference, but the when/when-not coverage is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_cz_working_dayCzech Republic Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Czech Republic Czech Republic 2026 statutory holidays with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when czech Republic 2026 statutory rest-day facts over an explicitly selected Monday-Friday planning baseline. This is not a universal legal weekly roster. No shift, individual employer, bank/exchange, school, retail opening, payroll or legal-deadline schedule is computed. Commemorative days do not add rest; no substitute Monday is inferred. Future-year coverage is not asserted. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires explicit mon_fri_planning; commemorative events do not create rest. Example user requests: Czech Republic: Two names on January 1, one rest date. | Czech Republic: Education commemorative day remains a planning workday. | Czech Republic: November 17 is a Czech statutory rest day. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-01-01","work_schedule":"mon_fri_planning"} | {"date":"2026-04-07","work_schedule":"mon_fri_planning"} | {"date":"2026-11-17","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_other_holiday, is_statutory_holiday, is_commemorative_day, payroll_scope. Formula: planning_workday = weekday AND no state_holiday AND no other_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/czech-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/czech-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Czech Republic coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a statutory universal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/openWorld=false, and the description still adds real substance: the deterministic formula, the fact that commemorative days do not create rest, no substitute Monday is inferred, no shift/employer/payroll schedules, and future-year coverage is not asserted. It also discloses the REST fallback and docs URL – far more than the annotations provide, with only stylistic noise reducing the score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (What it computes / Example requests / Inputs / Outputs / Formula / fallback / Docs) make it scannable, but the opening sentence repeats 'Czech Republic Czech Republic' and the Outputs list duplicates the output schema verbatim. There is real padding alongside the useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-date checker with an output schema present (so returns needn't be re-explained), the description covers the calculation rule, scope exclusions, and a direct REST fallback. It is close to complete; the main omission is no explicit statement of how it differs from check_global_working_day or the count/add CZ siblings beyond the name.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters carry their own descriptions plus the enum value, so the schema already does the work; the baseline is 3. The description restates the requirement for an explicit mon_fri_planning baseline and supplies complete JSON examples, which adds marginal convenience but no meaning beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the specific verb (checks a date) and resource (Czech Republic 2026 statutory working-day status on a Monday-Friday baseline), and the name/sibling set (check_ vs count_ vs add_cz_working_days) makes the single-date scope inferable. However, the first sentence is garbled ("Czech Republic Czech Republic 2026 statutory holidays with explicit... baseline result"), which blunts the clarity it would otherwise have.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It includes an explicit 'Use this when...' and 'Do not use this when...' pair, plus a directive to call directly rather than answer from memory, which is genuinely useful routing guidance. But the exclusion sentence is semantically broken (it re-states the use case with 'rest-day facts' rather than naming a distinct alternative), so the when-not guidance is only half functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_de_working_dayGermany Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Germany Germany nationwide statutory public holidays for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when state, municipal, school, bank, TARGET, transport-system, collective-agreement and employer-specific schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Germany: German Unity Day. | Germany: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-10-03"} | {"date":"2026-10-13"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/germany-national-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/germany-national-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Germany coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so few points remain to earn here. The description still adds genuine context beyond them: the exact governing formula, the weekend-baseline + authority-event rule, the fixed 2026 dataset window, and a concrete REST fallback path. Minor deduction for not clarifying error behavior if the date falls outside the covered year.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is machine-bloated: 'Germany Germany', '2026-2026', and an output-field dump that the existing output schema already supplies. The docs link and REST fallback are useful, but the repetitive formula/example blocks and typos push this well past the size needed for a one-parameter date check.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-date deterministic calculator with an output schema and full annotation coverage, the description does supply the deciding context: national scope, the fixed year, the exact formula, examples, and a fallback endpoint. It is complete in substance, though the garbled scope sentence and hard-coded 2026 window leave a small interpretive burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema description coverage is 100%, so the schema already documents 'date' as a Gregorian date in Germany coverage. The description repeats the parameter and supplies sample JSON arguments, adding convenience but no new semantics (no mention of valid range, timezone, or format edge cases). Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific operation (check a date against Germany's nationwide statutory holiday calendar) and enumerates the output fields, so the agent knows this is a date-check, not a count or add. However, the phrasing is garbled ('Germany Germany nationwide statutory public holidays for 2026 result') and never cleanly distinguishes itself from the add_de_working_days / count_de_working_days siblings that share the same calendar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('when you need a deterministic ... result', 'call this tool directly instead of answering from memory') and an intended scope exclusion, which is more than most tools offer. But the exclusion sentence is ungrammatical and ambiguous ('Do not use this when state, municipal, school, bank, TARGET ... schedules are not inferred'), and it never names the add_/count_ siblings as the alternative for range operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_dk_working_dayDenmark Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Denmark Denmark nationwide statutory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Collective-agreement, employer, sector, school, bank, local and customary half-day closures are not inferred; Store Bededag is not a holiday from 2024 onward. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Denmark: Ascension Day. | Denmark: Constitution Day is not a statutory holiday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-14"} | {"date":"2026-06-05"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/denmark-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/denmark-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Denmark coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds genuinely useful behavioral context beyond the annotations: the 2026-2027 coverage window, the weekend baseline, the exclusion of non-statutory closures, and the rule that Store Bededag is not a holiday from 2024 onward. It does not mention rate limits or data-freshness/authority of the source dataset beyond naming dataset_version in outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the entry is bloated with material that duplicates structured data: a full enumeration of output fields when an output schema exists, a formula restatement, a REST fallback URL and a docs URL. Phrases like 'Denmark Denmark' and 'use this when you need a deterministic...result' waste space. Roughly half the text earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter deterministic holiday check, the description supplies the coverage period, the weekend rule, the exclusions, and a policy note on Store Bededag. With an output schema present it need not enumerate return values, yet it does so redundantly; otherwise an agent has what it needs to call and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single date parameter, so the schema already carries the semantics and baseline 3 applies. The description repeats 'Inputs: date (date)' and supplies concrete JSON argument examples, which adds mild value but no format or constraint detail beyond the schema's date format and its own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (checks) and resource (a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events) and names the territory. It is distinguishable from sibling calculators by territory, but it never explicitly differentiates itself from the very similar check_dk_working_day-adjacent siblings like count_dk_working_days or add_dk_working_days. The opening sentence is garbled ('deterministic Denmark Denmark nationwide statutory public holidays for 2026-2027 result'), which slightly obscures the purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an explicit 'Use this when...' clause instructing the agent to call the tool directly rather than answering from memory, and a 'Do not use' clause listing exclusions (collective-agreement, employer, sector, school, bank, local and customary half-day closures). However, the do-not sentence is truncated/ungrammatical ('Do not use this when nationwide statutory list only'), so the boundary condition is implied rather than crisp.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ee_working_dayEstonia Working DayB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Estonia Estonia 2026 statutory rest and conditional shortening facts with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when estonia 2026 statutory rest facts over an explicitly selected Monday-Friday planning baseline. Sixteen national-importance dates do not add rest. Four dates carry a conditional three-hour shortening rule but still count as one planning working date, not a half-day or full-day holiday. No substitute or bridge is invented. Individual shifts, actual working hours, opening hours, employer/local/sector/school/bank schedules, replacement weekly rest, payroll, legal deadlines and future years are not computed. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires explicit mon_fri_planning; national-importance dates and three-hour shortening never add full-day rest. Example user requests: Estonia: Independence Day is statutory rest. | Estonia: Shortened working date is not full-day rest. | Estonia: National importance does not imply rest. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-02-24","work_schedule":"mon_fri_planning"} | {"date":"2026-02-23","work_schedule":"mon_fri_planning"} | {"date":"2026-11-16","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, is_day_of_national_importance, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_full_day_rest_event; shortened working dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/estonia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/estonia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Estonia coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds substantial policy context beyond that: sixteen national-importance dates do not add rest, four dates carry a conditional three-hour shortening that still counts as one working day, no substitute/bridge day is invented, and an explicit 'not computed' list (roster, payroll, legal deadlines, future years). This is exactly the kind of domain nuance annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with repetition ('Estonia Estonia 2026', '2026-2026', 'statutory rest facts' restated several times) and several sentences that restate the same rule. The opening is front-loaded but the duplication and awkward phrasing mean several sentences do not earn their place. It also lists a full output field roster that the output schema already provides.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a date-check tool with an output schema, the behavioral and policy context is thorough: scope, exclusions, and the exact formula are all present. Since an output schema exists, the enumerated Outputs list is redundant rather than harmful, and the REST fallback URL adds operational completeness. Only the incoherent exclusion clause leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description adds concrete argument examples and reiterates that mon_fri_planning is a required explicit baseline, but adds little semantic detail beyond the schema. No new meaning about the date parameter's coverage limits is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core purpose is discernible — 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events' identifies a specific check against Estonia's 2026 calendar. However the opening sentence ('a deterministic Estonia Estonia 2026 statutory rest and conditional shortening facts with explicit Monday-Friday planning baseline result') is garbled and repeated, making the primary purpose harder to extract than it should be. Sibling differentiation is implicit via 'Estonia' but never explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers a 'Use this when' trigger and a strong directive to call the tool rather than answer from memory or stop at discovery, which is genuinely useful routing guidance. But the 'Do not use this when estonia 2026 statutory rest facts over an explicitly selected Monday-Friday planning baseline' clause is syntactically broken and states no coherent exclusion or alternative. The when-not guidance is effectively absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_eg_working_dayEgypt Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Egypt Egypt 2026 official public-holiday layer for ministries, government bodies, public authorities, local administration and public-sector/public-business companies result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the official nationwide public-holiday layer published for Egyptian government/public-sector scope. Private employers, banks, schools, diplomatic missions, exchanges, local or sector calendars may differ and are not inferred. Friday-Saturday is the ordinary weekend baseline; special remote-work or operating-hour decisions are not treated as holidays. Islamic dates and later Prime Minister decisions require a refreshed package. What it computes: Checks a date against the Friday-Saturday weekend baseline and exact 2026-2026 authority events. Example user requests: Egypt: Eid al-Fitr public holiday. | Egypt: Ordinary Egypt working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-03-20"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Friday/Saturday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/egypt-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/egypt-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Egypt's pinned 2026 official public-holiday coverage over a Friday-Saturday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/non-open-world, so the bar is lower. Beyond that, the description adds real behavioral context: the deterministic nature, the explicit formula, the warning that Islamic dates and later PM decisions require a refreshed package, and a direct REST fallback URL with a warning not to guess other paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the primary use case, but there is noticeable redundancy and noise: the duplicated 'Egypt Egypt', the awkward 'Do not use this when this package covers' clause, and the '2026-2026' range. Several sentences only partially earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All the pieces an agent needs are present: scope, formula, inputs/outputs, a REST fallback, and docs link, and an output schema exists so return values need not be explained. Minor incompleteness comes from the confusing exclusion sentence rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is only one parameter and schema description coverage is 100%, so the schema already carries the semantics; the description adds the example argument forms and restates the date's meaning. No additional syntax beyond the schema is introduced, hence not a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('checks a date against the Friday-Saturday weekend baseline and exact 2026 authority events') and the tool name itself differentiates it from the many check_XX_working_day siblings by country. It is slightly muddied by the garbled opening ('Egypt Egypt 2026 official public-holiday layer') and a run-on list of covered bodies, but an agent can still identify the operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('when you need a deterministic Egypt ... layer') and enumerates when-not-to-use/won't-cover cases (private employers, banks, schools, diplomatic missions, exchanges, local/sector calendars). The 'Do not use this when this package covers...' sentence is syntactically broken and confusing, but the exclusion list still conveys the boundaries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_es_working_daySpain Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Spain Spain nationwide national non-substitutable labour holidays for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the remaining national, autonomous-community, Ceuta/Melilla and up to two municipal local holidays require a jurisdiction-specific calendar. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Spain: National Day. | Spain: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-10-12"} | {"date":"2026-10-13"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/spain-national-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/spain-national-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Spain coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it is deterministic, scoped strictly to 2026 national events, explicitly excludes autonomous-community/Ceuta-Melilla/municipal holidays, publishes the formula, and notes a dataset_version and sources in the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is sectioned (what it computes, inputs, outputs, formula, fallback, docs), which aids scanning, but it contains redundant artifacts like 'Spain Spain' and '2026-2026', and lists output fields that the output schema already covers, inflating length without adding value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return values, yet it covers scope, exclusions, formula, REST fallback, and docs adequately for a single-parameter deterministic check. The only real gap is the garbled first sentence and the absence of an explicitly named alternative sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'date' parameter is already documented as a Gregorian date in Spain coverage. The description only restates 'Inputs: date (date)' and adds example values, contributing little meaning beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The 'What it computes' line states a clear verb+resource: it checks a date against the Saturday-Sunday weekend baseline and exact 2026 authority events for Spain. However, the opening sentence is garbled ('deterministic Spain Spain nationwide national non-substitutable labour holidays for 2026 result'), which muddies the otherwise clear purpose, and the sibling alternatives (add_es_working_days, count_es_working_days) are never named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need...' plus 'Call this tool directly... instead of answering the formula from memory or stopping at discovery' gives a clear directive on when to invoke. The 'Do not use this when' clause provides an exclusion for cases needing jurisdiction-specific calendars, though it never names the specific alternative tool, so the guidance is solid but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_fi_working_dayFinland Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Finland Finland nationwide church and national full-day public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide full-day public-holiday layer only. Midsummer Eve, Christmas Eve, employer, collective-agreement, sector, school, bank, Åland, Sámi and local closures are not inferred; private-sector annual-leave counting may treat Saturdays and certain eves differently. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Finland: Independence Day. | Finland: Midsummer Eve is agreement-dependent. Inputs: date (date). Complete JSON argument examples: {"date":"2026-12-06"} | {"date":"2026-06-19"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/finland-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/finland-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Finland coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the read-only/idempotent/non-destructive annotations, the description discloses deterministic behavior, the 2026-2027 coverage window, explicit exclusions, the formula used, output fields, and a direct REST fallback path. This gives an agent unusually rich behavioral context for a simple calculator tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is sectioned and front-loaded with usage, computation, examples, inputs, outputs, formula, and fallback. It is mostly efficient, but the opening sentence is repetitive and the 'Do not use this when nationwide full-day public-holiday layer only' line is awkwardly worded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description does not need to explain return values, yet it still lists them. It covers coverage years, exclusions, formula, examples, REST fallback, and docs, leaving no material gap for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single date parameter, and the schema already provides type, format, and examples. The description repeats the input name and gives the same JSON examples, adding little beyond the structured schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific check operation for Finland working days and includes a clear 'What it computes' line. It distinguishes itself from sibling add/count tools by the check verb and Finland scoping, though the opening sentence is garbled with repeated 'Finland' and the purpose title could be cleaner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says to use the tool directly rather than answering from memory and lists some exclusions such as Midsummer Eve and local closures. However, the 'Do not use this when nationwide full-day public-holiday layer only' phrase is confusing and it does not name sibling alternatives like add_fi_working_days or count_fi_working_days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_fr_working_dayFrance Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic France France national legal public holidays result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when alsace-Moselle, overseas territories, employer, sector, school, bank, exchange and regional calendars are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: France: Bastille Day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-07-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/france-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/france-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in France coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so safety is covered. The description adds substantial behavioral context beyond annotations: deterministic calculation, the exact 2026-2027 authority-event scope, the working-day formula, and a REST fallback path. No behavior contradicts the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance and structured into labeled sections, but it is longer than necessary and includes redundant material such as 'Inputs: date (date)' and an output-field list despite an existing output schema. The 'France France' typo and vague 'Example user requests: France: Bastille Day.' also detract from tight, polished conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple one-date schema, the rich annotations, and the presence of an output schema, the description supplies everything an agent needs to select and invoke the tool correctly. It names the country scope, distinguishes national from regional/overseas calendars, states the computation rule, and provides a REST fallback and docs link.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single date parameter is already documented in the schema as 'Gregorian date in France coverage.' The description repeats 'Inputs: date (date)' and provides a JSON example, but adds no semantic detail beyond what the schema already supplies. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checking a date against the Saturday-Sunday baseline and exact 2026-2027 French authority events. It also scopes the tool to France national legal public holidays, which helps distinguish it from broader or regional calendar tools. However, it does not explicitly name sibling tools such as check_global_working_day or add_fr_working_days, and the 'France France' typo slightly weakens the exactness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear when-to-use guidance ('Use this when you need a deterministic France national legal public holidays result') and explicit when-not-to-use exclusions ('alsace-Moselle, overseas territories, employer, sector, school, bank, exchange and regional calendars'). It does not name specific alternative tools to switch to, which keeps it from a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_gh_working_dayGhana Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Ghana Ghana 2026 nationwide statutory/public-holiday layer over a Saturday-Sunday weekend result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide statutory/public-holiday layer only. It is not a universal private-employer, bank, exchange, school, local, sector or essential-service calendar. The 2026 package uses observed dates published or cross-checked for 2026; lunar dates and later Executive Instruments may change. It does not treat the pre-Act-1142 4 August Founder’s Day or 2025-era September naming as current law, and it does not infer additional closure days from the legal anchors alone. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Ghana: Republic Day observed. | Ghana: Ordinary Ghana working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-07-03"} | {"date":"2026-06-16"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ghana-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ghana-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Ghana's pinned 2026 nationwide statutory/public-holiday coverage over a Saturday-Sunday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior, and the description adds substantial extra context. It discloses the exact formula, the 2026 observed-date basis, caveats around lunar dates and later Executive Instruments, and explicit legal-scope limitations such as not treating pre-Act-1142 Founder’s Day or 2025-era September naming as current law. It also gives a REST fallback path and docs link, making behavior unusually transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated and repetitive, with phrases like 'Ghana Ghana' and '2026-2026' and several redundant sections. It includes output fields even though an output schema exists, and the 'Do not use this when this package covers...' sentence is confusing. While it is loosely organized with labels, it is not efficiently front-loaded or concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter date-checking tool with an output schema and annotations, the description provides more than enough context: scope, exclusions, formula, examples, fallback, and authoritative caveats. An agent has everything needed to understand coverage and invoke the tool correctly. The only weakness is stylistic rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% description coverage and documents the single 'date' parameter with format, description, and examples. The description repeats 'Inputs: date (date)' and supplies JSON examples, but adds no semantic detail beyond what the schema already provides. With high schema coverage, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checks a date against Ghana's 2026 nationwide statutory/public-holiday layer over a Saturday-Sunday weekend baseline. It is identifiable as a single-date Ghana working-day checker, though it does not explicitly contrast with siblings like count_gh_working_days or add_gh_working_days. The duplicated 'Ghana Ghana' and '2026-2026' phrasing slightly muddies the otherwise clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction: use when needing the deterministic Ghana 2026 nationwide statutory/public-holiday layer, call directly instead of answering from memory. It also provides exclusions, stating it is not a universal private-employer, bank, exchange, school, local, sector, or essential-service calendar. The 'Do not use this when this package covers...' line is malformed, but the surrounding exclusions still communicate when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_global_public_holiday_working_dayGlobal Public-Holiday Working Day ReferenceA
Read-onlyIdempotent
Inspect

Use this when you need a source-labelled 2026-2028 public-holiday reference for one of the supported OpenHolidays countries and nationwide-only semantics are acceptable. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an official direct authority result, regional/local holidays, substitute-day rules, employer/bank/exchange closures, or a date outside 2026-2028; use the verified China/UK package or the CLDR baseline as appropriate. What it computes: Checks a date for a supported country using CLDR weekend rules plus nationwide public-holiday events from a pinned OpenHolidays open-data snapshot, with explicit non-authority and substitute-day limits. Example user requests: Is 2026-10-26 a working day in Austria after nationwide public holidays are excluded? | Check 2027-05-01 in France using the OpenHolidays nationwide reference. Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-26","territory":"AT"} Outputs: territory, territory_name, weekday, is_working_day, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: is_working_day = CLDR weekday(date) and no included nationwide public-holiday event(date, territory) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date from 2026-01-01 through 2028-12-31.
territoryYesISO-style alpha-2 country code supported by the pinned OpenHolidays public-holiday reference snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them: data provenance (pinned OpenHolidays open-data snapshot), explicit non-authority and substitute-day limitations, the CLDR weekend rule, the coverage window, and a REST fallback path. This is exactly the extra behavioral context annotations cannot supply.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use-case, then clearly sectioned (Do not use / What it computes / Inputs / Outputs / Formula / Fallback / Docs). It is longer than strictly necessary — the REST fallback and docs URLs plus the output-field list add bulk — but each block is labeled and skimmable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter reference checker with an output schema, annotations, and a documented formula, nothing an agent needs to select or call it is missing. Coverage limits, provenance, and the fallback path are all stated, so the definition is self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are documented in-schema, so the baseline is 3. The description adds real value by restating the 2026-2028 date bound, the enum-driven territory semantics, and a complete JSON example, though it does not add syntax beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (checks a date), resource (working day), and scope (supported OpenHolidays countries, nationwide-only, 2026-2028), and explicitly contrasts itself with the sibling check_china_working_day / check_uk_working_day / check_global_reference_working_day variants. An agent can route between the four working-day checkers without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives both a positive trigger (source-labelled nationwide reference for supported OpenHolidays countries) and an explicit negative list (official authority results, regional/local holidays, substitute-day rules, employer/bank/exchange closures, dates outside 2026-2028), then names the alternative packages to use instead. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_global_reference_working_dayGlobal Working Day ReferenceA
Read-onlyIdempotent
Inspect

Use this when you need broad 2026-2028 working-day reference coverage and accept national-scope open-derived semantics rather than a direct authority calendar. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an official direct authority, a regional/employer/bank/exchange calendar, a legal determination, or a date outside 2026-2028; use the official China/UK package or the CLDR baseline as appropriate. What it computes: Checks a date across 246 country/territory codes using a pinned OpenWorkdays national-scope public-holiday reference, country weekend rules and explicit working-weekend dates, with estimated/observed flags and non-authority limits. Example user requests: Is 2026-10-26 a working day in Australia using the broad national reference? | Check 2027-02-25 in Saudi Arabia and show whether the holiday date is estimated. Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-26","territory":"AU"} Outputs: territory, territory_name, source_territory_name, weekday, is_working_day, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: is_working_day = not source_weekend(date) and not source_public_holiday(date, country); explicit source working-weekend dates override the weekend classification Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date from 2026-01-01 through 2028-12-31.
territoryYesISO-style alpha-2 country code supported by the pinned OpenWorkdays reference snapshot.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes well beyond them: it discloses estimated/observed flags, non-authority limits, the pinned dataset version, coverage window, and the underlying formula. That is exactly the extra behavioral context a caller needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use decision, then when-not, then what it computes, examples, inputs, outputs, formula, and fallback. Every block earns its place, though the long output-field enumeration slightly overlaps with the output schema and could be trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param lookup with annotations and an output schema present, nothing an agent needs is missing: decision criteria, example requests, formula, REST fallback path, and docs link are all provided, and return-value detail is already in the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries the baseline. The description adds value by stating the territory set size (246 codes), the pinned-snapshot provenance of the enum, and giving a complete callable JSON example, though it does not explain territory-vs-source_territory nuances beyond the output list.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource with explicit scope: 'Checks a date across 246 country/territory codes using a pinned OpenWorkdays national-scope public-holiday reference'. It explicitly distinguishes itself from the official China/UK packages and CLDR baseline in the sibling set, so an agent can route correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use this when...' paragraph names the acceptance condition (broad reference coverage, national-scope open-derived semantics) and the 'Do not use this when...' paragraph names concrete exclusions (official authority, regional/employer/bank/exchange calendar, legal determination, out-of-range dates) and routes to the correct alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_global_working_dayGlobal Working Day BaselineA
Read-onlyIdempotent
Inspect

Use this when you need a worldwide weekday/weekend check and have a CLDR alpha-2 territory code, but do not need public-holiday exclusions. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need public holidays, substitute holidays, employer closures, bank settlement, stock exchange, school, religious or emergency closure rules; use a jurisdiction-specific evidence package instead. What it computes: Checks a Gregorian date for any supported CLDR alpha-2 territory code using the pinned Unicode CLDR weekend convention, with explicit holiday exclusions and provenance. Example user requests: Is 2026-10-05 a working day in Australia under the territory weekend rule? | Check whether Friday 2026-06-12 is a weekday in Saudi Arabia. | 判断 2026-10-01 在印度按周末规则是否为工作日。 Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-05","territory":"AU"} Outputs: date, territory, territory_display_name, weekday, is_working_day, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: is_working_day = weekday(date) not in CLDR(territory).weekendStart..weekendEnd Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date from 1900-01-01 through 2100-12-31.
territoryYesCLDR territory code in alpha-2 form. The complete accepted-code enum is exposed here; it includes ISO-style territory codes plus CLDR regional and legacy codes where present.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds real behavioral value beyond that: the pinned CLDR weekend convention, explicit holiday exclusions, provenance/dataset_version fields, and the exact formula. It does not cover rate limits, but for a pure read-only calculation this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well structured with labeled sections (what it computes, examples, inputs, outputs, formula, REST fallback, docs) and front-loaded usage guidance. It is somewhat verbose—multi-language example requests and a repeated output-field list are mildly redundant—but no single part is confusing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, yet the agent gets the formula, fallback endpoint, and docs link. For a 2-parameter, fully-annotated read-only tool, nothing needed to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (date, territory) are already documented in the schema, including the accepted enum and date range. The description adds only a JSON example and restates the two inputs, matching the baseline-3 expectation when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (global working day) with explicit scope: weekday/weekend only under CLDR territory convention. It clearly separates itself from siblings like check_global_public_holiday_working_day and check_uk_working_day by naming the exclusion of public-holiday rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('need a worldwide weekday/weekend check and have a CLDR alpha-2 territory code, but do not need public-holiday exclusions') and a detailed when-not-to-use list (holidays, substitute holidays, bank settlement, school, religious, etc.) routing to a jurisdiction-specific package. It also instructs to call directly rather than answer from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_gr_working_dayGreece Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Greece Greece nationwide compulsory public holidays under the employment-law layer for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide compulsory public-holiday layer over a Saturday-Sunday baseline. 28 October is included as published in the 2026 Ministry schedule; Gov.gr notes that optional-holiday and employer discretion can apply under the underlying legal framework. Clean Monday, Good Friday and Holy Spirit Monday are not generalized as compulsory closures. Regional, municipal, school, bank, exchange, employer, collective-agreement and sector schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Greece: Greece Easter Monday. | Greece: Greece ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-04-13"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/greece-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/greece-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Greece's pinned 2026 nationwide compulsory public-holiday coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive behavior, so the safety profile is covered. The description goes well beyond them by pinning the dataset to 2026 only, naming which holidays are and are not treated as compulsory closures (28 October in, Clean Monday/Good Friday/Holy Spirit Monday out), stating that optional-holiday and employer-discretion interpretation applies, and giving the underlying formula and REST fallback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

<score 5> <justification>N/A</justification>

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, yet the description still lists the output fields (mildly redundant). It compensates by covering scope, exclusions, year pinning, formula and a direct REST fallback, so an agent has enough context to call it correctly; only the broken 'do not use' clause leaves a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema description coverage is 100%, so the schema already carries the date semantics. The description repeats the input name and gives concrete JSON examples, but adds only the year-pinning note already implied by the schema; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The 'What it computes' line states a specific operation — checking a single date against a Saturday/Sunday baseline plus exact 2026 authority events — and the name/title identify the jurisdiction and the single-date check. However the opening sentence is garbled ('Greece Greece nationwide compulsory public holidays') and nothing explicitly separates it from the sibling count_gr_working_days / add_gr_working_days tools, so it stops short of a clean 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a real usage directive ('Call this tool directly and return its calculation instead of answering from memory'), plus scope exclusions (regional, municipal, school, bank, collective-agreement schedules not inferred). But the 'Do not use this when this package covers the nationwide compulsory public-holiday layer...' clause is incoherent and does not name a competing tool or a valid when-not condition, so routing guidance is only partly usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_hk_working_day中国香港特别行政区 Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic 中国香港特别行政区 Hong Kong general holidays under the General Holidays Ordinance; government/general public calendar only result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package is the Hong Kong general/public-holiday calendar. Statutory employee holidays, employer rest days, school calendars, bank/exchange closures and private-sector arrangements are not inferred. What it computes: Checks a date against the Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: 中国香港特别行政区: 2027 Lunar New Year substitute. | 中国香港特别行政区: 2026 Ching Ming substitution. Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-09"} | {"date":"2026-04-06"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hong-kong-general-holidays-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hong-kong-general-holidays-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned Hong Kong Government 2026-2027 general-holiday coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description goes further by disclosing determinism, the exact coverage window (2026-2027), the weekend baseline rule, explicit scope exclusions, and a REST fallback URL — real behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use trigger, but the body is padded with a garbled 'Do not use' sentence, duplicated example requests, an explicit outputs list (already in the output schema), a formula, a REST fallback and a docs link. Every field earns some place, but the hedging and redundant 'Inputs/Outputs/Formula' sections dilute it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param deterministic calendar check with an output schema, annotations and a docs link, the description supplies coverage window, exclusions and determinism guidance — nearly everything an agent needs. The contradictory 'Do not use this when...' line is the one gap that could mislead an agent about applicability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, so the schema already documents it and the baseline is 3. The description adds the coverage-window constraint ('pinned Hong Kong Government 2026-2027') and concrete JSON examples, which is marginal added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: checks a date against the Sunday weekend baseline and exact 2026-2027 authority events for the Hong Kong general-holiday calendar. It scopes the calendar ('government/general public calendar only'), which helps separate it from the many check_*_working_day siblings, though it never names the closest siblings (add_hk_working_days, count_hk_working_days).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a use-when trigger ('you need a deterministic ... result') and a directive to call it rather than answer from memory, plus a list of what is NOT covered (statutory employee holidays, employer rest days, school/bank/exchange closures). However, the 'Do not use this when this package is the Hong Kong general/public-holiday calendar' clause is self-contradictory and confusing, and no sibling alternative (add_hk_working_days vs check_ vs count_) is ever named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_hr_working_dayCroatia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Croatia Croatia 2026 article 1 general holiday facts with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline. Article 2 memorial days do not add rest. Article 3 religious rights depend on the person and, for specified festivals, the chosen day; they are not included in a universal union. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, payroll, legal deadlines and future years are not computed. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires explicit mon_fri_planning; memorials and person-specific religious rights are not general rest. Example user requests: Croatia: Good Friday is not a general statutory holiday. | Croatia: Corpus Christi. | Croatia: Independence memorial is not a rest holiday. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-04-03","work_schedule":"mon_fri_planning"} | {"date":"2026-06-04","work_schedule":"mon_fri_planning"} | {"date":"2026-06-25","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_commemorative_day, religious_rest_scope, payroll_scope. Formula: planning_workday = weekday AND no article_1_statutory_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/croatia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/croatia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Croatia coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual statutory roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real value beyond that: it discloses the formula, the holiday categories excluded from rest (memorial days, person-specific religious rights), and non-computed domains (payroll, legal deadlines, future years).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (What it computes, Inputs, Outputs, Formula, fallback, Docs) give useful structure, but the text is repetitive and garbled ('Croatia Croatia', '2026-2026') and restates exclusions more than once. Appropriate length is undermined by redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still covers scope boundaries, formula, and a REST fallback endpoint path. For a narrowly-scoped single-date check this is nearly complete, with only the confusing 'Do not use' clause as a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 both 'date' and 'work_schedule'. The description largely repeats this ('Requires explicit mon_fri_planning') and adds JSON examples, but contributes little semantic meaning beyond the schema's own enum explanation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events') and scopes it to Croatia 2026 article-1 general holidays. An agent can distinguish it from the many sibling check_*_working_day tools by country and year. The garbled opening ('deterministic Croatia Croatia 2026 article 1 general holiday facts') slightly muddies it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs 'Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery', which is clear usage direction. A 'Do not use this when...' clause exists but is garbled and hard to parse, so exclusions are less actionable than the positive guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_hu_working_dayHungary Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Hungary Hungary 2026 general Monday-Friday work schedule result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when hungary 2026 general Monday-Friday work schedule only (Labour Code section 97(2), NGM 10/2025). Requires explicit work_schedule. Eleven statutory holidays and three paired transfers are included; three Saturdays are working. No shift, personal, bank, exchange, school, local-office opening or payroll schedule is inferred. No automatic substitute Monday. The annual decree expires 2027-01-01; later schedules require new evidence. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires an explicit general Monday-Friday work schedule; includes three working Saturdays and paired rest dates. Example user requests: Hungary: Working Saturday compensates August 21. | Hungary: Christmas Eve is transferred rest, not statutory holiday. | Hungary: Whit Monday. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-08-08","work_schedule":"general_monday_friday"} | {"date":"2026-12-24","work_schedule":"general_monday_friday"} | {"date":"2026-05-25","work_schedule":"general_monday_friday"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_transferred_rest_day, is_makeup_working_day, transfer_pair, payroll_scope. Formula: working = published makeup day OR (weekday AND not statutory holiday AND not transferred rest) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hungary-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hungary-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Hungary coverage.
work_scheduleYesRequired: confirm the general Monday-Friday work schedule under Labour Code 97(2). Do not use for shifts or institution-specific opening.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/non-destructive, and the description adds substantial context beyond them: eleven statutory holidays, three paired transfers, three working Saturdays, no automatic substitute Monday, the formula, and the 2027-01-01 decree expiry. This is exactly the behavioral depth a mutation-free calculator needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bloated and repetitive: 'Hungary Hungary', '2026-2026', the same 'general Monday-Friday work schedule' phrase three times, and a grammatically broken 'Do not use this when ... only' fragment. Although the key usage statement is front-loaded, the duplication and template artifacts make it noisy rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the definition needn't explain return fields, and it still covers scope, exclusions, formula, argument examples and a REST fallback, which is a lot for a 2-parameter tool. The remaining gap is the broken exclusion sentence, but nothing critical to invoking it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both required parameters are documented in the schema itself. The description only restates that work_schedule must confirm the general Monday-Friday schedule and must not be used for shifts, adding marginal meaning over the enum and schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events', which tells an agent it is a point-in-time working-day check for Hungary rather than an add/count variant among the many siblings. However, the garbled opener 'Hungary Hungary 2026 general Monday-Friday work schedule result' muddies the statement and no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says to 'Call this tool directly and return its calculation instead of answering the formula from memory', and lists exclusions ('No shift, personal, bank, exchange, school, local-office opening or payroll schedule is inferred'). But the negative-guidance sentence ('Do not use this when hungary 2026 general Monday-Friday work schedule only') is incoherent and never tells the agent when to prefer check_hu_working_day over count_hu_working_days or add_hu_working_days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_id_working_dayIndonesia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Indonesia Indonesia national holidays and joint-leave schedule published by the three-minister SKB result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when cuti bersama is facultative for private employers and may be governed by each employer; ASN-specific implementation and local, sector, religious-optional and employer schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Indonesia: National holiday. | Indonesia: Joint leave is separately labelled. Inputs: date (date). Complete JSON argument examples: {"date":"2026-08-17"} | {"date":"2027-03-12"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/indonesia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/indonesia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Indonesia coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive, closed-world semantics, so the description sensibly spends its budget elsewhere: deterministic computation, the exact authority event source, dataset/coverage years, the explicit formula, and a REST fallback endpoint with a warning not to guess other paths. This is meaningful context beyond the annotations, though no freshness/rate-limit or error-handling behavior is described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core directive effectively, but the block is long for a single-date lookup: the full output field list is redundant given a declared output schema, and the 'Example user requests' lines ('Indonesia: National holiday.') add little. The repeated country name is a sloppy artifact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the essentials an agent needs: what the calculation means, its scope limits, source authority, coverage horizon, and a fallback path. The output-schema redundancy is a minor cost, and nothing critical for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and the schema covers it at 100% ('Gregorian date in Indonesia coverage'), so the schema carries the semantics. The description's 'Inputs: date (date)' and JSON examples repeat rather than extend what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (checks a date), resource (Indonesia working day), and scope (national holidays plus joint-leave from the three-minister SKB), and names the weekend baseline and 2026-2027 authority events it evaluates against. It is distinguishable from the many sibling check_*_working_day tools by country, though the opening sentence is garbled (repeated 'Indonesia Indonesia') and muddies the first read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you need a deterministic ... schedule') and when-not ('cuti bersama is facultative for private employers', ASN-specific, local/sector/religious-optional schedules not inferred), plus the directive to call it directly rather than answer from memory. It does not point to a specific alternative tool for the excluded cases, so it falls just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_india_central_working_dayIndia Central Government Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic 2026 central-government office baseline and can specify Delhi/New Delhi versus outside Delhi. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a state, Union Territory, bank, employer, school, exchange, or an outside-Delhi locally selected optional-holiday calendar. What it computes: Checks a 2026 date against the Department of Personnel and Training central-government holiday schedule, preserving Gazetted and Restricted distinctions. Example user requests: Is 2026-10-20 a working day for India's central government office in Delhi? | Is 2026-08-28 a guaranteed closure or only a restricted holiday option outside Delhi? Inputs: date (date); office_scope (enum). Complete JSON argument examples: {"date":"2026-10-20","office_scope":"delhi_new_delhi"} | {"date":"2026-08-28","office_scope":"outside_delhi"} Outputs: territory, territory_name, office_scope, office_scope_name, weekday, is_working_day, is_guaranteed_non_working_day, day_type, gazetted_holiday_names, restricted_holiday_names, restricted_holiday_available, calendar_scope, rest_day_policy, restricted_holiday_policy, selection_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = India Saturday/Sunday baseline and no applicable Gazetted holiday; Restricted holidays remain options Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/india-central-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/india-central-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned 2026 DoPT coverage.
office_scopeYesRequired scope: delhi_new_delhi or outside_delhi. State/UT holiday calendars are not represented by this package.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, but the description goes well beyond them: it discloses the computation formula, the Gazetted vs Restricted distinction, substitute-day and selection policies surfaced in the output, and even the direct REST fallback endpoint. This is rich behavioral context on top of a complete safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with usage routing first, then computation, inputs, examples, outputs, formula and fallback. It is verbose for a two-parameter tool and the inline JSON argument examples partially duplicate the schema's examples array, but every section is clearly labeled and earns its keep.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-date calculation tool with an output schema present, the description supplies everything needed: scope constraints, the computation rule, policy fields it returns, dataset/version context, and a REST fallback plus docs link. Nothing required to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (date, office_scope) are documented there, so the baseline is 3. The description adds value with worked user-story examples and full JSON argument examples that demonstrate the two enum values in realistic use, though the raw syntax itself is already in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Checks a 2026 date against the Department of Personnel and Training central-government holiday schedule') and pins the calendar scope precisely, which is exactly what separates it from the country-specific check_* siblings. It also clarifies the deterministic single-date semantics versus the add_/count_ india variants by telling the agent to 'Call this tool directly and return its calculation.'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('deterministic 2026 central-government office baseline ... Delhi/New Delhi versus outside Delhi') and when-not-to-use (state, UT, bank, employer, school, exchange, or outside-Delhi locally selected optional-holiday calendars). It further instructs the agent not to answer from memory or stop at discovery, which is a rare and valuable routing instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ireland_working_dayIreland Working DayA
Read-onlyIdempotent
Inspect

Use this when you need an Ireland national statutory public-holiday result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer, bank, school, sector, local or individually selected benefit day. What it computes: Checks an Ireland date against the Saturday-Sunday baseline and exact 2026-2027 national statutory public holidays. Good Friday is a normal working day and weekend holidays are not automatically moved to Monday. Example user requests: Is 2027-02-01 an Ireland working day? Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-01"} | {"date":"2027-03-26"} Outputs: territory, territory_name, weekday, is_working_day, holiday_names, calendar_scope, good_friday_policy, weekend_holiday_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = Monday-Friday and no exact national statutory public holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ireland-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ireland-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Ireland national 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the baseline is met; the description adds genuine semantics beyond them — Good Friday is treated as a normal working day, weekend holidays are not moved to Monday, and coverage is limited to exact 2026-2027 national statutory holidays. It omits nothing critical, though it could note behavior for out-of-range dates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with usage, then computation, examples, inputs, outputs, formula, and fallback in clearly labeled lines. Every section earns its place except the outputs enumeration and argument examples, which duplicate the output schema and input schema respectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, yet the description still confirms output fields and adds policy details (good_friday_policy, weekend_holiday_policy, calendar_scope) plus a REST fallback and docs link. For a one-parameter read-only calculator, nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single date parameter with its own format and examples, so the schema does the heavy lifting. The description's 'Inputs: date (date)' and examples merely restate the schema, but do confirm the argument shape. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (check an Ireland date against the weekend baseline and exact national statutory holidays) and scopes the calendar precisely to 2026-2027 national statutory holidays. It is immediately distinguishable from the many country-specific check_*_working_day siblings and from the add_/count_ variants by stating it returns a single-date working-day result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives both the when ('Use this when you need an Ireland national statutory public-holiday result') and the when-not ('Do not use this when you need an employer, bank, school, sector, local or individually selected benefit day'), plus instruction to call directly rather than answer from memory. This goes beyond anything inferable from the name or schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_it_working_dayItaly Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Italy Italy nationwide statutory/public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when regional, municipal, local patron-saint, school, bank, sector, collective-agreement and employer-specific schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Italy: Republic Day. | Italy: Easter Monday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-06-02"} | {"date":"2027-03-29"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/italy-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/italy-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Italy coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety bar is covered. The description adds real value beyond that: the deterministic nature, the exact formula, the 2026-2027 dataset window, the output field list, and a REST fallback endpoint. It does not flag rate limits or auth needs, but for a pure calculator that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded, with the when-to-use condition leading and supporting detail (formula, outputs, fallback) following. It is somewhat padded with output field enumeration and a REST fallback line, and contains a duplicated 'Italy Italy' typo, but nothing is egregiously wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, and annotations cover the safety profile. The description still supplies scope, exclusions, formula, and dataset window, leaving an agent able to call it correctly. Only minor gaps (no explicit note on invalid/out-of-range dates) remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is only one parameter ('date', Gregorian date in Italy coverage). The description restates 'Inputs: date (date)' and gives JSON examples but adds no semantics beyond what the schema already documents, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: it 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events' for Italy. The country scope makes it clearly distinguishable from the many check_*_working_day siblings without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use this when' and 'Do not use this when' sections that name the excluded cases (regional, municipal, local patron-saint, school, bank, sector, employer-specific schedules). The exclusion sentence is grammatically garbled ('...are not inferred'), which slightly blunts the otherwise clear when-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_japan_national_working_dayJapan National Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need Japan statutory national-holiday status for 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a company, school, bank, exchange or prefectural closure calendar. What it computes: Checks a date against Japan's statutory national holidays and Saturday/Sunday baseline. Example user requests: Is 2027-03-22 a Japan working day? Inputs: date (date). Complete JSON argument examples: {"date":"2027-03-22"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_legal_bases, weekend_days, calendar_scope, rest_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = Japan weekday baseline and no Cabinet Office statutory holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/japan-national-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/japan-national-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned Cabinet Office 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavior: the pinned 2026-2027 coverage window, the computation rule (weekday baseline and no Cabinet Office statutory holiday), and that outputs carry dataset_version and sources. No auth or rate-limit notes, hence not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (when, when-not, computes, example requests, inputs, outputs, formula, fallback, docs) make it scannable and the highest-value content is front-loaded. It is longer than strictly necessary — the formula line and the REST fallback are edge-case detail — but nothing is actively wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still names the coverage window, the exclusions, an example request and a fallback path, so an agent has everything needed to call it correctly and interpret results. Nothing material is missing for a single-parameter read-only calculator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema coverage, and the schema already documents it as a Gregorian date in the pinned Cabinet Office 2026-2027 window. The description repeats 'date (date)' and the same range constraint, adding essentially no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (checks a date against Japan's statutory national holidays) plus the exact scope window (2026-2027) and the explicit boundary against other calendar types (company, school, bank, exchange, prefectural). An agent can distinguish this from the other check_* country tools and from add_/count_japan_national_working_days without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit 'use this when' condition, an explicit 'do not use this when' exclusion (non-statutory closure calendars), and instructs the agent to call the tool directly rather than answer from memory or stop at discovery. That is the full when/when-not/alternative triad.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ke_working_dayKenya Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Kenya Kenya 2026 nationwide public-holiday layer over a Saturday-Sunday working-week baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide public-holiday layer only. It is not a universal private-employer, bank, school, county, sector, diplomatic or shift-work calendar. The Saturday-Sunday baseline is a calculation convention for ordinary weekday work, not a claim that every employer uses the same roster. Idd-ul-Fitr and Idd-ul-Adha are pinned to the 2026 Gazette declarations; future lunar dates and later special notices require a refreshed package. The Act's Sunday substitution rule is preserved and no Saturday-to-Monday substitution is inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Kenya: Idd-ul-Fitr public holiday. | Kenya: Ordinary Kenya working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-03-20"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kenya-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kenya-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Kenya's pinned 2026 nationwide public-holiday coverage over a Saturday-Sunday baseline.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, yet the description adds real substance beyond them: data is pinned to the 2026 Gazette, Idd dates won't roll forward without a refreshed package, the Sunday substitution rule is preserved and no Saturday-to-Monday substitution is inferred, and the exact formula is stated. The only gap is that this detail is buried in run-on sentences rather than cleanly surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose is heavily padded and repetitive ('Kenya Kenya', '2026-2026'), mixes usage guidance, limitations, formula, output field list, a REST fallback URL and a docs URL into one undifferentiated block, and front-loads a confusing sentence. Useful content exists but it is not structured or trimmed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, output-schema-backed, fully annotated read-only tool, the description is more than complete: it covers coverage scope, data vintage, substitution policy, output fields, formula and a REST fallback. The remaining weakness is organizational rather than missing information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter with 100% schema coverage, so the schema already documents the date field and its format. The description adds only marginal meaning (that the date is interpreted against the 2026 pinned coverage and the weekend baseline), giving no syntax or edge-case detail beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checking a date against a Saturday-Sunday weekend baseline plus exact 2026 Kenya public-holiday events, which lets an agent tell it apart from other country checkers. However, the phrasing is garbled ('deterministic Kenya Kenya 2026 nationwide public-holiday layer') and it never explicitly contrasts itself with the sibling count_ke_working_days / add_ke_working_days tools, so sibling differentiation is only implicit via the country code.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does give directives ('call this tool directly and return its calculation instead of answering from memory') and lists scope exclusions (not a private-employer, bank, school, county, sector or shift-work calendar). But the 'Do not use this when this package covers the nationwide public-holiday layer only' sentence is self-contradictory and unhelpful, and no alternative sibling tool (e.g. count_ke_working_days for ranges) is named as a when-to-use alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_kr_working_daySouth Korea Working DayB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic South Korea South Korea statutory public holidays and public-office substitute holidays for 2026 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the package covers the 2026 statutory/public-office schedule only; private-employer, school, bank, exchange, local-government and 2027 schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: South Korea: New Labor Day public holiday. | South Korea: Published substitute holiday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-01"} | {"date":"2026-10-05"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-korea-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-korea-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in South Korea coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, so the safety profile is covered; the description adds genuine behavioral context such as 2026-only coverage, what is explicitly not inferred, the deterministic weekend+authority-event formula, and a REST fallback URL. This goes beyond restating annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

There is a duplicated 'South Korea South Korea' phrase and an awkward '2026-2026' range, plus a long, run-on 'Do not use this when...' clause. The useful content is buried rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it still lists the fields, adds coverage/scope limits and a fallback endpoint. For a single-parameter read-only checker, the description is essentially complete despite the wording flaws.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and only one parameter exists, so the schema already carries the parameter meaning; the description merely restates 'Inputs: date (date)' and provides JSON examples that duplicate the schema's examples. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does state a specific verb+resource (check a date against South Korea statutory/public-office holidays for 2026), but the opening sentence is garbled with duplicated text ('deterministic South Korea South Korea statutory public holidays...result'), which muddies the intent. It names the territory but does not distinguish itself from the sibling check/count/add_kr_working_day tools beyond the country label.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('Call this tool directly and return its calculation instead of answering the formula from memory') and gives a when-not boundary covering private-employer, school, bank, exchange, local-government, and 2027 schedules not being inferred. It does not, however, tell the agent to prefer this over the sibling count_kr/add_kr tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_kz_working_dayKazakhstan Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Kazakhstan Kazakhstan nationwide published 2026 five-day public-holiday and transfer schedule result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide published 2026 five-day schedule over a Saturday-Sunday baseline. Six-day, shift, continuous-operation, employer, bank, school, local and sector calendars are not inferred. Qurban Ait is represented by the published 2026 first-day date. Adilet's current text records Constitution Day on 15 March with an amendment effective 2026-07-01, while the published 2026 government calendar does not add a March 15/16 closure; this package follows the published 2026 calendar and future-year packages must refresh the legal transition. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Kazakhstan: Nauryz transfer day. | Kazakhstan: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-03-24"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kazakhstan-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kazakhstan-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Kazakhstan's pinned 2026 nationwide published five-day schedule.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, so the safety profile is covered. The description adds real behavioral context beyond that: the Qurban Ait first-day convention, the Adilet Constitution Day vs published-calendar discrepancy, the is_working_day formula, and a REST fallback path with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition, which is good, but the body is verbose and repetitive ('Kazakhstan Kazakhstan', '2026-2026') and includes a legal-amendment tangent (Adilet Constitution Day / 2026-07-01 transition) whose relevance to a caller is marginal. Some sentences do not clearly earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-input, deterministic calculator with an output schema, the description is largely complete: it defines scope, exclusions, the formula, sample inputs, and a fallback endpoint. It redundantly enumerates output fields already covered by the output schema, but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already defines 'date' as a Gregorian date in the pinned 2026 schedule. The description reinforces this with two complete JSON argument examples and the pinned-calendar constraint, adding modest value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: check a date against Kazakhstan's pinned 2026 nationwide five-day schedule, and lists the exact computable output (is_working_day, holiday_names, etc.). It implicitly distinguishes check_ from the add_/count_ siblings by saying it 'checks a date', but never names them. A duplicated token ('Kazakhstan Kazakhstan') and dense phrasing slightly blur the opening.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('call this tool directly and return its calculation instead of answering from memory or stopping at discovery') and a clear exclusion list (six-day, shift, continuous-operation, employer, bank, school, local, sector calendars are not inferred). It does not name sibling tools like add_kz_working_days or count_kz_working_days, so routing among the family is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_lk_working_daySri Lanka Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Sri Lanka Sri Lanka 2026 public, bank, mercantile and full-moon Poya holiday calendar, plus dated temporary government-office closures result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a combined official holiday-class calendar, not a universal private-employer closure rule. Public, bank and mercantile classifications remain in each event kind; the March 18, March 25 and April 1 fuel-conservation entries apply to government offices only and the schedule was cancelled effective April 8. Essential services, schools, private employers, sector agreements, local arrangements and later unlisted notices are not inferred. The additional day after the National Vesak Festival is not invented beyond the published May 2 calendar entry. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Sri Lanka: Poya holiday. | Sri Lanka: Temporary government-office Wednesday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-08-27"} | {"date":"2026-03-25"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sri-lanka-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sri-lanka-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Sri Lanka's pinned 2026 combined public/bank/mercantile holiday coverage over a Saturday-Sunday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description only needs to add behavioral context - and it does: it discloses the exact formula, that temporary fuel-conservation closures apply to government offices only and were cancelled April 8, and that essential services, schools, private employers, sector agreements and unlisted notices are NOT inferred. This meaningful 'what is not covered' disclosure exceeds what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a usable opening sentence, but the 'Do not use this when...' sentence is garbled and several sections (Formula, Outputs field list, REST fallback, Docs link) add bulk. The restated output-field inventory is largely redundant given the output schema exists. The dense caveat list earns its place, but the overall size is disproportionate to a single-date check.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter date check with a full output schema and rich annotations, the description supplies the needed context: what is computed, the formula, the calendar scope, and the explicit non-inferences. Listing output fields is unnecessary given the schema, but nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'date' parameter, so the schema already documents format and examples. The description restates 'Inputs: date' and adds two complete JSON argument examples, which adds minor convenience but no semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it checks a date against a Saturday-Sunday weekend baseline and exact 2026 Sri Lanka authority events, returning a working-day result. The country-specific scope (Sri Lanka 2026 public/bank/mercantile/Poya calendar) is clear enough to distinguish it from the many other country siblings. However, it never explicitly positions itself against the sibling pair count_lk_working_days / add_lk_working_days, and the duplicated phrase 'Sri Lanka Sri Lanka' is a blemish.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a 'Use this when...' opener, but the 'Do not use this when this is a combined official holiday-class calendar, not a universal private-employer closure rule' clause is malformed and does not name an alternative tool or a real exclusion condition. It does implicitly scope the tool to official holiday-class calendars rather than private-employer rules, which is useful. No guidance is given on choosing between this and its add_/count_ siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_lt_working_dayLithuania Working DayC
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Lithuania Lithuania 2026 statutory holiday facts over explicit mon_fri_planning result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when lithuania 2026 Labour Code holiday facts with explicit mon_fri_planning or mon_sat_planning. Sixteen full-day statutory holidays; pre-holiday one-hour rules do not create additional rest. No weekend substitution or bridge is inferred. Required work_schedule selects a planning calendar, not a universal personal roster. Actual hours, pay, shifts, local/employer/sector/school/bank schedules, religious personal leave, legal deadlines and future years are not computed. What it computes: Checks whether a date is working in the explicitly selected Lithuania 2026 five-day or six-day planning workweek. Sixteen statutory holidays; conditional one-hour eve markers never add full-day rest. Example user requests: Lithuania: Restoration of the State is a statutory holiday. | Lithuania: August 14 shortening is not full-day rest. | Lithuania: Good Friday is not an Article 123 rest day. | Lithuania: Easter eve depends on selected workweek. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-02-16","work_schedule":"mon_fri_planning"} | {"date":"2026-08-14","work_schedule":"mon_fri_planning"} | {"date":"2026-04-03","work_schedule":"mon_fri_planning"} | {"date":"2026-04-04","work_schedule":"mon_fri_planning"} | {"date":"2026-02-16","work_schedule":"mon_sat_planning"} | {"date":"2026-08-14","work_schedule":"mon_sat_planning"} | {"date":"2026-04-03","work_schedule":"mon_sat_planning"} | {"date":"2026-04-04","work_schedule":"mon_sat_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_preholiday_rule_date, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope. Formula: planning_workday = day in selected workweek AND no statutory_holiday_rest; shortened work dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lithuania-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/lithuania-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Lithuania coverage.
work_scheduleYesRequired mon_fri_planning or mon_sat_planning. Choose the intended baseline explicitly; no universal or personal roster inferred.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

C2.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds substantive domain behavior beyond them: sixteen statutory holidays, conditional one-hour eve markers never adding full-day rest, no weekend substitution or bridge inference, and that work_schedule selects a planning calendar rather than a universal roster. That is genuine added context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated and repetitive (duplicated 'Lithuania Lithuania', lower-cased 'lithuania 2026 Labour Code'), with eight literal JSON argument examples and a full output-field list that duplicate the schema and output schema. The most important routing guidance is buried and mangled rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a calendar-rule tool the description does cover scope limits, holiday counting rules, and the planning-vs-personal distinction, and an output schema exists so return values need not be explained. But the contradictory 'do not use' line and the garbled opening undermine reliability, leaving the agent with an unclear selection story.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with only two parameters, so the schema itself documents date and work_schedule (including the enum meaning). The description restates the enum choices and clarifies the calendar is a baseline, not a personal roster, but adds little beyond what the schema already says; baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The name and later prose establish it checks whether a single date is a working day in the Lithuania 2026 five- or six-day planning week, and the formula line confirms that. However the opening sentence is garbled ('Lithuania Lithuania 2026 statutory holiday facts over explicit mon_fri_planning result') and it never distinguishes itself from check_lv/check_ee or from its own count_lt_working_days and add_lt_working_days siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Do not use this when lithuania 2026 Labour Code holiday facts with explicit mon_fri_planning or mon_sat_planning' line is incoherent and arguably tells the agent not to use the tool in exactly the case it exists for, which is actively misleading. There is some useful scope exclusion (hours, pay, shifts, local/employer rosters, deadlines, future years are not computed), but the primary when/when-not guidance is broken.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_lu_working_dayLuxembourg Working DayB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Luxembourg Luxembourg 2026-2028 eleven annual statutory holidays with explicit Monday-Friday planning baseline before individualized leave result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when luxembourg 2026-2028 statutory holiday dates over an explicitly selected Monday-Friday planning baseline, BEFORE individual annual or compensatory leave. A holiday on a normally non-worked day may produce compensatory leave depending on the employee's schedule, hours and applicable rules; no compensation date or next-Monday closure is assigned here. Bank-only Good Friday/Christmas Eve afternoon, customary or collectively agreed holidays, school/local/employer/shift schedules, hours, payroll, personal entitlements and legal deadlines are not computed. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2028 authority events. Requires explicit mon_fri_planning; personal compensatory leave and bank-only closures are not computed. Example user requests: Luxembourg: Europe Day is statutory rest. | Luxembourg: No uniform Monday compensation date. | Luxembourg: Bank-only Good Friday is not general statutory rest. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-05-09","work_schedule":"mon_fri_planning"} | {"date":"2026-05-11","work_schedule":"mon_fri_planning"} | {"date":"2026-04-03","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, holiday_on_baseline_weekend, compensatory_leave_scope, compensatory_date_policy, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_holiday_rest; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/luxembourg-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/luxembourg-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Luxembourg coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not a personal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds genuine behavioral context beyond that: it is deterministic, assigns no compensation date or next-Monday closure, excludes bank-only Good Friday/Christmas Eve afternoon, and covers only the Monday-Friday planning baseline rather than a personal roster. It does not discuss performance or failure modes, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is heavily padded and repetitive: the same scope caveats (no compensatory leave, no bank-only closures, no personal roster) are restated three times, the opening is ungrammatical, and inputs/outputs/formula/docs are enumerated at length even though an output schema exists. The one useful routing sentence is buried mid-block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param, read-only lookup with an output schema, the description covers the necessary scope limits: coverage window (2026-2028), weekend-plus-statutory-holiday baseline, and everything deliberately not computed. The REST fallback and doc links are supplied. Listing output fields is redundant given the output schema, but nothing an agent needs to call it correctly is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reinforces that work_schedule must be an explicit mon_fri_planning baseline and that it is not a personal roster, but adds no syntax or format detail beyond the schema for either parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence is garbled ("a deterministic Luxembourg Luxembourg 2026-2028 eleven annual statutory holidays with explicit Monday-Friday planning baseline before individualized leave result"), which obscures the purpose. However, the later line "What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2028 authority events" does state a concrete verb+resource+scope. It distinguishes the statutory-baseline scope from personal leave, but never names sibling check/count/add tools directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly frames usage with "Use this when..." and a "Do not use this when..." boundary, plus repeated exclusions (no compensatory date, no next-Monday closure, no bank-only holidays, no personal roster). The negative guidance is garbled and largely restates the positive case rather than pointing to an alternative tool, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_lv_working_dayLatvia Working DayB
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Latvia Latvia 2026 statutory calendar, explicit statutory_holidays_only and Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when latvia 2026 only. Explicit calendar_basis and work_schedule=mon_fri_planning are required. The transfer basis applies Cabinet Order 330 only when the organization is covered or has adopted it; no private employer adoption is inferred. Section 2 observances do not add rest. Shortening is conditional, not full-day rest. Six-day/shift/personal rosters, other religious calendars, bank/exchange/school opening, payroll, actual hours and legal deadlines are not computed. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Explicit transfer basis and mon_fri_planning required. Separate statutory rest, non-rest observances, transferred work/rest and conditional shortening. Example user requests: Latvia: Mother's Day is statutory even on Sunday. | Latvia: January 2 depends on explicit transfer basis. | Latvia: June 27 depends on explicit transfer basis. Inputs: date (date); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"date":"2026-05-10","calendar_basis":"statutory_holidays_only","work_schedule":"mon_fri_planning"} | {"date":"2026-01-02","calendar_basis":"statutory_holidays_only","work_schedule":"mon_fri_planning"} | {"date":"2026-06-27","calendar_basis":"statutory_holidays_only","work_schedule":"mon_fri_planning"} | {"date":"2026-05-10","calendar_basis":"cabinet_order_330_transfers","work_schedule":"mon_fri_planning"} | {"date":"2026-01-02","calendar_basis":"cabinet_order_330_transfers","work_schedule":"mon_fri_planning"} | {"date":"2026-06-27","calendar_basis":"cabinet_order_330_transfers","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, is_non_rest_observance, is_transferred_rest_day, is_transferred_working_day, is_shortened_workday, statutory_shortening_hours, shortening_scope, payroll_scope, personal_roster_scope, working_hours_scope, additional_religious_holidays_scope. Formula: planning_workday = explicit transferred working date OR (weekday AND no statutory/selected transferred rest); shortened dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/latvia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/latvia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Latvia coverage.
work_scheduleYesRequired explicit Monday-Friday baseline before any selected Order 330 transfers; not a universal or individual roster.
calendar_basisYesRequired statutory_holidays_only or cabinet_order_330_transfers. Choose the latter only for a covered institution or an employer adopting the order; never infer adoption.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the safety bar is met. The description adds meaningful behavioral context beyond that: deterministic output, no inference of Order 330 adoption, conditional (not full-day) shortening, and separate treatment of statutory rest vs non-rest observances. The no-inference rule and shortening caveat are genuinely useful, though the value is diluted by repetition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is heavily bloated: a redundant 'Latvia Latvia' opening, near-duplicate requirement statements ('Explicit ... required' repeated thrice), six inline JSON examples duplicating the schema's own examples, and a full re-listing of output fields despite an existing output schema. Sentence fragments ('What it computes:', 'Formula:') pad length without adding selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a three-param, fully-enumerated tool with an output schema, the description covers the essentials: scope, exclusions, formula, REST fallback, and docs link. The REST fallback and the 'do not guess another /api/* path' note are helpful operational context. It over-delivers by restating outputs, but nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real enum semantics: it explains that cabinet_order_330_transfers applies only to covered institutions or adopting employers and must never be inferred, and that mon_fri_planning is a required explicit baseline. This goes beyond the schema's field descriptions and helps the agent choose enum values correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description eventually conveys that the tool checks a date against the Latvia 2026 statutory calendar, weekend baseline, and transferred rest days, so the verb+resource is inferable. But it opens with a garbled, redundant phrase ('deterministic Latvia Latvia 2026 statutory calendar') that obscures rather than clarifies the purpose. It is distinguishable from the many sibling country checkers by name, but the prose itself is muddled.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers a 'Use this when...' clause and a substantial 'not computed' exclusion list (six-day rosters, payroll, legal deadlines, other religious calendars), which is genuine guidance. However, the stated exclusion 'Do not use this when latvia 2026 only' is incoherent, and no sibling or alternative (e.g. count_lv_working_days, add_lv_working_days) is named, leaving usage partly implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_mt_working_dayMalta Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Malta Malta 2026 fourteen named statutory holidays and Sunday public holidays with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when malta 2026 named statutory holidays and Sunday public-holiday status over an explicitly selected Monday-Friday planning baseline BEFORE individual annual or compensatory leave. Additional vacation entitlement for a named holiday on a weekly rest day depends on the person's employment and roster; no next-Monday or later leave date is assigned. Bank-only, school, local, employer and shift calendars, hours, payroll, personal entitlements and legal deadlines are not computed. Future years require a separately verified package. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Required mon_fri_planning; named holidays and Sunday statutory status remain distinct. Personal leave and bank-only dates are not computed. Example user requests: Malta: Good Friday is scheduled public rest. | Malta: Ordinary Sunday is public holiday, not a named holiday. | Malta: No invented Monday compensation. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-04-03","work_schedule":"mon_fri_planning"} | {"date":"2026-01-04","work_schedule":"mon_fri_planning"} | {"date":"2026-06-08","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_public_holiday, is_named_statutory_holiday, is_national_holiday, is_other_scheduled_public_holiday, is_sunday_public_holiday, holiday_on_baseline_weekend, sunday_legal_basis, compensatory_leave_scope, personal_roster_scope, payroll_scope, compensatory_date_policy. Formula: planning_workday = Monday_to_Friday AND no named statutory holiday; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malta-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malta-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Malta coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not personal attendance.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds real behavioral context beyond that: no next-Monday compensation, personal/bank-only/school/local/employer calendars are out of scope, and future years require a separately verified package. This meaningfully extends the safety profile with scope boundaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Heavily bloated and repetitive: 'Malta Malta 2026' duplication, the enum/scope caveats restated multiple times, and a full enumeration of output fields that the output schema already defines. The front-loaded use/don't-use framing is good, but much of the body does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter date-check tool with an output schema, the description covers scope, exclusions, formula, and worked JSON examples, so an agent has what it needs to call it correctly. It over-explains return values the output schema already provides, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, so the baseline is 3. The description restates the work_schedule meaning ('mon_fri_planning baseline BEFORE individual annual/compensatory leave') and supplies the formula, but adds little semantics the schema does not already carry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The 'What it computes' line states a specific verb and resource: 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events.' Being Malta-scoped, it clearly distinguishes itself from the many check_xx_working_day siblings. Garbled phrasing like 'deterministic Malta Malta 2026 fourteen named statutory holidays' creates noise, but the operation is still identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when...' and 'Do not use this when...' framing, plus a directive to 'Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.' The negative clause is syntactically mangled, and no alternative sibling tool is named, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_mx_working_dayMexico Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Mexico Mexico Federal Labour Law mandatory rest days result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when article 69 weekly rest is at least one day after six days and the employer/worker schedule is not inferred; sector, state, employer, school and bank calendars are outside scope. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Mexico: Constitution Day observed. Inputs: date (date). Complete JSON argument examples: {"date":"2026-02-02"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/mexico-labor-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/mexico-labor-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Mexico coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description adds genuinely useful behavior beyond that: the coverage window (2026-2027), the exact formula used, deterministic output, named dataset_version/sources, and a REST fallback endpoint. This is meaningful disclosure beyond the structured hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is well segmented with clear headings (use/when-not/what it computes/inputs/outputs/formula/fallback/doc) and front-loads the decision criteria. It loses a little to redundancy: the full outputs list duplicates the existing output schema and the JSON example duplicates the schema example, and the typo in the first sentence is noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only calculation tool with an output schema, the description supplies the coverage boundary (2026-2027 only), scope exclusions, the formula, and a REST fallback, so an agent has enough to call it correctly. The redundant output enumeration is unnecessary given the output schema but does not leave gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'date' parameter is already documented as a Gregorian date in the schema. The description only restates 'Inputs: date (date)' plus a JSON example, adding no format or constraint meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource ('checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events') and the opening sentence names the deterministic calculation intent. However the opening line has a duplicated word ('Mexico Mexico') and, despite a large sibling set (add_mx_working_days, count_mx_working_days, other check_*_working_day tools), it never explicitly says how this differs from the MX count/add variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit 'Use this when' directive (deterministic result, return the calculation instead of recalling from memory) and an explicit 'Do not use this when' clause with scope exclusions (sector, state, employer, school and bank calendars out of scope). The exclusion sentence is convoluted and never names the sibling alternatives, so the routing guidance is present but imperfect.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_my_working_dayMalaysia Division Public-Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a division-specific Malaysian public-holiday result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the division is unknown, or you need an employer, bank, exchange, school or inferred replacement-day calendar. What it computes: Checks a Malaysian date with a required federal-territory/state division, BKPP/JPM's 2027 public-holiday table and division weekly-rest baseline. Example user requests: Is 2027-02-08 a working day in Kuala Lumpur? | Check 2027-06-06 in Terengganu. Inputs: date (date); division (enum). Complete JSON argument examples: {"date":"2027-02-08","division":"KUL"} Outputs: territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: is_working_day = division weekly baseline and no applicable BKPP event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malaysia-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malaysia-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned 2027 coverage.
divisionYesRequired federal-territory/state code: KUL, LBN, PJY, JHR, KDH, KTN, MLK, NSN, PHG, PRK, PLS, PNG, SBH, SWK, SGR or TRG.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantial context beyond them: the pinned 2027 dataset scope, the BKPP/JPM source, the computation formula, and a REST fallback URL with an explicit warning not to guess other /api/* paths. This is well above the annotation-covered bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with usage and exclusions, then computation, examples, inputs, outputs, formula, fallback. Well-structured and scannable, but the enumerated Outputs list is redundant given an output schema exists, and the sectioning adds length beyond what is strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param, no-nesting, closed-world, idempotent calculation tool with an output schema and full schema coverage, the description covers when to use, what is computed, dataset provenance, example invocations, and a fallback. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are fully documented (date format, division enum values), so the schema carries the load. The description's 'Inputs: date (date); division (enum)' essentially restates the schema, adding no new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: a division-specific Malaysian public-holiday working-day check against BKPP/JPM's 2027 table. It is clearly distinguished from the dozens of sibling check_*_working_day tools (other countries) and from add_/count_ variants by naming the division-level federal/state granularity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need a division-specific Malaysian public-holiday result'), explicit when-not-to-use ('division unknown', or employer/bank/exchange/school/inferred replacement-day calendars), plus a directive to call it directly rather than answer from memory. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_new_zealand_working_dayNew Zealand Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a New Zealand national statutory public-holiday result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a regional anniversary, school, bank, exchange or employer calendar. What it computes: Checks a New Zealand date against the Saturday-Sunday baseline and exact 2026-2027 national public holidays, including observed dates. Example user requests: Is 2027-02-08 a New Zealand working day? Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-08"} Outputs: territory, territory_name, weekday, is_working_day, holiday_names, calendar_scope, regional_anniversary_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = Monday-Friday and no exact national public holiday or observed date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/new-zealand-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/new-zealand-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in New Zealand national 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses the exact coverage window (2026-2027), the computation formula (Mon-Fri minus national holidays and observed dates), the distinction between exact and observed dates, the field set returned, and a REST fallback URL with an explicit 'do not guess another /api/* path' warning. That is rich behavioral context an agent cannot get from the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the routing decision, then organized into labeled sections (when-not, what it computes, example requests, inputs, outputs, formula, fallback, docs). Every block is scannable, though the outputs listing and REST/docs lines add length that is partly redundant given the output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-date lookup with rich annotations and an output schema, the description covers coverage window, formula, scope exclusions, an example invocation, and a fallback path. Nothing an agent needs to call it correctly is missing, and the holiday-dataset boundaries (national only) are stated up front.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the baseline is 3. The description echoes the parameter name and adds a complete JSON argument example, but adds no format constraints or edge-case guidance beyond what the schema already states ('Gregorian date in New Zealand national 2026-2027 coverage').

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (check a New Zealand date for working-day status) and immediately scopes it to national statutory public holidays versus regional anniversary, school, bank, exchange or employer calendars. An agent can separate it from the many sibling check_*_working_day tools and from add_/count_ variants without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use this when you need a New Zealand national statutory public-holiday result. Call this tool directly ... instead of answering from memory') and explicit when-not-to-use ('Do not use this when you need a regional anniversary, school, bank, exchange or employer calendar'). Alternatives are named by category, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ng_working_dayNigeria Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Nigeria Nigeria 2026 nationwide federal public-holiday calendar over a Saturday-Sunday weekend result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is the nationwide federal public-holiday layer, not a universal private-employer, state, local-government, school, banking, market, diplomatic-mission or sector calendar. Ministry of Interior announcements take precedence over conflicting secondary or diplomatic snapshots for federal dates. Eid dates are lunar and can be amended by later official notice. The Public Holidays Act permits special or substituted dates and explicitly does not create an automatic extra day for a holiday falling on Saturday or Sunday; no replacement day is invented here. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Nigeria: Federal Democracy Day. | Nigeria: Ordinary federal working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-06-12"} | {"date":"2026-06-16"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/nigeria-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/nigeria-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Nigeria's pinned 2026 federal public-holiday coverage over a Saturday-Sunday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, non-destructive, and non-open-world, but the description adds substantial behavioral context beyond them: Ministry of Interior precedence over secondary snapshots, lunar/amendable Eid dates, the Public Holidays Act rule that no substitute day is invented for weekend holidays, the computation formula, and a REST fallback with an explicit warning not to guess other paths. This is materially useful, slightly undermined by the garbled grammar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bloated and corrupted: 'Nigeria Nigeria', '2026-2026', a self-contradictory 'Do not use this when this is...', plus a full output-field dump. It is loosely sectioned (Use/Do not/What it computes/Inputs/Outputs/Formula/Fallback/Docs) but key intent is buried behind repetition and duplication.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, yet the description still lists outputs. It covers scope boundaries, authority precedence, lunar caveats, the computation formula, a REST fallback URL, and docs link – enough for an agent to call it correctly. The main deficiency is the broken when-not guidance rather than missing factual content.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single date parameter, so the baseline is 3. The description repeats the input ('Inputs: date (date)') and supplies complete JSON argument examples, but adds no format or meaning beyond what the schema already states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (checks a date against a Nigeria 2026 federal working-day calendar) and later a formula, so the core function is recoverable. However, the opening is garbled ('Nigeria Nigeria 2026 nationwide federal public-holiday calendar over a Saturday-Sunday weekend result') and it never explicitly distinguishes itself from the sibling check_ng_working_day vs count_ng_working_days vs add_ng_working_days family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It does give one useful directive ('Call this tool directly and return its calculation instead of answering from memory'), which is real usage guidance. But the 'Do not use this when...' clause is malformed – it restates scope limitations (nationwide federal, not state/private/sector) rather than naming an actual condition or alternative tool, so the when-not guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_nl_working_dayNetherlands Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Netherlands Netherlands official public holidays for 2026-2027; employee day-off status remains CAO/contract dependent result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when a public holiday is not automatically a paid day off for every Dutch employee. CAO, employment contract, sector, employer, school, bank and municipal schedules are not inferred; Liberation Day arrangements may be five-year/CAO dependent. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Netherlands: King's Day. | Netherlands: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-04-27"} | {"date":"2026-04-28"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/netherlands-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/netherlands-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Netherlands coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a read-only, idempotent, non-destructive, closed-world operation. The description adds useful behavioral context: 2026-2027 coverage, the exact weekend/authority-event formula, the deterministic nature, and the warning that CAO, sector, employer, school, bank, and municipal schedules are not inferred.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is heavily over-specified for a one-parameter check tool. It redundantly lists output fields despite an output schema, repeats JSON examples, and includes REST fallback and docs details that inflate the text without improving selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema, output schema, and annotations, the description is sufficiently complete: it defines the coverage window, deterministic formula, limitations, and direct invocation expectation. The only shortfall is that its verbosity and garbled opening sentence add noise rather than missing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single date parameter is already documented in the schema as a Gregorian date in Netherlands coverage. The description repeats the input name and adds examples, but it does not add meaningful syntax or constraint information beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it checks a date against the Netherlands working-day baseline and 2026-2027 authority events. The country scope distinguishes it from other country-specific check tools, though the opening phrase 'Netherlands Netherlands official public holidays' is garbled and briefly misstates what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a use case and a caveat about not inferring CAO/contract-dependent day-off status, but the guidance is awkwardly worded and does not explicitly compare this tool to sibling alternatives such as count_nl_working_days or add_nl_working_days. The agent is told to call it directly, but the when-not-to-use condition is more of a domain limitation than a routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_no_working_dayNorway Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Norway Norway nationwide statutory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory full-day list only. Christmas Eve, Easter Eve, Whit Eve, New Year's Eve, collective-agreement, employer, sector, school, bank and local closures are not inferred. Norwegian annual-leave law treats Saturdays separately from Sundays and public holidays; this package uses the declared Monday-Friday business baseline. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Norway: Constitution Day. | Norway: Christmas Eve is not a full-day statutory holiday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-17"} | {"date":"2026-12-24"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/norway-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/norway-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Norway coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered; the description still adds real behavioral context: the coverage window is limited to 2026-2027, Saturdays are treated separately from Sundays/holidays, and the declared Monday-Friday business baseline excludes Eves and local/collective closures. It also discloses the exact formula and a REST fallback endpoint, which is unusually transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance and caveats are front-loaded, which is good, but the text is bloated: a duplicated 'Norway Norway', a broken conditional clause, and a full REST fallback URL plus docs link and formula that many callers won't need. Most sentences earn their place, but the garbled openings and duplication cost it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so enumerating outputs is redundant, but the description still covers the critical dimensions an agent needs: the 2026-2027 coverage limit, the weekend baseline definition, and what holiday categories are deliberately excluded. Given the low complexity and rich schema/annotations, this is close to complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema description coverage, the schema already carries the semantics ('Gregorian date in Norway coverage'). The description restates 'Inputs: date (date)' and adds two concrete JSON examples, but contributes little beyond the schema's own format and examples, so this sits at the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb+resource: it 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events' for Norway, producing an is_working_day result. The Norway scope and 2026-2027 window differentiate it from the many sibling check_*/add_* country tools. However, the opening sentence is garbled ('Norway Norway nationwide statutory public holidays for 2026-2027 result'), which muddies first-read clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit positive guidance ('Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery') and negative scope ('Do not use this when nationwide statutory full-day list only'), and lists what is not inferred (Eves, collective-agreement, sector, school, bank, local closures). The 'Do not use this when...' clause is syntactically broken but the exclusions themselves are actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_pe_working_dayPeru Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Peru Peru 2026 national_statutory result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when choose calendar_scope and workweek explicitly. National holidays and public-sector compensable days have different applicability. This is a declared five-day (Saturday-Sunday rest) or six-day (Sunday rest) planning calendar, not proof of an individual's roster. Essential services, private-employer adoption, compensating shifts, regional holidays, banking, school, tax and procedural deadline calendars require separate evidence. The two compensable public-sector days remain working days for tax purposes. Later decrees require a new snapshot; dates beyond 2026 are unsupported. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Required calendar_scope and workweek distinguish national holidays from compensable public-sector days and five/six-day rosters. Example user requests: Peru: National layer keeps July bridge open. | Peru: Public-sector July bridge. | Peru: Six-day Saturday. Inputs: date (date); calendar_scope (enum); workweek (integer). Complete JSON argument examples: {"date":"2026-07-27","calendar_scope":"national_statutory","workweek":5} | {"date":"2026-07-27","calendar_scope":"public_sector","workweek":5} | {"date":"2026-09-19","calendar_scope":"national_statutory","workweek":6} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_selection, workweek, compensable_day_details. Formula: working day = outside selected weekly rest and selected holiday layer Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/peru-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/peru-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Peru coverage.
workweekYesRequired declared baseline: 5 = Saturday-Sunday rest, 6 = Sunday rest. Confirm the applicable roster.
calendar_scopeYesRequired: national_statutory uses 16 national holidays; public_sector also applies the two published compensable days. Neither is a tax or individual employee roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds substantial context beyond them: it is snapshot-bound to 2026, dates beyond 2026 are unsupported, later decrees require a new snapshot, the two compensable public-sector days remain working days for tax purposes, and the result is not proof of an individual's roster. These are real behavioral constraints an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The guidance is front-loaded, but the description is bloated with material that duplicates structured fields: an Inputs line repeating the schema, full JSON examples already present in the schema, and a full Outputs field list even though an output schema exists. The broken fragment 'Do not use this when choose calendar_scope and workweek explicitly' adds noise rather than clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need not be explained, yet the tool otherwise covers scope, applicability limits, dataset versioning, year boundary, and the REST fallback plus docs link. An agent has everything required to call it correctly; the only surplus is the redundant outputs enumeration.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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, but the description adds meaning: it clarifies that calendar_scope separates national holidays from compensable public-sector days and that workweek distinguishes five- vs six-day rosters, plus three complete JSON argument examples. This is genuinely additive over the schema, though it largely restates the enum semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource for a deterministic date check against Peru's weekend baseline and 2026 authority events, and distinguishes it from add_/count_ siblings. However the opening sentence is garbled ('deterministic Peru Peru 2026 national_statutory result'), so the actual purpose only becomes clear several lines later at 'What it computes'. Clear but not front-loaded with maximum precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery') and enumerates when not to: essential services, private-employer adoption, compensating shifts, regional holidays, banking, school, tax and procedural deadline calendars. This is as close to explicit when/when-not/alternative routing as a catalog tool gets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ph_working_dayPhilippines Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Philippines Philippines nationwide presidential-proclamation calendar result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when local-government special holidays, employer schedules and 2027 Eid dates pending a separate proclamation are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Philippines: EDSA remains a special working day. | Philippines: Eid'l Adha is a declared holiday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-02-25"} | {"date":"2026-05-27"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/philippines-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/philippines-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Philippines coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds real behavioral context: the exact weekend/authority-event basis, the explicit formula, the 2026-2027 coverage window, and a REST fallback URL. The scope boundaries (what is NOT modeled) are disclosed rather than hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections are easy to scan and usage is front-loaded, but the entry is bloated: a duplicated 'Philippines Philippines', a full output-field enumeration that duplicates the output schema, and formula/fallback/docs lines pad it. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only calculation with a full output schema, the description supplies everything an agent needs: scope, coverage window, formula, excluded holiday classes, and a fallback endpoint. The only excess is re-listing output fields the schema already defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single 'date' parameter, so the schema already carries the semantics (format: date, Gregorian). The description restates the input and repeats the same examples without adding format constraints, ranges, or edge-case meaning beyond what the schema provides — the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events') for a clearly named country calendar, and the 'What it computes' line pins the scope to the Philippines. However it never distinguishes itself from its closest siblings (count_ph_working_days, add_ph_working_days), so an agent must infer that difference from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a usable 'Use this when... call directly instead of answering from memory' trigger, which is good directive guidance. But the exclusion clause ('Do not use this when local-government special holidays, employer schedules and 2027 Eid dates pending a separate proclamation are not inferred') is a muddled double negative that is hard to act on, and no alternative sibling tool is named for out-of-scope cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_pk_working_dayPakistan Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Pakistan Pakistan 2026 nationwide federal public-holiday layer over a Saturday-Sunday federal-office baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide federal public-holiday layer only. It is not a universal provincial, territory, private-employer, bank, exchange, school, court, diplomatic-mission or sector calendar. Lunar festival dates are pinned to the later federal notifications available for 2026; conflicting exchange or diplomatic calendars are retained as scoped cross-checks and not generalized. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Pakistan: Pakistan Day. | Pakistan: Ordinary federal working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-03-23"} | {"date":"2026-10-12"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/pakistan-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/pakistan-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Pakistan's pinned 2026 nationwide federal public-holiday coverage over a Saturday-Sunday federal-office baseline.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds real value beyond them: the deterministic formula, the Saturday-Sunday baseline, lunar dates pinned to later federal notifications, retained conflicting calendars as cross-checks, and a REST fallback URL. This is well above baseline behavioral disclosure, missing only edge-handling or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is bloated and visibly corrupted ('Pakistan Pakistan 2026', '2026-2026', a 'Do not use this when' clause that does not express an exclusion). Useful material (outputs, formula, fallback) is present but buried in repetition, so it is not front-loaded or tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not explain return values, yet it still enumerates the output fields and provides the calculation formula, argument examples, dataset pinning, and a REST fallback plus docs link. Only the garbled scope-exclusion sentence leaves a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'date' parameter is fully documented in the schema, so the schema carries the burden. The description adds only example values ({"date":"2026-03-23"}) and restates the Gregorian/2026 scope without adding format or constraint detail, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026 authority events') and pins the scope to Pakistan 2026. However, it never explicitly distinguishes itself from sibling tools like add_pk_working_days, count_pk_working_days, or check_*_working_day for other countries, so routing still relies on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives directional guidance ('Use this when you need a deterministic... layer', 'Call this tool directly... instead of answering from memory') and lists scope exclusions (not a provincial/private-employer/exchange/school calendar). But no sibling alternative is named for adjacent needs like counting over a range or adding working days, and the 'Do not use this when...' clause is malformed into a scope statement rather than an actionable exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_pl_working_dayPoland Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Poland Poland nationwide statutory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Saturday substitute dates, individual work schedules, employer, sector, school, bank and local schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Poland: Christmas Eve. | Poland: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-12-24"} | {"date":"2026-10-27"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/poland-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/poland-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Poland coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds genuinely useful behavioral context beyond that: it is deterministic, it does not infer substitute/sector/local schedules, it discloses the exact formula, a REST fallback endpoint, and docs. 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use clause, but the body is padded: a duplicated 'Poland Poland', repeated JSON examples already in the schema, a restated formula, and an output field list that the output schema covers. It is informative but does not earn every line.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only, deterministic check tool with an output schema, the description supplies more than enough: scope, exclusions, formula, fallback endpoint and docs. The enumerated output fields are redundant given the output schema, but nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 100% schema description coverage, so the schema already documents 'date' as a Gregorian date in Poland coverage. The description repeats example values ({"date":"2026-12-24"}) but adds no syntax or format meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (checks) and resource (a date against Poland's nationwide statutory holidays and weekend baseline), and scopes it to 2026-2027. It distinguishes itself from the many sibling country check tools by naming Poland, though the 'Poland Poland' duplication is sloppy. It stops short of explicitly contrasting with add_pl_working_days or count_pl_working_days.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Strong explicit routing: 'Use this when you need a deterministic ... result' and 'Do not use this when nationwide statutory holiday list only', listing excluded scopes (Saturday substitute dates, individual work schedules, employer/sector/school/bank/local). It also instructs the agent to call directly rather than answer from memory. It does not name sibling alternatives by name, so not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_pt_working_dayPortugal Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Portugal Portugal nationwide mandatory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when mandatory nationwide list only. Municipal, autonomous-region, collective-agreement, employer and locally substituted holiday schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Portugal: Portugal Day. | Portugal: Ordinary weekday. Inputs: date (date). Complete JSON argument examples: {"date":"2026-06-10"} | {"date":"2026-10-27"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/portugal-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/portugal-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Portugal coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint/idempotent/non-destructive), the description discloses the exact computation formula, the weekend baseline, the 2026-2027 dataset coverage limit, the fact that sub-national holiday schedules are deliberately not inferred, and a direct REST fallback URL with a warning not to guess other /api/* paths. That is rich behavioral context an agent could not derive from the annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded correctly (when to use, when not, what it computes), but it is longer than needed for a one-parameter lookup and contains repetition and grammatical breakage ("Portugal Portugal", "Do not use this when mandatory nationwide list only") that cost clarity. Sections like Formula, REST fallback and Docs are useful but push the definition past minimal viable length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema already exists, the enumeration of outputs is redundant, but everything else an agent needs is present: temporal coverage (2026-2027), formula, scope exclusions, argument examples, and a fallback endpoint. The only gap is the lack of explicit routing guidance versus the count_pt/add_pt siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage ("Gregorian date in Portugal coverage"), so the schema already carries the semantics and a 3 baseline applies. The description repeats the input type and adds worked examples ({"date":"2026-06-10"}), but adds no format or range guidance beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ("Checks a date") and resource (Portugal nationwide working day / public holidays for 2026-2027), so an agent knows this is a single-date check, not an add/count operation like add_pt_working_days or count_pt_working_days. However, the opening sentence is garbled ("a deterministic Portugal Portugal nationwide mandatory public holidays ... result") and it never explicitly differentiates itself from those siblings, which weakens an otherwise clear statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction ("Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery") and a scope exclusion (municipal, autonomous-region, collective-agreement and locally substituted schedules are not inferred). The "Do not use this when mandatory nationwide list only" clause is syntactically broken, and no sibling alternative (e.g. count/add variants) is ever named, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ro_working_dayRomania Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Romania Romania 2026 statutory holiday layer, romanian_orthodox, explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when romania 2026 statutory holiday layer only, with required calendar_basis and work_schedule=mon_fri_planning. The basis selects dates, not a person's identity or religion. No union of Christian calendars, non-Christian additional holidays, public-sector bridge/recovery days, individual rosters, shift exceptions, bank/exchange/school opening, payroll or legal deadlines are computed. Other bases and future years are unsupported. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Explicit calendar_basis and mon_fri_planning required; no union of calendars or personal roster inference. Example user requests: Romania: January 24 remains a statutory holiday even on Saturday. | Romania: Selected-calendar Good Friday. Inputs: date (date); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"date":"2026-01-24","calendar_basis":"romanian_orthodox","work_schedule":"mon_fri_planning"} | {"date":"2026-04-10","calendar_basis":"romanian_orthodox","work_schedule":"mon_fri_planning"} | {"date":"2026-01-24","calendar_basis":"roman_catholic","work_schedule":"mon_fri_planning"} | {"date":"2026-04-03","calendar_basis":"roman_catholic","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, payroll_scope, personal_roster_scope, additional_religious_holidays_scope. Formula: planning_workday = weekday AND no statutory holiday in the explicitly selected calendar_basis Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/romania-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/romania-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Romania coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual or universal legal roster.
calendar_basisYesRequired date basis: romanian_orthodox or roman_catholic. Do not infer a person's religion or union calendars.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavior: what is NOT computed (unions of Christian calendars, non-Christian holidays, bridge/recovery days, rosters, shift exceptions, payroll/legal deadlines) and the fact that substitute-day and payroll scope are reported separately. That is meaningful scope disclosure beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Heavily bloated and repetitive: the holiday layer is restated, a full output-field list is enumerated despite an output schema existing, and multi-line example-request and argument blocks pad the text. The most important scoping statement (what it does not compute) is buried mid-paragraph rather than front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return-value enumeration is wasted effort, and the incoherent 'Do not use this when...' sentence leaves the negative boundary unclear. The covered ground (inputs, exclusions, formula, REST fallback, docs) is otherwise sufficient for a read-only three-parameter calculator.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: calendar_basis selects dates and is explicitly not a statement about a person's identity or religion, and work_schedule is defined as a planning baseline rather than a legal roster. It also supplies four complete JSON argument examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: checks a date against the Sat-Sun weekend baseline and Romanian 2026 statutory holidays under an explicitly selected calendar basis. That is enough to distinguish it from the check_*_working_day siblings and from add_/count_ variants. Hampered by garbled duplication ('Romania Romania 2026 statutory holiday layer') rather than by vagueness.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening gives a real when-to-use ('call this directly and return its calculation instead of answering from memory or stopping at discovery'), and the closing names unsupported cases (other bases, future years). However, the 'Do not use this when...' clause is syntactically broken and reads as a restatement of the inputs rather than a genuine exclusion, so the routing guidance is only partly usable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_ru_working_dayRussia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Russia Russia federal statutory public holidays and Government-published 2026 transfer days result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the federal statutory/public-holiday layer and the Government-published 2026 transfer days over a Saturday-Sunday baseline. Regional holidays, republic/local holidays, employer, bank, school, shift, sector and collective-agreement schedules are not inferred. Future annual transfer resolutions require a refreshed package. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Russia: Russia New Year's holiday. | Russia: Published transfer day. | Russia: Ordinary Russia working day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-01-05"} | {"date":"2026-01-09"} | {"date":"2026-09-14"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/russia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/russia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Russia's pinned 2026 federal statutory and transfer-day coverage over a Saturday-Sunday weekend.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real context beyond that: the exact formula, the coverage boundary (federal statutory + 2026 transfer days only), and the fact that regional/sector schedules are not inferred. No return-value explanation is needed since an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use/don't-use guidance, which is good, but the prose is repetitive ('Russia Russia', restated coverage clauses) and pads with outputs, formula and docs links that partly duplicate the structured schema. Much of it earns its place, but trimming would help.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an existing output schema and rich annotations, the description supplies the remaining needed context: scope limits, the compute rule, and a REST fallback path. Only minor gaps remain, e.g. no explicit alternative-country routing guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single date parameter is well documented in the schema, which sets the baseline at 3. The description goes slightly further by supplying complete JSON argument examples ({"date":"2026-01-05"} etc.), giving the agent a ready invocation shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: checks a date against the Saturday-Sunday weekend baseline plus exact 2026 federal authority events, and enumerates the output fields. It is clear what the tool does, though it does not explicitly name a sibling country tool as the alternative; the garbled 'Russia Russia' phrasing is a cosmetic flaw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with a clear 'Use this when...' trigger and follows with an explicit 'Do not use this when...' scope block (regional/local/employer/bank/school calendars not inferred; future years need a refreshed package). It also tells the agent to call the tool rather than answer from memory. It stops short of naming a specific alternative sibling for out-of-scope dates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_sa_working_daySaudi Arabia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Saudi Arabia Saudi Central Bank financial institutions result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when financial-institution scope only. MHRSD business-sector leave, RTGS-specific intervals, government offices, private-employer rosters, Hajj-season branch exceptions and Umm al-Qura forecasts are not inferred. What it computes: Checks a date against the Friday-Saturday weekend baseline and exact 2026-2029 authority events. Example user requests: Saudi Arabia: SAMA Eid Al-Fitr interval. | Saudi Arabia: Friday/Saturday weekly baseline. | Saudi Arabia: National Day Saturday substitution. Inputs: date (date). Complete JSON argument examples: {"date":"2026-03-17"} | {"date":"2026-01-02"} | {"date":"2028-09-24"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Friday/Saturday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/saudi-financial-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/saudi-financial-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Saudi Arabia coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description still adds real substance: a deterministic guarantee, the exact coverage window (2026-2029), the Friday-Saturday weekend policy, a formula, the precise REST fallback endpoint with a warning not to guess other paths, and a docs URL. Coverage limits (what is 'not inferred') are disclosed rather than hidden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is long but well labeled and front-loaded: use-trigger first, then what-it-computes, inputs, outputs, formula, fallback, docs. Some waste exists in triplicated examples (three 'user requests', three JSON argument examples, plus schema examples), and the ambiguous 'Do not use this when' line costs clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the enumerated Outputs list is largely redundant, but the description still supplies everything an agent needs: coverage window, weekend policy, jurisdiction boundary, fallback endpoint, and documentation. The main gap is the confusingly worded exclusion clause, which could leave an agent unsure how MHRSD/RTGS/government cases relate to this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single date parameter is already documented (Gregorian, Saudi coverage, format date), so the description adds little beyond restating the input name and repeating example values already present in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource (check a date against the Saudi working-day calendar) and pins the scope to SAMA/financial-institution calendars with an explicit Friday-Saturday baseline and 2026-2029 window. It does not name the sibling check_sa_working_days / add_sa_working_days / count_sa_working_days tools, so the distinction from related SA tools is left implicit. The 'Do not use this when financial-institution scope only' sentence is garbled and muddies the boundary it tries to draw.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use trigger ('when you need a deterministic ... result'), an instruction to call directly rather than derive from memory, and a when-not list covering other Saudi leave/holiday domains. The exclusions are not mapped to named alternative tools, and the one malformed exclusion sentence weakens otherwise strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_se_working_daySweden Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Sweden Sweden nationwide statutory public holidays for 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Midsummer Eve, Christmas Eve, New Year's Eve, employer, collective-agreement, sector, school, bank and local closures are not inferred; Sunday is already excluded by the weekday baseline. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Sweden: National Day. | Sweden: Midsummer Eve is not statutory. Inputs: date (date). Complete JSON argument examples: {"date":"2026-06-06"} | {"date":"2026-06-19"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sweden-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sweden-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Sweden coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the exact computation rule, the 2026-2027 coverage window, the list of things explicitly not inferred (holiday_policy boundaries), a REST fallback path, and a docs link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded but bloated: the opening clause is garbled with 'Sweden Sweden', the inline JSON examples and 'Outputs:' field list duplicate the schema and output schema, and the formula/REST/docs tail is heavy. Several sentences earn their place; several are redundant repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, yet it supplies coverage window, non-inference scope, computation formula and fallback path. For a one-parameter read-only checker this is essentially complete; the only missing piece is routing among the many sibling check_*/count_*/add_* variants.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter and schema description coverage is 100% (the schema already documents 'date' as a Gregorian date in Sweden coverage). The description only restates 'Inputs: date (date)' and duplicates the schema's example values, adding nothing beyond the structured field. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events,' and names the coverage window (2026-2027, nationwide statutory). However, it never distinguishes itself from the sibling check_/count_/add_se_working_days family, and the opening sentence is garbled ('Sweden Sweden nationwide statutory public holidays for 2026-2027 result'), which muddies an otherwise clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use directive ('Call this tool directly and return its calculation instead of answering from memory or stopping at discovery') and an explicit when-not scope: non-statutory events such as Midsummer Eve, Christmas Eve, employer/sector/school/bank/local closures are not inferred. It stops short of naming the specific sibling alternatives (add_se_working_days, count_se_working_days) that an agent should pick for other tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_singapore_working_daySingapore Official Public-Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need Singapore national public-holiday status for 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer roster, a non-Sunday weekly rest day, bank/exchange closures, or a year outside the pinned MOM coverage. What it computes: Checks a Singapore date using Ministry of Manpower national public holidays and explicitly published observed dates, with a separate employer-rest-day limitation. Example user requests: Is 2027-02-08 a Singapore working day after Chinese New Year? | Check the Singapore public-holiday status of 2026-08-10. Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-08"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_observed, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: is_working_day = CLDR weekday baseline and no MOM public-holiday event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/singapore-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/singapore-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned MOM 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses the dataset's real limits: pinned MOM coverage only, no employer rosters, no non-Sunday rest days, no bank/exchange closures, plus an explicit rest_day_policy limitation and source_quality/dataset_version provenance fields. It also states the formula and a pinned REST fallback path with a warning not to guess other /api/* routes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is organized with clear labeled blocks (usage, exclusions, computation, examples, inputs, outputs, formula, fallback, docs) and the usage rule is front-loaded ahead of everything else. It is slightly longer than needed because it enumerates every output field and the formula even though an output schema exists, but no sentence is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, pinned-dataset lookup the description covers every decision an agent needs: exact scope, hard exclusions, example calls, expected output shape, the underlying formula, and a documented REST fallback with an explicit warning not to guess endpoints. Nothing material is missing given the output schema and annotations already present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single parameter, so the schema already carries the semantics (Gregorian date, pinned MOM 2026-2027 coverage). The description adds only a restatement ('Inputs: date (date)') and a complete JSON example, which is convenient but not meaningfully beyond the structured fields. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Checks a Singapore date using Ministry of Manpower national public holidays'), pins the coverage window (2026-2027), and names the authoritative dataset, so an agent can tell it apart from other territories' check_* tools. It never explicitly distinguishes itself from the sibling add_singapore_working_days / count_singapore_working_days, leaving the singular-date-vs-range split to inference from 'a Singapore date' and the example requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use this when you need Singapore national public-holiday status for 2026-2027'), when-not-to-use ('Do not use this when you need an employer roster, a non-Sunday weekly rest day, bank/exchange closures, or a year outside the pinned MOM coverage'), and a direct instruction to call the tool rather than answer from memory or stop at discovery. Both the selection condition and the exclusions are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_si_working_daySlovenia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Slovenia Slovenia 2026 statutory work-free facts with explicit Monday-Friday planning baseline result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when slovenia 2026 statutory work-free dates over an explicitly selected Monday-Friday planning baseline. Seven named state holidays are not work-free; no extra Monday or bridge day is invented. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, religious leave, payroll, legal deadlines and future years are not computed. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Requires explicit mon_fri_planning; seven named state holidays do not add rest. Example user requests: Slovenia: Easter Monday is statutory rest. | Slovenia: Whit Monday is not Whit Sunday. | Slovenia: Science Day is a state holiday without rest. Inputs: date (date); work_schedule (enum). Complete JSON argument examples: {"date":"2026-04-06","work_schedule":"mon_fri_planning"} | {"date":"2026-05-25","work_schedule":"mon_fri_planning"} | {"date":"2026-11-10","work_schedule":"mon_fri_planning"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_statutory_non_working_day, is_non_rest_state_holiday, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_work_free_event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovenia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovenia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Slovenia coverage.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior. The description usefully adds that the calculation is deterministic, 2026-scoped, based on a weekend baseline, and does not invent bridge days or treat seven named state holidays as work-free.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, repetitive, and contains confusing phrases such as 'Slovenia Slovenia' and '2026-2026'. It has labeled sections, but several sentences do not earn their place, and the malformed do-not-use sentence undermines structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations already present, the description still supplies the calculation scope, formula, input examples, and important exclusions. It is mostly complete for this calculator, though the contradictory-sounding 'Do not use' line weakens it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including descriptions for date and work_schedule plus the mon_fri_planning enum. The description repeats inputs and examples and gives a formula, but adds little parameter meaning beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it checks a date against the Saturday-Sunday weekend baseline and exact 2026 authority events for Slovenia. The purpose is understandable despite messy repetition and without naming sibling alternatives, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a use case for deterministic Slovenia 2026 statutory work-free facts and lists exclusions such as individual shifts, payroll, and future years. However, the 'Do not use this when...' sentence is malformed and no alternative sibling tool is named, so guidance is only partially actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_sk_working_daySlovakia Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Slovakia Slovakia 2026 national statutory rest-day calendar result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when pinned Slovakia 2026 statutory rest-day layer over an explicitly declared Monday-Friday planning baseline, not an individual roster. The holidays on May 8 and September 15 are not statutory rest days in 2026; September 1, October 28 and November 17 are state holidays without rest under section 2(3). Do not infer substitute Mondays, payroll premiums, leave rights, retail closures, shift, bank, school, employer or future-year schedules. Later legal changes require a new snapshot. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Distinguishes 11 rest-day holidays from five named holidays without statutory rest in 2026. Example user requests: Slovakia: May 8 is a named holiday but a working date. | Slovakia: Good Friday. | Slovakia: November 17 is not statutory rest. Inputs: date (date). Complete JSON argument examples: {"date":"2026-05-08"} | {"date":"2026-04-03"} | {"date":"2026-11-17"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, holiday_rest_status, payroll_scope. Formula: working = weekday outside the declared weekly rest and outside statutory_rest_holiday dates Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovakia-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovakia-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Slovakia coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/non-openWorld, so the description focuses on domain behavior: what is excluded (substitute Mondays, payroll premiums, leave rights, retail closures, future-year schedules) and that later legal changes require a new snapshot. This is genuinely useful context beyond the annotations, though the scope-limiting sentence is difficult to parse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The use/do-not-use guidance is front-loaded, but the text is longer than needed and includes redundant material: a full enumeration of output fields despite an existing output schema, plus REST fallback and docs URLs. The repeated 'Slovakia Slovakia 2026' and a malformed exclusion sentence add noise for a one-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-input, deterministic, output-schema-backed tool, the definition covers scope, excluded legal interpretations, holiday edge cases, example inputs and the calculation formula, so an agent has what it needs. The redundant output-field list is unnecessary given the output schema, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single 'date' parameter, so the baseline is 3. The description reinforces this with a formula, explicit ISO example values (2026-05-08, 2026-04-03, 2026-11-17) and the note that the date is a Gregorian date within the Slovakia coverage window, adding modest value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (deterministic check of a date against the Slovakia 2026 weekend baseline and authority events) and distinguishes the tool from its many siblings by scope ('individual roster' vs planning baseline, '11 rest-day holidays vs five named holidays without statutory rest'). However, the opening phrasing is garbled ('Slovakia Slovakia 2026') and the 'Do not use this when…' clause is syntactically broken, which slightly muddies the otherwise clear purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('when you need a deterministic … result', 'return its calculation instead of answering from memory') and when-not-to-use guidance, plus named boundary cases (May 8, Sep 15, Nov 17). It stops short of naming an alternative sibling tool, and the exclusions are wrapped in a confusing run-on sentence, so it is strong but not fully explicit routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_south_africa_working_daySouth Africa Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a South Africa national public-holiday result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer, bargaining-council, school, bank, exchange, provincial or locally exchanged calendar. What it computes: Checks a South African date against the Saturday-Sunday baseline and exact 2026-2027 national public holidays, including the 4 November 2026 election holiday and observed Sunday holidays. Example user requests: Is 2026-11-04 a South Africa working day? Inputs: date (date). Complete JSON argument examples: {"date":"2026-11-04"} Outputs: territory, territory_name, weekday, is_working_day, holiday_names, calendar_scope, employer_schedule_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = Monday-Friday and no exact national public holiday or observed date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-africa-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-africa-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in South Africa national 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds real substance beyond that: the exact computation formula (Monday-Friday and not a holiday), the dataset coverage window (2026-2027), the holiday model including observed Sundays, the output field list, dataset_version/sources, and a fallback endpoint. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger and exclusion, and the labeled sections are easy to scan. It is longer than strictly necessary: the 'complete JSON argument examples' restates the schema example and the output field list overlaps the output schema, but no sentence misleads.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, yet the description still supplies the interpretation-critical pieces: coverage years, holiday model, formula, and a documented fallback path. An agent has everything needed to call and interpret this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one parameter and 100% schema description coverage, the baseline is 3; the schema already documents the date format and coverage window. The description adds a concrete JSON argument example and reinforces the coverage constraint, which is a modest but real increment rather than new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (check) and resource (South Africa working day) and pins the exact scope: Saturday-Sunday baseline plus 2026-2027 national public holidays, explicitly including the 4 Nov 2026 election holiday and observed Sundays. That scope statement is enough to separate it from the sibling check_* and add_*/count_* calendar tools without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'use this when' trigger, a 'do not use this when' exclusion list (employer, bargaining-council, school, bank, exchange, provincial, locally exchanged calendars), and a directive to call the tool rather than answer from memory. It also names the alternative path (REST fallback) and the condition under which it applies.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_th_working_dayThailand Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Thailand Thailand financial institutions and specialized financial institutions result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a Bank of Thailand financial-institution calendar, not a universal Thai employee, government, employer, exchange or payment-settlement calendar. Bangkok-only, Islamic-bank and southern-branch conditions remain explicit and are not generalized. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: Thailand: 2027 substitution. | Thailand: Bangkok-only event remains conditional. Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-22"} | {"date":"2026-10-16"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/thailand-financial-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/thailand-financial-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned Bank of Thailand 2026-2027 financial-institution coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real value beyond them: the exact computation model, the pinned 2026-2027 coverage window, and the caveat that Bangkok-only, Islamic-bank and southern-branch conditions stay conditional and are not generalized.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (What it computes / Inputs / Outputs / Formula / Docs) make it scannable and the use-case leads, but there is clear redundancy: complete JSON argument examples duplicate the schema's `examples`, and the Outputs list duplicates the existing output schema. The repeated "Thailand Thailand" phrasing also signals loose editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only lookup, the description covers the trigger, the scope limits, the dataset window, the computation rule, the REST fallback and a docs link, which is more than enough to invoke it correctly. It is slightly over-complete in re-listing output fields that the output schema already provides.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single `date` parameter is already documented as a Gregorian date within the pinned coverage window, so the baseline is 3. The description's "Inputs: date (date)" line and its JSON examples merely restate what the schema already contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (check a date against the Thai financial-institution working-day calendar) and pins the scope to the Bank of Thailand 2026-2027 dataset, which separates it from check_global_working_day and the many other country variants. However, the core purpose sentence is garbled ("deterministic Thailand Thailand financial institutions and specialized financial institutions result") and it never explicitly distinguishes itself from the add_th_working_days / count_th_working_days siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit use trigger ("Use this when you need a deterministic ... result") and a scope-based exclusion ("Do not use this when this is a Bank of Thailand financial-institution calendar, not a universal Thai employee, government, employer, exchange or payment-settlement calendar"), plus a directive to call it directly rather than answer from memory. The exclusion clause is grammatically broken and names no alternative tool, so routing is implied rather than clean.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_turkey_working_dayTürkiye Statutory Public-Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need Türkiye national statutory public-holiday status. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a company, school, bank, exchange, collective-agreement or local closure calendar. What it computes: Checks a date against Türkiye's statutory public holidays and explicit 13:00 half-day events for 2026-2027. Example user requests: Is 2027-03-08 a Türkiye working day? | Does 2026-05-26 have a Turkish half-day holiday? Inputs: date (date). Complete JSON argument examples: {"date":"2027-03-08"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, half_day_start_time, non_working_fraction, weekend_days, calendar_scope, half_day_policy, rest_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = Türkiye Saturday/Sunday baseline and no published full-day or half-day statutory holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/turkey-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/turkey-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned Türkiye 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive, and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the deterministic formula (weekend baseline plus published full/half-day holidays), the 2026-2027 dataset scope, half-day handling at 13:00, and a pinned REST fallback. It does not state out-of-range date behavior, which would have made this a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose and exclusions come first, then computation, examples, inputs, outputs, formula, and fallback. It is longer than necessary because the full output-field list duplicates the existing output schema and the REST/docs lines add bulk, but every section is labeled and scannable rather than rambling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter deterministic check tool with annotations and an output schema, the description supplies everything needed: use/no-use conditions, coverage window, formula, example request, and a fallback endpoint. Return values are already covered by the output schema, so the extra enumeration is harmless redundancy rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single `date` parameter, so the schema already carries the semantics and 3 is the baseline. The description's 'Inputs: date (date)' plus the JSON example largely restate what the schema and its example already show, adding only the coverage-window emphasis.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('checks a date against Türkiye's statutory public holidays and explicit 13:00 half-day events') and pins the coverage window to 2026-2027. It also explicitly scopes out adjacent calendars (company, school, bank, exchange, collective-agreement, local), so an agent can distinguish it from the broader working-day family without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use ('when you need Türkiye national statutory public-holiday status'), a when-not ('company, school, bank, exchange, collective-agreement or local closure calendar'), and an operational instruction to call the tool directly rather than answering from memory. It does not, however, name sibling alternatives such as add_turkey_working_days or count_turkey_working_days for range/counting needs, so the routing is slightly incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_tw_working_day中国台湾省 Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic 中国台湾省 中国台湾省政府行政機關工作日曆 2026-2027 result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government administrative-agency scope only. Public enterprises generally follow the calendar, but special agencies, schools, private employers, local arrangements, banks, exchanges and sector schedules are not inferred. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2027 authority events. Example user requests: 中国台湾省: Spring Festival substitute holiday. | 中国台湾省: Government calendar does not mean private-employer closure. Inputs: date (date). Complete JSON argument examples: {"date":"2027-02-09"} | {"date":"2027-05-03"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/taiwan-government-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/taiwan-government-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the official DGPA 2026-2027 government administrative-agency coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the description adds domain-specific context beyond the safety profile: the weekend baseline, exact 2026-2027 authority events, formula, and REST fallback. It does not contradict the annotations, though the scope wording is somewhat confusing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance, but it is overlong for a one-parameter deterministic checker and duplicates schema/output information such as input examples and output fields. Some phrasing, especially the 'Do not use this when...' sentence, is unclear and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety and an output schema covering return fields, the description supplies the remaining needed context: deterministic computation, 2026-2027 coverage, scope limitations, formula, examples, and fallback. It is largely complete, though the ambiguous exclusion sentence and redundant output listing keep it from being fully polished.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter is fully documented in the schema with a rich description of the Gregorian date and DGPA 2026-2027 coverage. The description adds only 'Inputs: date (date)' and JSON examples that duplicate the schema, so the baseline score of 3 is appropriate for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies a specific verb-and-resource: checking a date against the Taiwan government administrative-agency working calendar for 2026-2027. It clearly states what is computed, but does not explicitly distinguish this tool from sibling check_*_working_day or add/count variants beyond the territory-specific name and title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives both a positive trigger ('Use this when you need a deterministic ... result') and scope exclusions (public enterprises generally follow the calendar, but special agencies, schools, private employers, banks, exchanges and sector schedules are not inferred). However, the exclusion sentence 'Do not use this when government administrative-agency scope only' is awkward and does not name an alternative tool for out-of-scope requests.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_uae_federal_working_dayUAE Federal Government Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a UAE federal-government workday or public-holiday result for 2026. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need Sharjah/local-government, private-employer, bank, exchange, school or an unannounced lunar date. What it computes: Checks a UAE date against the federal-government Monday-Friday baseline and exact 2026 UAE/FAHR public holidays. Example user requests: Is 2026-08-28 a UAE federal-government working day? Inputs: date (date). Complete JSON argument examples: {"date":"2026-08-28"} Outputs: territory, territory_name, jurisdiction, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_legal_bases, calendar_scope, private_sector_policy, unresolved_lunar_rules, calendar_profile, dataset_version, sources. Formula: is_working_day = Monday-Friday federal baseline and no exact published public holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uae-federal-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uae-federal-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in exact 2026 UAE federal-government coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the remaining burden is light. The description still adds real value beyond them: the exact formula, the 2026 coverage boundary, the existence of unresolved lunar rules, and the presence of calendar_scope/dataset_version/sources fields that signal data-provenance limits. It stops short of describing error behavior for out-of-range dates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the when/when-not guidance and uses labeled blocks that are easy to scan. It is slightly over-long: the 14-field 'Outputs:' enumeration duplicates the existing output schema, and the REST fallback plus docs URLs add bulk that most invocations do not need.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter, read-only lookup with an output schema, everything an agent needs is present: the decision rule, the coverage boundary, the alternative-scope exclusions, a worked example, and a documented REST fallback. Return values are covered by the output schema, so omitting them from prose is correct.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Single parameter with 100% schema description coverage ('Gregorian date in exact 2026 UAE federal-government coverage'), so the schema does the heavy lifting and baseline is 3. The description restates the input as 'date (date)' and repeats the JSON example already present in the schema, adding no new constraint semantics such as what happens for a non-2026 date.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a precise verb+resource ('checks a UAE date against the federal-government Monday-Friday baseline') and scopes it to 2026 UAE/FAHR holidays. It explicitly carves out the boundary against adjacent cases (Sharjah/local-government, private-employer, bank, exchange, school), which is exactly the differentiation needed in a family of 60+ near-identical check_*_working_day siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives both sides: 'Use this when you need a UAE federal-government workday or public-holiday result for 2026' and an explicit 'Do not use this when...' list. It also instructs the agent to call the tool directly rather than answer from memory or stop at discovery, which removes a common agent misuse pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_uk_working_dayUK Working Day CheckerA
Read-onlyIdempotent
Inspect

Use this when you need to know whether a 2024-2028 UK date is a Monday-Friday working day after applying the official bank holidays for the selected division. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a local council, school, employer, financial-market, emergency-closure or non-UK calendar, or a date outside 2024-2028. What it computes: Checks whether a date is a normal working day in England and Wales, Scotland or Northern Ireland using a pinned snapshot of the official GOV.UK bank-holiday feed. Example user requests: Is 28 December 2026 a working day in England and Wales, or the Boxing Day substitute holiday? | Is Scotland working on 15 June 2026? | Check whether 13 July 2026 is a working day in Northern Ireland. Inputs: date (date); division (enum, optional). Complete JSON argument examples: {"date":"2026-12-28","division":"england-and-wales"} | {"date":"2026-06-15","division":"scotland"} Outputs: date, weekday, division, division_name, is_working_day, day_type, bank_holiday_name, bank_holiday_notes, status_basis, source_url, licence, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: official bank-holiday event → non-working; else Saturday/Sunday → non-working; else Monday-Friday → working Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesUK civil date in YYYY-MM-DD format, within 2024-2028.
divisionNoGOV.UK bank-holiday division. England and Wales share one official list; Scotland and Northern Ireland have separate lists.england-and-wales

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint and idempotentHint, and the description adds substantial behavioral context: the exact formula, the use of a pinned GOV.UK snapshot, the supported divisions, and the output fields. This goes well beyond what the annotations alone provide and accurately describes the tool's computation and data provenance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized, with clear sections for use cases, exclusions, inputs, outputs, formula, and fallback. Every sentence adds practical value, from the working-day formula to the REST fallback and documentation link. It is front-loaded with the primary use and exits early, with no tautology or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the two simple parameters, the existing output schema, and the annotations, the description is highly complete. It explains the date range, division-specific behavior, formula, data source, snapshot versioning, and fallback invocation. An agent has everything needed to select, invoke, and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents date and division, including formats, enum values, defaults, and examples. The description mostly restates these facts in prose and examples rather than adding new semantic meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: checking whether a 2024-2028 UK date is a Monday-Friday working day after applying bank holidays for a division. It also differentiates itself from related tools like add_uk_working_days and count_uk_working_days by focusing on a single date check and by instructing the agent to call the tool directly rather than deriving the answer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use the tool ('Use this when you need to know whether...') and when not to use it ('Do not use this when you need a local council, school, employer...'), including clear exclusions for non-UK calendars and dates outside 2024-2028. It even provides a direct REST fallback and tells the agent not to guess other API paths, giving strong selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_us_federal_working_dayUS Federal Holiday Working DayA
Read-onlyIdempotent
Inspect

Use this when you need US federal employee or federal-office holiday status for 2026-2027. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a state/local/private-employer/exchange calendar or an alternate federal work schedule without explicit in-lieu resolution. What it computes: Checks a date against the OPM federal-employee holiday schedule and the US Saturday/Sunday baseline. Example user requests: Is 2027-07-05 a US federal working day? Inputs: date (date). Complete JSON argument examples: {"date":"2027-07-05"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: is_working_day = US weekday baseline and no OPM federal holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/us-federal-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/us-federal-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned OPM 2026-2027 coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, but the description adds substantive context beyond them: the pinned 2026-2027 coverage window, the OPM source of truth, the exact computation formula, and a direct REST fallback endpoint. It stops short of covering rate limits or error behavior, so a 4 rather than 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: usage clause and exclusion come first, then computation, examples, and outputs. Slightly bloated by redundant example blocks ('Example user requests' plus 'Complete JSON argument examples') and the marketing-style REST/docs lines, which dilute an otherwise tight structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one date param) but the description covers scope, exclusions, formula, input/output field lists, and a fallback path. Since an output schema exists, it needn't enumerate return semantics in depth, and it correctly does not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single date parameter is fully documented in the schema ('Gregorian date in the pinned OPM 2026-2027 coverage'). The description restates the parameter ('Inputs: date (date)') and adds a JSON example, but no new semantic constraints beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: checks a date against the OPM federal-employee holiday schedule and the US weekend baseline. It explicitly narrows scope (federal employee/office, 2026-2027) and rules out state/local/private/exchange calendars, so an agent can distinguish it from the many sibling check_*_working_day tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('need US federal employee or federal-office holiday status'), when-not-to-use (state/local/private/exchange calendars, alternate federal schedules without in-lieu resolution), and even a meta-instruction to call the tool rather than compute from memory. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_uzbekistan_working_dayUzbekistan Working DayA
Read-onlyIdempotent
Inspect

Use this when you need an auditable nationwide Uzbekistan 2026 result and know the workweek variant. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when workweek is unknown, or the roster is continuous, shift-based, employer-specific, bank, school or sector-specific. What it computes: Checks a date against Uzbekistan's 2026 statutory holidays and the selected five-day or six-day workweek transfer schedule. Example user requests: Is 2026-12-31 a working day in Uzbekistan for a five-day workweek? | Check 2026-05-30 for a six-day workweek. Inputs: date (date); workweek (integer). Complete JSON argument examples: {"date":"2026-12-31","workweek":5} | {"date":"2026-05-30","workweek":6} Outputs: territory, territory_name, workweek, weekly_rest_model, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_kinds, holiday_details, calendar_scope, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: apply selected weekly-rest baseline, statutory events and PF-257 workweek-specific transfers Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uzbekistan-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uzbekistan-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in the pinned 2026 coverage.
workweekYesRequired official schedule variant: 5 for Saturday-Sunday rest, or 6 for Sunday-only rest.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, so the safety profile is covered. The description adds real value beyond them: the pinned 2026 coverage window, the exact formula applied (weekly-rest baseline plus statutory events and PF-257 transfers), and a documented REST fallback with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the routing decision, then example requests, inputs, and callable JSON examples, which is a sensible order. However, the enumerated output fields are redundant with the existing output schema and the formula line is terse jargon that adds length without much clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, single-purpose calculation tool, everything needed to invoke it is present: inputs, argument examples, fallback endpoint, and docs link. The only gap is the unnecessary outputs enumeration, which duplicates the output schema rather than adding information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters (date, workweek) are already fully documented including the 5 = Saturday-Sunday / 6 = Sunday-only semantics and the 2026 pinning. The description repeats the input list and adds worked JSON examples, but contributes no meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ("Checks a date against Uzbekistan's 2026 statutory holidays") and pins the scope (nationwide, 2026, five- or six-day workweek). An agent can distinguish it from add_uzbekistan_working_days and count_uzbekistan_working_days by the singular date-check semantics stated here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use rule (auditable nationwide 2026 result with known workweek) and a when-not-to-use rule (workweek unknown, continuous/shift-based/employer/bank/school/sector rosters). It also instructs the agent to prefer this tool over answering from memory, but it never names the sibling add_/count_ tools as the alternative for adjacent tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_vn_working_dayVietnam Working DayA
Read-onlyIdempotent
Inspect

Use this when you need a deterministic Vietnam Vietnam public-sector 2026 holiday schedule and nationwide statutory paid holidays result. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when public-sector and statutory paid-holiday layer only; private-employer, non-Saturday/Sunday workweeks, provincial, sector, bank, school and employer schedules are not inferred. The proposed four-day 2026 Vietnam Cultural Day public-sector arrangement is not encoded until finally approved. What it computes: Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events. Example user requests: Vietnam: New Year transfer. | Vietnam: Vietnam Cultural Day. Inputs: date (date). Complete JSON argument examples: {"date":"2026-01-10"} | {"date":"2026-11-24"} Outputs: territory, territory_name, weekday, is_working_day, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: is_working_day = not an official Saturday/Sunday weekend date and no exact authority event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/vietnam-public-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/vietnam-public-working-day.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in Vietnam's pinned 2026 public-sector/statutory holiday coverage.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely new behavioral facts: deterministic calculation, the exact formula, pinned 2026 coverage, unencoded proposed holidays, and an explicit instruction to return the result rather than reason from memory. That is substantial value beyond the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Sections are front-loaded logically, but the prose is bloated with duplicated tokens ('Vietnam Vietnam', '2026-2026'), repeated example sets, and a garbled negated clause ('Do not use this when public-sector and statutory paid-holiday layer only'). Useful signal exists but is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return fields need not be enumerated, yet the description still lists them harmlessly. Coverage scope, limitations, formula, and a REST fallback are all present; only the 2026-only coverage bound and the malformed exclusion clause keep it from being fully airtight.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single date parameter is fully documented in the schema, including its 2026-coverage caveat. The description's 'Inputs: date (date)' and JSON examples largely restate what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Checks a date against the Saturday-Sunday weekend baseline and exact 2026-2026 authority events' for Vietnam's public sector. It is clearly a single-date checker rather than a bulk add/count tool, though it never names a sibling directly, so differentiation comes mostly from the scope sentence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit 'Use this when...' directive and a 'Do not use this when...' exclusion that enumerates what is not inferred (private-employer, non-Sat/Sun workweeks, provincial, sector, bank, school schedules) plus a not-yet-approved holiday caveat. This is about as complete a usage contract as a one-parameter tool can carry.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_loansLoan Comparison CalculatorA
Read-onlyIdempotent
Inspect

Use this when you have two loan or mortgage quotes with different rates, terms or fees for the same amount and want the payments and lifetime costs side by side. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you are replacing an existing loan (use refinance-break-even), only need one loan's payment (use loan-payment), or will sell or repay early (this compares full-term costs and ignores the time value of money). Informational; not financial advice. What it computes: Compares two fixed-rate, fully amortizing loan offers for the same amount: the level monthly payment, total interest, up-front fees and total cost (interest + fees) of each, and which offer costs less over its full term. Example user requests: Compare a 300000 loan at 6% for 30 years with 3000 in fees against 5.5% for 15 years with 5000 in fees. | Which of these two fixed-rate offers has the lower lifetime interest and fees? | 同样贷款30万元,方案A年利率6%期限30年,方案B年利率5.5%期限15年,比较月供和总成本。 Inputs: loan_amount (number); rate_a_percent (number, %); term_a_years (number, years); fees_a (number, optional); rate_b_percent (number, %); term_b_years (number, years); fees_b (number, optional). Complete JSON argument examples: {"loan_amount":300000,"rate_a_percent":6,"term_a_years":30,"fees_a":3000,"rate_b_percent":5.5,"term_b_years":15,"fees_b":5000} | {"loan_amount":25000,"rate_a_percent":7,"term_a_years":5,"rate_b_percent":6,"term_b_years":6,"fees_b":500} Outputs: payment_a, payment_b, total_interest_a, total_interest_b, total_cost_a, total_cost_b, cheaper_loan, monthly_payment_difference, total_cost_difference, comparison, summary. Formula: For each loan: i = rate/1200, n = 12 × term_years, payment = loan_amount × i / (1 − (1 + i)^−n) (loan_amount / n if i = 0); total_interest = payment × n − loan_amount; total_cost = total_interest + fees. cheaper_loan = the loan with the lower total_cost; monthly_payment_difference = payment_a − payment_b; total_cost_difference = total_cost_a − total_cost_b Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/loan-comparison with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/loan-comparison.md

ParametersJSON Schema
NameRequiredDescriptionDefault
fees_aNoUp-front fees of loan A (origination, points, closing costs), paid separately rather than financed.
fees_bNoUp-front fees of loan B.
loan_amountYesAmount borrowed under both offers.
term_a_yearsYesTerm of loan A in years (fractions allowed; rounded to whole months). Unit: years.
term_b_yearsYesTerm of loan B in years. Unit: years.
rate_a_percentYesAnnual nominal rate of loan A in percent; the monthly rate is this / 12. Unit: %.
rate_b_percentYesAnnual nominal rate of loan B in percent. Unit: %.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description carries less safety burden. It adds meaningful behavioral context: the fixed-rate, fully amortizing assumption, blind spots like ignoring time value of money, the formula used, and the 'not financial advice' disclaimer. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every section earns its place: usage, exclusions, computation summary, example requests, inputs, outputs, formula, REST fallback, and docs. It is front-loaded with the invocation criterion and structured so an agent can quickly decide, call, and verify results.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter calculator, the description is exceptionally complete. It includes exact input and output names, complete JSON examples, the formula, a direct REST fallback, documentation link, and limitation notes; an output schema also exists, so return-value details do not need to be repeated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 repeats parameter names, types, and optionality and clarifies the formula that consumes them, but it adds little meaning beyond what the schema already provides with examples, units, defaults, and descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it compares two fixed-rate, fully amortizing loan offers for the same amount and reports payments, fees, total interest, and total cost side by side. It also differentiates itself from siblings by naming refinance-break-even and loan-payment as the tools for adjacent but different scenarios.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It opens with an explicit 'Use this when...' condition and then gives explicit 'Do not use this when...' exclusions, naming alternative tools and the early-payoff caveat. The instruction to call the tool directly rather than computing from memory further clarifies the intended invocation behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_betting_oddsOdds ConverterA
Read-onlyIdempotent
Inspect

Use this when you have odds in one format and need the other two, the implied probability of a price, or the payout of a stake at those odds. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need the combined price of several selections (use parlay-odds), the value of a bet given your own probability estimate (use bet-expected-value), or a bookmaker's margin across a whole market (use arbitrage-bet). Mathematics only; not gambling advice. What it computes: Converts betting odds between American (moneyline), decimal (European) and fractional (UK) formats, auto-detecting the input format, and reports the implied probability, profit and total return for a stake. Inputs: odds (string); format (enum, optional); stake (number, optional). Complete JSON argument examples: {"odds":"+150"} | {"odds":"-200","format":"auto","stake":100} Outputs: american, decimal, fractional, implied_probability_percent [%], profit_on_stake, total_return, detected_format. Formula: decimal = 1 + american/100 (american > 0) or 1 + 100/|american| (american < 0); decimal = 1 + a/b (fractional a/b); american = +100·(decimal − 1) if decimal ≥ 2, else −100/(decimal − 1); fractional = (decimal − 1) reduced with the GCD; implied_probability_percent = 100/decimal; total_return = stake × decimal Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/odds-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/gaming/odds-converter.md

ParametersJSON Schema
NameRequiredDescriptionDefault
oddsYesOdds in any format: American +150 or -200, decimal 2.50, fractional 3/2 or 3-2, or evens.
stakeNoStake used for the profit and return outputs (any currency).
formatNoFormat of the odds input. Auto: a/b or a-b with digits on both sides is fractional, a sign or an integer of 100 or more is American, anything else is decimal.auto

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds meaningful behavioral context: auto-detection of input format, exact computed outputs, the underlying formulas, and a direct REST fallback. It also clarifies this is mathematics only and not gambling advice, with no contradiction of the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but it is well-structured with clear sections for usage, exclusions, inputs, outputs, and formulas. It is front-loaded with the primary use case and exclusion guidance. The formula block is dense but earned because it precisely disambiguates the conversion semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers input formats, parameter semantics, output fields, examples, formulas, REST fallback, and documentation link. The rich output schema plus this description leaves no significant gap for an agent to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 still adds value by showing complete JSON examples, explaining what stake means in relation to profit and total return, and providing the conversion formulas that define how each parameter is interpreted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: converting betting odds between American, decimal, and fractional formats while reporting implied probability and payout. It also explicitly names sibling tools it is not (parlay-odds, bet-expected-value, arbitrage-bet), making differentiation clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states exactly when to use the tool ('when you have odds in one format and need the other two') and gives explicit exclusions with alternative tool names for combined prices, expected value, and bookmaker margin. This leaves no ambiguity about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_lunar_to_solarLunar to Solar Date ConverterA
Read-onlyIdempotent
Inspect

Use this when you know a lunar date such as 八月十五 or 闰六月初一 of a given lunar year and need the Gregorian date (e.g. for a lunar birthday or festival). Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you start from a Gregorian date (use lunar-calendar-converter), or you want every festival of a year at once (use chinese-festivals). What it computes: Converts a Chinese lunar calendar date (year, month, leap-month flag, day) to the Gregorian date, reporting the weekday, the day's ganzhi (干支) and the length of that lunar month, and validating that the leap month and day exist in that year. Example user requests: What Gregorian date is lunar 2026 month 8 day 15? | 2025 年农历闰六月初一对应公历哪一天? | Convert a Chinese lunar birthday to its Gregorian date and verify the leap-month flag. Inputs: lunar_year (integer); lunar_month (integer); is_leap_month (boolean, optional); lunar_day (integer). Complete JSON argument examples: {"lunar_year":2026,"lunar_month":8,"is_leap_month":false,"lunar_day":15} | {"lunar_year":2025,"lunar_month":6,"is_leap_month":true,"lunar_day":1} Outputs: gregorian_date, weekday, day_ganzhi, month_days, lunar_date_chinese, month_name, year_ganzhi, zodiac, julian_day_number, leap_month_note. Formula: JDN = start of the lunar month (new-moon day at UTC+8) + lunar_day − 1; month numbering per GB/T 33661-2017 (month 11 contains the winter solstice; leap month = first month without a 中气) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lunar-to-solar with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/lunar-to-solar.md

ParametersJSON Schema
NameRequiredDescriptionDefault
lunar_dayYesDay of the lunar month, 1–30 (day 30 exists only in 30-day months).
lunar_yearYesLunar year number (the year that starts at that year's Chinese New Year), 1900–2100.
lunar_monthYesLunar month number 1 (正月) to 12 (腊月).
is_leap_monthNotrue when the date is in the intercalary month of that number (only valid in years that have that leap month).

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly and idempotent annotations, the description discloses meaningful behavior: it validates leap-month and day existence, reports month length and ganzhi, uses a specific formula with a UTC+8 new-moon day, and includes a REST fallback with a warning not to guess API paths. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well sectionalized: use case, exclusions, computed outputs, examples, formula, and fallback. It is front-loaded with the primary trigger and every major block earns its place, though minor redundancy with the schema's examples prevents a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers selection criteria, input constraints, output fields, validation behavior, fallback API, and documentation link. With the output schema and annotations also present, an agent has everything needed to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the schema already documents ranges, defaults, and leap-month meaning. The description only restates the inputs and repeats the same JSON examples found in the schema, adding little semantic information beyond the structured definition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: converting a Chinese lunar date (year, month, leap flag, day) into the Gregorian date. It explicitly contrasts itself with the reverse conversion and festival-listing use cases, so an agent can distinguish it from convert_solar_to_lunar and related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The first sentence gives the exact trigger condition ('when you know a lunar date... and need the Gregorian date'), and the next paragraph lists two explicit exclusions with named alternatives. Although the named alternatives are not verbatim sibling tool names, the intended mapping is unmistakable and selection guidance is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_solar_to_lunarLunar Calendar Converter (农历)A
Read-onlyIdempotent
Inspect

Use this when you need the Chinese lunar date, ganzhi day/month/year, zodiac year or current solar term for a given Gregorian date (defaults to today). Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you start from a lunar date and need the Gregorian date (use lunar-to-solar), need a person's zodiac with the 立春 boundary option (use chinese-zodiac), or need the astronomical moon phase (use moon-phase). What it computes: Converts a Gregorian date to the Chinese lunisolar calendar (农历 nongli): lunar year, month (with leap-month flag), day, the sexagenary stems and branches (干支 ganzhi) of year, month and day, zodiac animal, nayin (纳音), the current 24-solar-term period and any traditional festival on that day. Example user requests: Convert 2026-09-25 to the Chinese lunar calendar and say whether it is a leap month. | 把 2025-07-25 换成农历,并给出干支和节气。 | Which Chinese lunar festival falls on this Gregorian date? Inputs: date (date, optional). Complete JSON argument examples: {"date":"2026-09-24"} | {"date":"2025-07-25"} Outputs: lunar_year, lunar_month, is_leap_month, lunar_day, lunar_date_chinese, lunar_date_text, month_name, day_name, month_days, leap_month_this_year, year_ganzhi, year_ganzhi_pinyin, year_english, zodiac, nayin_year, month_ganzhi, month_ganzhi_pinyin, day_ganzhi, day_ganzhi_pinyin, weekday, current_solar_term, next_solar_term, days_to_next_term [days], is_solar_term_day, festival, julian_day_number. Formula: lunar month = interval between successive new moons (instants at 120° E, UTC+8); month 11 contains the winter solstice; a leap month is the first month without a major solar term (中气) in a 13-month solstice-to-solstice suite; year_ganzhi index = (lunar_year − 4) mod 60; day_ganzhi index = (JDN + 49) mod 60; month branch = 寅 from 立春, one branch per odd solar term Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lunar-calendar-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/lunar-calendar-converter.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoCivil date in China Standard Time (UTC+8), 1900–2100; defaults to the current UTC date.today

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal read-only/idempotent behavior, and the description adds substantial context: it defaults to today, supports dates 1900–2100, explains the leap-month and ganzhi formulas, lists all output fields, and provides a REST fallback. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections, front-loaded usage guidance, and examples. However, it is verbose: the detailed formula and REST fallback details extend beyond what selection and invocation require, though they add some value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single optional parameter and rich output schema, the description is complete: it includes bilingual example requests, full output field list, formula, fallback endpoint, docs link, and explicit sibling exclusions. Nothing needed to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the single date parameter with 100% coverage (format, default, range, examples). The description only restates 'date (date, optional)' and gives JSON examples, adding little semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb+resource: 'Converts a Gregorian date to the Chinese lunisolar calendar' and lists specific outputs (lunar date, ganzhi, zodiac, solar term, festival). It also distinguishes itself from sibling tools by explicitly naming lunar-to-solar, chinese-zodiac, and moon-phase.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit 'Use this when...' conditions and a dedicated 'Do not use this when...' section that names which sibling tool to use instead. It even instructs the agent to call the tool directly rather than answer from memory, which is strong usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_temperatureTemperature ConverterA
Read-onlyIdempotent
Inspect

Use this when you need a weather, cooking, body or laboratory temperature in another scale, e.g. Fahrenheit to Celsius or Celsius to Kelvin. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need to convert a temperature difference (a change of 10 °C is 18 °F, not 50 °F: multiply by 9/5 without the offset) or heat energy (use energy). What it computes: Converts temperatures between Celsius, Fahrenheit, Kelvin and Rankine with the exact defining relations (°F = °C × 9/5 + 32, K = °C + 273.15, °R = °F + 459.67) and rejects values below absolute zero. Inputs: value (number); from_unit (enum); to_unit (enum). Complete JSON argument examples: {"value":100,"from_unit":"F","to_unit":"C"} | {"value":25,"from_unit":"C","to_unit":"F"} Outputs: result, result_text, formula, factor, conversion_table. Formula: °F = °C × 9/5 + 32; °C = (°F − 32) × 5/9; K = °C + 273.15; °R = °F + 459.67 = K × 9/5 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/temperature with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/conversion/temperature.md

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesAmount to convert, expressed in from_unit.
to_unitYesUnit to convert into (same symbols as from_unit).
from_unitYesUnit of the input value. Accepted symbols: C, F, K, R; spelled-out names and common abbreviations are accepted too.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral detail beyond that: exact conversion formulas, rejection of values below absolute zero, output field names, and a direct REST fallback with explicit do-not-guess-path guidance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with front-loaded usage guidance followed by labeled sections for computation, inputs, examples, outputs, formula, and fallback. Some repetition of the formula exists, but the clear structure keeps it usable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description does not need to explain return values in depth. It covers valid input units, rejected inputs, exact formulas, JSON examples, REST fallback, and documentation, making it complete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 value, from_unit, and to_unit well. The description adds JSON examples and formula context, but does not significantly deepen parameter meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (converts temperatures) and resource (Celsius, Fahrenheit, Kelvin, Rankine), and scopes it to weather, cooking, body, and lab temperature use cases. It clearly identifies itself as the temperature-specific tool distinct from generic conversion tools like convert_units.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use context ('weather, cooking, body or laboratory temperature') and explicit when-not-to-use cases (temperature differences and heat energy). It suggests an alternative ('use energy') but does not name an exact sibling tool, so the routing guidance is strong but slightly less precise than it could be.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_time_zoneTime Zone ConverterA
Read-onlyIdempotent
Inspect

Use this when you need to know what time an event scheduled in one city corresponds to in another city or in UTC on a specific date. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need the same instant in many zones at once (use world-clock), an epoch value (use unix-timestamp), or the elapsed time between two clock times (use time-duration). What it computes: Converts a wall-clock date and time between IANA zones using pinned tzdb 2026d. It reports both offsets, the UTC instant, date changes, the source-time status and every candidate UTC instant when the input falls in a repeated hour. Example user requests: Convert 2027-01-15 09:00 America/New_York to Australia/Adelaide and show both dates. | 把 2026-07-15 09:00 纽约时间换成阿德莱德时间。 | What UTC instant corresponds to 2026-10-04 01:45 in Australia/Adelaide? Inputs: date (date, optional); time (string); from_zone (string); to_zone (string); resolution_policy (enum, optional). Complete JSON argument examples: {"date":"2026-09-23","time":"09:00","from_zone":"Australia/Adelaide","to_zone":"America/New_York"} | {"date":"2026-07-04","time":"12:00","from_zone":"America/Los_Angeles","to_zone":"Asia/Kolkata"} Outputs: converted_date, converted_time, converted_datetime, converted_weekday, from_utc_offset, to_utc_offset, from_abbreviation, to_abbreviation, utc_datetime, day_difference [days], time_difference_hours [h], source_time_status, source_candidate_utc_datetimes, applied_resolution_policy, tzdb_version, dataset_version, source_url, source_sha256. Formula: utc = date + time − offset_from(date, time); converted = utc + offset_to(utc); time_difference_hours = (offset_to − offset_from) / 60 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/time-zone-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/time-zone-converter.md

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoCalendar date of the source time in from_zone (YYYY-MM-DD); defaults to the current UTC date.today
timeYesWall-clock time in from_zone, 24-hour HH:MM (seconds optional).
to_zoneYesIANA time zone to convert to, e.g. America/New_York or Asia/Tokyo.
from_zoneYesIANA time zone of the source time, e.g. Australia/Adelaide, Europe/Berlin or UTC.
resolution_policyNoHow to handle a repeated or nonexistent source wall time. reject is safest; earlier/later choose a repeated-time candidate; shift_forward moves a skipped time by the DST gap.reject

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly and idempotent behavior, and the description adds substantial behavioral context: pinned tzdb 2026d, reporting of both offsets, date changes, source-time status, and candidate UTC instants for repeated hours. It also discloses edge-case handling via resolution_policy, which goes well beyond the annotation-only safety profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but it is well-structured with labeled sections and front-loaded usage guidance. The formula and REST fallback add some redundancy for a typical MCP invocation, yet they are compact and serve transparency; overall the length is justified by the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the rich schema/annotations, the description covers purpose, exclusions, edge cases, input examples, output fields, and fallback access. Nothing critical is missing for an agent to decide when to use this tool and how to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 schema already documents types, defaults, formats, and the resolution_policy enum. The description repeats the input list and provides complete JSON examples, which is convenient but does not add significant semantic meaning beyond what the schema already gives.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing ('converts a wall-clock date and time between IANA zones'), clearly defines what the tool computes, and explicitly distinguishes it from alternatives like world-clock, unix-timestamp, and time-duration. It also gives concrete example user requests that anchor the tool's exact purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states explicitly when to use the tool ('Use this when you need to know what time...'), when not to use it ('Do not use this when...'), and names concrete alternative tools for those cases. It also instructs the agent to call the tool directly and return its calculation rather than guessing from memory, leaving no ambiguity about invocation intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_unitsConvert unitsA
Read-onlyIdempotent
Inspect

Use this when the user asks to convert a numeric value between units of the same physical quantity: length, mass, temperature, area, volume, speed, time, data, energy, pressure, power, angle, fuel economy, force, frequency, density or torque. Unit symbols and common names are accepted. Do not use this for currency, live exchange rates or cross-quantity conversions that require density. Returns the converted value, detected quantity, exact factor and a conversion table.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesValue to convert.
to_unitYesTarget unit symbol or name, e.g. 'km'.
from_unitYesSource unit symbol or name, e.g. 'mi', 'miles', '°C'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already convey readOnly, idempotent, and non-destructive behavior; the description adds that unit symbols and common names are accepted and that the result includes the converted value, detected quantity, exact factor, and a conversion table. There is no contradiction between the prose and the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: the trigger and scope, accepted unit forms, and exclusions plus return contents. It is front-loaded with the most important decision information and contains no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With all required parameters fully documented, rich annotations, an output schema present, and return behavior summarized in the description, an agent has everything needed to decide and invoke correctly. The described scope and exclusions also prevent common misuse.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All three parameters have full descriptions in the input schema, so the baseline is 3. The tool description only reinforces that units can be symbols or names and does not add per-parameter format or edge-case details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action and resource — converting a numeric value between units of the same physical quantity — and enumerates supported quantities explicitly. It does not, however, distinguish itself from the overlapping sibling convert_temperature, which also handles temperature conversions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It opens with a clear 'Use this when...' trigger and adds explicit exclusions for currency, live exchange rates, and density-requiring cross-quantity conversions. It stops short of naming any alternative tool for those cases, so the routing guidance is strong but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ar_working_daysCount Argentina Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Argentina working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when provincial, municipal, employer, bank, exchange, school, sector and religion-specific schedules are not generalized; regional one-off holidays are not included in this nationwide default. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Argentina working days around Argentina national holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/argentina-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/argentina-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real behavioral context: the nationwide-default calendar scope with regional one-off holidays excluded, substitute-day policy fields, dataset version and sources, plus a REST fallback endpoint. Some of this (output field list, the trivial per-date formula) is redundant with the output schema, keeping it from a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and the when-not caveat are front-loaded, and the labeled sections (Inputs, Outputs, Formula, REST fallback, Docs) scan well. However, for a simple two-date count the text is padded with a trivial formula line and an output enumeration that duplicates the output schema, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not explain return values, and it still covers scope limits, optionality semantics, an invocation example, a fallback endpoint and docs. An agent has everything needed to select and call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so 3 is the baseline, but the description restates each input with type and optionality and supplies a complete JSON argument example, which is useful for exact invocation. It adds little semantic nuance beyond the schema's own field descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and scopes it geographically to Argentina, which distinguishes it from the many count_*_working_days siblings. The opening sentence frames the exact use case ('auditable Argentina working-day count').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('call this tool directly and return its calculation instead of answering from memory or stopping at discovery') and states a clear when-not condition (provincial, municipal, employer, bank, school, sector and religion-specific schedules are not covered, regional one-off holidays excluded). It does not name the obvious sibling alternatives (check_ar_working_day, add_ar_working_days, list_working_day_calendars), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_at_working_daysCount Austria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Austria working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Werktag is not uniform across Austrian legal domains; Saturday treatment, provincial patron days, school, bank, employer and sector schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Austria working days around Austrian National Day. | Count Austria working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/austria-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/austria-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint/idempotentHint annotations already covering the safety profile, the description still adds substantial behavioral context: what is not inferred (Saturday treatment, provincial patron days, school/bank/employer/sector schedules), the deterministic per-date formula, and dataset/version provenance. This exceeds the annotation baseline materially.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use/when-not guidance, then labeled sections (What it computes, Inputs, Outputs, Formula, REST fallback, Docs). Some redundancy exists — parameters and an argument example are repeated despite full schema coverage — but most sentences carry distinct information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-country range-count tool with rich output schema, the description covers selection criteria, exclusions, input example, output field inventory, formula, and an explicit REST fallback URL with a warning not to guess another path. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and their defaults; the description's 'Inputs' line and example largely restate that. It adds no semantics for include_start_date/include_end_date beyond the schema's own descriptions, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') scoped to Austria, and explicitly contrasts its authority scope with a nationwide statutory holiday list. It does not name the nearest siblings (check_at_working_day, add_at_working_days) as alternatives, so differentiation is conveyed by scope rather than routing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you need an auditable Austria working-day count... call directly instead of answering from memory or stopping at discovery') and an explicit when-not ('Do not use this when nationwide statutory holiday list only'). Both the affirmative and exclusion conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_australia_working_daysCount Australia State/Territory Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable state/territory working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the division is unknown or the task requires a local/employer/exchange calendar. What it computes: Counts working and non-working dates for a selected Australian state or territory in 2026-2027. Example user requests: Count NSW working days from 2026-04-20 to 2026-05-04. Inputs: start_date (date); end_date (date); division (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-20","end_date":"2026-05-04","division":"nsw","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, public_holidays_counted, territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, limited_or_part_day_events, calendar_scope, calendar_profile, source_quality, regional_policy, dataset_version. Formula: for each included date: working_days += selected status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/australia-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/australia-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionYesRequired Australian state/territory code: act, nsw, nt, qld, sa, tas, vic or wa.
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint false, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds substantial value beyond annotations: it specifies the computation formula, the 2026-2027 scope, a direct REST fallback endpoint, documentation URL, and output field names. It does not disclose auth or rate-limit behavior, but those are likely irrelevant for a read-only calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and contains redundant sections that duplicate structured data: it lists inputs that the schema already describes, enumerates output fields despite an output schema existing, and includes a formula that may not be needed. While it is front-loaded with usage guidance and well-organized, much of the content does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, rich schema, annotations, and output schema, the description is complete and leaves no critical gaps for an agent to invoke it correctly. It even adds extra context like REST fallback and docs. It could be slightly more focused, but it is certainly complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents each parameter fully. The description repeats the parameter names and types and provides a complete JSON argument example, but that example largely mirrors the schema's own examples. It adds little semantic detail beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool counts working and non-working dates for a selected Australian state or territory in 2026-2027. It distinguishes the resource (Australian state/territory) from other country siblings, but does not explicitly differentiate itself from close siblings like add_australia_working_days or check_australia_working_day beyond the verb count in its name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance ('Use this when you need an auditable state/territory working-day count') and when-not-to-use guidance ('Do not use this when the division is unknown or the task requires a local/employer/exchange calendar'). Alternatives by name are not listed, but the context and exclusions are clear enough for an agent to decide correctly.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_bd_working_daysCount Bangladesh Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Bangladesh working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government/public-office schedule only; private-employer, bank, school, industrial-zone, essential-service, regional hill-district, optional-religious and later unlisted ad hoc schedules are not inferred. February 10 is not included because the reported later holiday was industrial-zone specific. Lunar dates may be revised by a later official notice. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Bangladesh working days around Election-period special holiday. | Count Bangladesh working days around Eid-ul-Adha period. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-19","end_date":"2026-03-23","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bangladesh-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bangladesh-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only/idempotent/closed-world, and the description adds real behavioral context beyond them: calendar-scope constraints (government/public-office only), why February 10 is excluded, and the caveat that lunar dates may be revised by later official notice. This is exactly the kind of audit-relevant disclosure annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but front-loaded with the decision rule and organized under labeled sections (What it computes / Inputs / Outputs / Formula / Fallback / Docs). The outputs list and REST/formula details are mildly redundant given the output schema exists, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the complexity (audit-grade holiday logic, scope caveats, fallback endpoint), the description covers when to use, what is and isn't inferred, inputs, outputs, and a formula. With an output schema present, it needn't explain returns further — nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 earns extra by listing all four inputs with types/optionality and providing a complete JSON argument example. It does not add date-format rules beyond the schema's 'date' format, so it stops short of 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope ('Counts authority-scope working and non-working dates in a range') and is clearly differentiated from the nearest siblings (add_bd_working_days, check_bd_working_day) by framing itself as the counting/audit tool. An agent can identify it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit both ways: 'Use this when you need an auditable Bangladesh working-day count... Call this tool directly instead of answering from memory or stopping at discovery,' followed by a detailed 'Do not use this when' clause enumerating excluded schedule types. Routing to alternatives is implied via the sibling naming pattern and the strict scope exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_be_working_daysCount Belgium Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Belgium working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when private-sector statutory core only; substitute dates, public-service/community/regional holidays, sector agreements, employer, school, bank and municipal schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Belgium working days around Belgian National Day. | Count Belgium working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/belgium-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/belgium-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, and the description goes well beyond them by disclosing the exact data-coverage boundary (which holiday classes are and are not inferred), the reporting formula, the full output field list, and a documented REST fallback path. This is unusually rich behavioral context for a read-only calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage guidance is correctly front-loaded, but the body repeats the input schema as a prose list, restates output fields that an output schema already defines, and adds formula plus REST/docs boilerplate. Several of these blocks duplicate structured data rather than earning their space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the description supplies the remaining essentials: domain scope, exclusions, argument example, and a fallback endpoint. The one real gap is routing guidance among the count/check/add working-day siblings and any statement of supported date-range limits beyond the schema's 2026-2027 hints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter already carries a description and example, so the schema carries the semantics. The description only restates the four inputs with types/optionality and one combined JSON example, adding no new interpretation (e.g., what happens when both include flags are false or how inclusive ranges behave).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Counts authority-scope working and non-working dates in a range" is a specific verb + resource, and the Belgium/authority-scope qualifier is clear. However, in a set of 200+ siblings it never distinguishes itself from check_be_working_day (single date) or add_be_working_days (date arithmetic), so the agent must infer the boundary from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives both a "use this when" trigger (auditable Belgium working-day count) and a "do not use this when" exclusion covering substitute dates, sector agreements, and employer/school/bank schedules, plus an instruction to call the tool rather than answer from memory. The exclusion is awkwardly worded ("private-sector statutory core only") and no alternative sibling tool is named for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_bg_working_daysCount Bulgaria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Bulgaria working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when bulgaria 2026 nationwide statutory holidays, observed non-attendance days and January 2 one-off rest over an explicitly selected Monday-Friday planning baseline. November 1 is education-only and does not add general rest. No personal, shift, school, employer, bank/exchange, optional religious-leave, payroll or legal-deadline schedule is computed. Future years and additional local/sector closures are unsupported. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; education-only holidays do not create general rest. Example user requests: Count Bulgaria working days around One-off euro transition rest, not statutory holiday. | Count Bulgaria working days around May 24 Sunday replacement. | Count Bulgaria working days around No nationwide school-holiday substitute. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-04-09","end_date":"2026-04-14","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_observed_non_attendance_day, is_one_off_non_attendance_day, is_education_only_holiday, observed_for_dates, payroll_scope. Formula: planning_workday = weekday AND no nationwide statutory/observed/one-off rest event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bulgaria-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/bulgaria-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a universal legal roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive behavior, so the bar is lower. The description adds valuable domain-specific details: it requires an explicit Monday-Friday planning baseline, explains that education-only holidays do not create general rest, and lists what is not computed (payroll, legal deadlines, etc.).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and repetitive, including a garbled sentence, multiple example user requests, and a full output list that duplicates the output schema. It is front-loaded with purpose and usage, but several sections could be trimmed without losing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is complete: it covers inputs, outputs, formula, REST fallback, and documentation link. It includes more than necessary in some areas, but nothing critical is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 parameters. The description restates the inputs and provides a JSON example, but adds little meaning beyond what the schema already conveys, apart from reinforcing the work_schedule requirement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (count) and resource (Bulgaria working days), and explicitly scopes the tool to Bulgaria, distinguishing it from the many country-specific siblings. It also clarifies that it is an 'auditable' count, setting expectations for the result.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear when-to-use guidance ('Use this when you need an auditable Bulgaria working-day count') and lists exclusions such as no personal/shift/school schedules and unsupported future years. However, the 'Do not use this when' clause is garbled and does not name alternative tools, leaving some ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_br_working_daysCount Brazil Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Brazil working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is not a universal Brazilian private-employer calendar; state, municipal, sector, employer and private payroll schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Brazil working days around Tiradentes. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/brazil-federal-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/brazil-federal-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior. The description goes further by disclosing the calendar scope limitation (federal/authority-level only, not state/municipal/sector/employer), the output fields, dataset version, and a REST fallback, giving the agent rich behavioral context. 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance and organized into labeled sections, but it is lengthy and includes redundant content such as the full output field list (when an output schema exists) and a trivial formula, which dilute conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the presence of an output schema, rich annotations, and many siblings, the description covers purpose, usage, scope limitations, inputs, outputs, and fallback methods. An agent has everything needed to invoke and interpret the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents each parameter with descriptions and examples. The description repeats the parameter list and provides a complete JSON example, but adds no semantic detail (e.g., date inclusivity rules) beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Counts') and resource ('authority-scope working and non-working dates in a range') for Brazil. It implicitly distinguishes from check_br_working_day (single date) and add_br_working_days by emphasizing range counting, but it does not name any sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides a clear when-to-use ('when you need an auditable Brazil working-day count') and when-not ('Do not use this when this is not a universal Brazilian private-employer calendar...'). However, it does not name alternative tools such as check_br_working_day or add_br_working_days for different needs, so it falls short of the top score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_canada_federal_working_daysCount Canada Federal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Canada federal baseline count for a pinned year. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need provincial, private-employer or schedule-specific substitute-day semantics. What it computes: Counts baseline working and non-working dates for federally regulated-employer general holidays in 2026-2027. Example user requests: Count Canada federal working days from 2026-09-28 to 2026-10-02. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-09-28","end_date":"2026-10-02","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, federal_general_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += Canada federal status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/canada-federal-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/canada-federal-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the description's burden is lighter. It still adds real behavioral context: the exact computation scope, the calendar profile/dataset version and substitute-day policy outputs, and a REST fallback endpoint so the agent does not guess a path. It stops short of explaining how non-working days are classified beyond the formula line.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the use/no-use decision, which is good, but it is padded: the 'Inputs' list and 'Complete JSON argument examples' duplicate the input schema, and the 'Formula' line ('working_days += Canada federal status.is_working_day') is effectively filler that conveys nothing usable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich output schema, the description need not enumerate return fields, yet it does list them all, so nothing an agent needs is missing: jurisdiction limits, date-range bounds, include flags, fallback endpoint, and docs link are all present. Slight redundancy against the output schema costs it the top mark.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters, setting the baseline at 3. The description restates the inputs with types and repeats a full JSON example that the schema's 'examples' block already contains, adding convenience but no new semantic meaning (e.g., no clarification of boundary ordering or DST-like edge cases).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (counts) and resource (Canada federal working/non-working dates) with explicit jurisdiction and a pinned year range (2026-2027). It differentiates from provincial/private-employer semantics, but does not distinguish itself from the near-identically named sibling add_canada_federal_working_days, which an agent could easily confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('auditable Canada federal baseline count for a pinned year'), instructs to call it directly rather than answering from memory, and gives an explicit exclusion ('Do not use this when you need provincial, private-employer or schedule-specific substitute-day semantics'). This is a textbook when/when-not statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_china_working_daysMainland China Working Days Between DatesA
Read-onlyIdempotent
Inspect

Use this when you need the number of official mainland China working days in a 2024-2026 date range for an SLA, payroll, project or delivery estimate. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need only elapsed calendar days, another jurisdiction, an industry-specific settlement calendar, or dates outside 2024-2026. What it computes: Counts official mainland China working and non-working days in a date range using State Council holiday periods and weekend makeup workdays rather than a simple Monday-Friday rule. Example user requests: How many official China working days are there from 2026-09-18 through 2026-09-25, inclusive? | 计算2026年国庆节前后这段日期中实际需要上班的天数,要包含调休周末。 | Count mainland China business days between 2025-01-24 and 2025-02-10. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-09-18","end_date":"2026-09-25","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], adjusted_workdays_counted, holiday_dates_counted [days], source_document_ids, dataset_version, coverage_start, coverage_end. Formula: for each included date: working_days += is_working_day(date); non_working_days += not is_working_day(date) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date of the range (YYYY-MM-DD), within 2024-2026. Earlier dates are normalized and reported in a note.
start_dateYesFirst date of the range (YYYY-MM-DD), within 2024-2026.
include_end_dateNoWhether end_date participates in the count.
include_start_dateNoWhether start_date participates in the count.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it as read-only, idempotent, and non-destructive. The description adds critical behavioral nuance: it counts official working days using State Council holiday periods and weekend makeup workdays, not a simple Monday-Friday rule. It also explains the formula and mentions date normalization for out-of-range dates. This goes beyond the annotations and clarifies the non-trivial counting logic, so the agent understands exactly what the tool does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary use case and exclusions, then systematically covers what it computes, example requests, inputs, outputs, formula, REST fallback, and docs. Every section serves a purpose with no filler. It is detailed but efficiently organized, and the structure makes it easy for an agent to parse and act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with this complexity, the description is fully complete. It includes the algorithm, output fields, date range constraints, REST fallback, documentation link, and example inputs. The output schema exists and is summarized. An agent has all information needed to select, invoke, and interpret results without further discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: each parameter has a description, examples, and defaults. The description lists the inputs and provides a complete JSON example, but does not add semantics beyond what the schema already provides. It mentions the 2024-2026 range, which is also in the schema. Per the rubric, with high schema coverage, baseline 3 is appropriate; the description offers no extra parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear, specific statement: 'Use this when you need the number of official mainland China working days in a 2024-2026 date range for an SLA, payroll, project or delivery estimate.' It names the exact resource (mainland China working days) and scope (date range), and distinguishes it from siblings like count_uk_working_days and check_china_working_day by its jurisdiction and counting behavior. Example requests further cement its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when NOT to use it: 'Do not use this when you need only elapsed calendar days, another jurisdiction, an industry-specific settlement calendar, or dates outside 2024-2026.' It also instructs the agent to call the tool directly rather than compute from memory, and provides example user requests that map to real-world use cases. This leaves no ambiguity about when it should be selected over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ch_working_daysCount Switzerland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Switzerland working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when federal layer only. Cantonal public holidays, municipal holidays, employer, collective-agreement, school, bank and exchange schedules are not inferred; Swiss law permits cantons to recognize additional holidays. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Switzerland working days around Swiss National Day. | Count Switzerland working days around Cantonal holiday is not inferred. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-08-01","end_date":"2026-08-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/switzerland-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/switzerland-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, but the description goes well beyond them: it discloses the calendar scope limitation (cantons may recognize additional holidays; cantonal, municipal, employer, collective-agreement, school, bank and exchange schedules are not inferred), the computation rule, and a REST fallback path with a warning not to guess another /api/* path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The answer is front-loaded with the decisive when/when-not guidance and organized under clear labels, so an agent can skim it. However some content is filler or redundant: the 'Formula' line adds nothing, and the second example request ('Count Switzerland working days around Cantonal holiday is not inferred') merely repeats the exclusion already stated above.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter counting tool with full schema coverage and an output schema, the description covers everything an agent needs: scope, inclusive/exclusive semantics of the range endpoints, non-inferred calendars, a REST fallback, and a docs URL. Listing the output fields is redundant given the output schema but harmless.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date, end_date and the two inclusion booleans. The description restates the same inputs and adds a complete JSON argument example, but contributes no new meaning (formats, boundaries, or defaults) beyond the structured fields, which is the baseline-3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') for a named territory, which cleanly separates it from the check_* (single-date) and add_* (arithmetic) Switzerland siblings. The scope is pinned down further with the explicit 'federal layer only' exclusion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use ('when you need an auditable Switzerland working-day count'), a directive to call the tool rather than answer from memory or stop at discovery, and a when-not-to-use case ('Do not use this when federal layer only') enumerating the schedules that are not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_cl_working_daysCount Chile Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Chile working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Chile's nationwide statutory/public-holiday layer over a Saturday-Sunday baseline. Regional/local holidays, school, bank, private-employer, sector and collective-agreement schedules are not inferred. Commerce mandatory-rest exceptions are preserved as provenance but are not generalized to every worker. Future annual dates require refreshed official evidence. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Chile working days around Chile Labour Day. | Count Chile working days around Chile ordinary working day. | Count Chile working days around Chile winter-solstice Indigenous Peoples Day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-02","end_date":"2026-04-06","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/chile-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/chile-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive/openWorld, so the description is free to add non-obvious behavior, and it does: uncovered schedule layers, preserved-as-provenance mandatory-rest exceptions, evidence-freshness requirements for future dates, substitute-day/holiday policy outputs, and a pinned REST fallback path with an explicit 'do not guess another /api/* path' warning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Use conditions are front-loaded, but the body bloats: an output-field list that duplicates the output schema, a trivial formula line ('working_days += status.is_working_day'), and a REST URL plus docs link. Working content is diluted by restatement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a date-range counting tool with a full output schema and strong annotations, the description covers scope limits, examples, an argument JSON example, and a fallback endpoint. Listing return fields is redundant given the output schema, but nothing critical to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The description only restates the inputs with their types and marks include_start_date/include_end_date as optional, adding no format, boundary, or interaction meaning beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') for Chile, which separates it from the many per-country count_*_working_days siblings. It also names the covered scope (nationwide statutory/public-holiday layer over a Saturday-Sunday baseline). The downstream 'Do not use this when...' sentence is garbled, but the computing purpose itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit use conditions ('when you need an auditable Chile working-day count', 'call this tool directly... instead of answering the formula from memory') and explicit exclusions (regional/local holidays, school, bank, private-employer and collective-agreement schedules are not inferred; future dates need refreshed evidence). The malformed 'Do not use this when...' clause blunts the routing statement but the exclusion content is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_co_working_daysCount Colombia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Colombia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers Colombia's nationwide statutory paid-rest holiday layer over a Saturday-Sunday baseline. Municipal, departmental, school, bank, employer, sector and local patron-saint schedules are not inferred. Future annual calendars require refreshed official evidence. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Colombia working days around Colombia transferred Three Kings holiday. | Count Colombia working days around Colombia Good Friday. | Count Colombia working days around Ordinary Colombia working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-13","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/colombia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/colombia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds real value on top: coverage boundaries, the requirement for refreshed evidence for future calendars, the exact set of output fields, and a REST fallback endpoint. The awkwardly phrased 'Do not use this when this package covers...' sentence is confusing but conveys a real coverage limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use clause, but the body is bloated: it repeats the schema example, includes a trivial formula line, and spends length on a REST fallback URL and docs link. Most sentences earn their place, but the definition is longer than the tool's complexity warrants.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a jurisdiction-scoped date-counting tool it is essentially complete: input shape, output field list, coverage limits, and fallback path are all present, and an output schema exists so return-value explanation is unnecessary. Minor confusion from the coverage sentence keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters with types and defaults. The description restates the inputs and gives a complete JSON example, but adds no semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and names the jurisdiction (Colombia) with example requests. However, it never distinguishes itself from the clearly related siblings check_co_working_day (single-date check) and add_co_working_days, leaving the agent to infer the split.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('when you need an auditable Colombia working-day count') and an instruction to call it directly rather than answering from memory, plus scope exclusions (municipal, departmental, school, bank, employer, sector schedules not inferred). It does not name an alternative sibling tool, so the routing guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_cz_working_daysCount Czech Republic Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Czech Republic working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when czech Republic 2026 statutory rest-day facts over an explicitly selected Monday-Friday planning baseline. This is not a universal legal weekly roster. No shift, individual employer, bank/exchange, school, retail opening, payroll or legal-deadline schedule is computed. Commemorative days do not add rest; no substitute Monday is inferred. Future-year coverage is not asserted. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; commemorative events do not create rest. Example user requests: Count Czech Republic working days around Two names on January 1, one rest date. | Count Czech Republic working days around Education commemorative day remains a planning workday. | Count Czech Republic working days around November 17 is a Czech statutory rest day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-04-02","end_date":"2026-04-07","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_other_holiday, is_statutory_holiday, is_commemorative_day, payroll_scope. Formula: planning_workday = weekday AND no state_holiday AND no other_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/czech-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/czech-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline, not a statutory universal roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds substantial value beyond them: the computation formula, the fact that commemorative days do not add rest, no substitute Monday inferred, no shift/employer/bank/payroll schedules computed, and a direct REST fallback URL. This is rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The scoping and usage statements are front-loaded, but the body is bloated with repetitive negations, a garbled when-not sentence, and a full output-field enumeration that duplicates the output schema. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only calculation tool with annotations and an output schema, the description supplies more than enough: scope limits, formula, fallback endpoint, and docs. Slightly over-complete (redundant output listing) but nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 goes further by enumerating inputs and providing a complete, copyable JSON argument example that demonstrates how the required fields combine. That adds practical meaning beyond the per-property schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Counts authority-scope working and non-working dates in a range') and scopes it to Czech Republic, so it is identifiable. However, it never explicitly distinguishes itself from the closely-named siblings add_cz_working_days and check_cz_working_day, leaving the count-vs-add-vs-check boundary implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit usage direction ('Call this tool directly and return its calculation instead of answering the formula from memory') and a when-not list of excluded scopes. The 'Do not use this when czech Republic 2026 statutory rest-day facts over an explicitly selected Monday-Friday planning baseline' sentence is malformed and hard to parse, weakening otherwise-present guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_de_working_daysCount Germany Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Germany working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when state, municipal, school, bank, TARGET, transport-system, collective-agreement and employer-specific schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Germany working days around German Unity Day. | Count Germany working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/germany-national-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/germany-national-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description still adds real behavioral context beyond that: the exact computation formula, the notion of 'authority-scope' calendar policies, and a documented REST fallback with a warning not to guess another /api/* path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the when/when-not guidance before computation details, which is the right order. It is somewhat long and includes mildly redundant example user requests, but every section (inputs, outputs, formula, fallback, docs) is structured and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter read-only computation tool with an output schema, the description covers purpose, usage boundaries, inputs, an argument example, computation semantics, and a REST fallback. Nothing an agent needs in order to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and includes types, defaults, and examples, so the schema already documents all four parameters. The description largely restates them ('start_date (date); end_date (date); include_start_date (boolean, optional)') plus a complete JSON example, adding little meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb, resource, and scope: 'Counts authority-scope working and non-working dates in a range' for Germany. It is clearly distinguishable from siblings like check_de_working_day (single-day test) and add_de_working_days (additive), which the description's framing helps disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('when you need an auditable Germany working-day count') and instructs the agent to 'Call this tool directly... instead of answering the formula from memory or stopping at discovery,' which is a notable anti-pattern warning. It also gives a when-not: schedules that are state/municipal/school/bank/TARGET/transport/collective-agreement/employer-specific are not inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_dk_working_daysCount Denmark Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Denmark working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Collective-agreement, employer, sector, school, bank, local and customary half-day closures are not inferred; Store Bededag is not a holiday from 2024 onward. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Denmark working days around Ascension Day. | Count Denmark working days around Constitution Day is not a statutory holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/denmark-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/denmark-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the read-only/idempotent/no-side-effect profile, but the description adds genuinely useful behavior the annotations do not: which closure categories are not inferred (collective-agreement, employer, sector, school, bank, local, customary half-day), the Store Bededag 2024 change, and the exact counting formula. It omits any range-limit or dataset-version caveat, but the added scope transparency is substantial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled sections (when to use, when not, what it computes, inputs, outputs, formula, fallback, docs) are front-loaded and scannable. There is mild redundancy: the Inputs and Outputs enumerations largely duplicate the schema and output schema, and one example request is an awkward negation, but the structure remains easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still covers scope, exclusions, formula, and a REST fallback path. What is missing is minor: no mention of the valid date window (2026-2027) or dataset currency, both of which live only in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are already documented in the schema. The description's 'Inputs' line and complete JSON example restate the schema rather than adding syntax, format, or default semantics beyond it, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and pins the scope to Danish authority calendars. It distinguishes itself from the single-day check_dk_working_day by emphasizing range counting, but never names a sibling tool explicitly, so sibling disambiguation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit positive trigger ('when you need an auditable Denmark working-day count'), an explicit exclusion ('Do not use this when nationwide statutory list only', plus the list of non-inferred closure types), and a directive to call the tool rather than answer from memory or stop at discovery. Nothing about when to invoke is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ee_working_daysCount Estonia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Estonia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when estonia 2026 statutory rest facts over an explicitly selected Monday-Friday planning baseline. Sixteen national-importance dates do not add rest. Four dates carry a conditional three-hour shortening rule but still count as one planning working date, not a half-day or full-day holiday. No substitute or bridge is invented. Individual shifts, actual working hours, opening hours, employer/local/sector/school/bank schedules, replacement weekly rest, payroll, legal deadlines and future years are not computed. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; national-importance dates and three-hour shortening never add full-day rest. Example user requests: Count Estonia working days around Independence Day is statutory rest. | Count Estonia working days around Shortened working date is not full-day rest. | Count Estonia working days around National importance does not imply rest. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-06-22","end_date":"2026-06-25","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, is_day_of_national_importance, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope, shortened_work_dates_counted, shortened_work_date_count. Formula: planning_workday = weekday AND no statutory_full_day_rest_event; shortened working dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/estonia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/estonia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover safety (readOnly, idempotent, non-destructive, openWorld=false), and the description goes well beyond that: it states the counting formula, that shortened days still count as one planning date, that no substitute/bridge day is invented, and that no full-day rest is added by national-importance dates. It also discloses the REST fallback endpoint and docs URL, which an agent needs for reliability.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The when-to-use guidance is front-loaded, but the body repeats the national-importance/shortening rule several times and enumerates a long Outputs list that duplicates the existing output schema. The unparseable 'Do not use this when...' sentence is dead weight that costs clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations, a full output schema, and 100% schema coverage, the description supplies the remaining context an agent needs: eligibility, counting formula, scope boundaries, and a direct API fallback. The only gap is the mangled exclusion clause, which leaves the when-not condition partly ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all five parameters including the required enum and the date formats. The description only re-lists the input names without adding syntax, constraints, or defaults beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (counts) and resource (Estonia working/non-working dates) and has a dedicated 'What it computes' clause that defines the counting rule. It is distinguishable from the many count_*_working_days siblings by the explicit Estonia scope, though it never names an alternative sibling to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a positive trigger ('auditable Estonia working-day count... call directly instead of answering from memory') and enumerates clear exclusions (individual shifts, actual hours, opening hours, payroll, legal deadlines, future years). The 'Do not use this when...' sentence itself is garbled and unparseable, so the exclusion condition is muddier than it should be.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_eg_working_daysCount Egypt Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Egypt working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the official nationwide public-holiday layer published for Egyptian government/public-sector scope. Private employers, banks, schools, diplomatic missions, exchanges, local or sector calendars may differ and are not inferred. Friday-Saturday is the ordinary weekend baseline; special remote-work or operating-hour decisions are not treated as holidays. Islamic dates and later Prime Minister decisions require a refreshed package. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Egypt working days around Eid al-Fitr public holiday. | Count Egypt working days around Ordinary Egypt working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-19","end_date":"2026-03-23","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/egypt-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/egypt-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them: it discloses the weekend baseline (Friday-Saturday), the government/public-sector authority scope, exclusions for private employers and special operating-hour decisions, the Islamic-date refresh requirement, and the exact formula. The redundancy of listing output fields and the REST fallback dilutes this slightly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The usage guidance is front-loaded correctly, but the body is bloated with a formula line, a full output-field list that duplicates the output schema, a REST fallback URL, and a docs link. The example user requests include an odd placeholder ('Ordinary Egypt working day') that adds noise rather than clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the return-value enumeration is unnecessary, but the description still supplies the scope, weekend baseline, refresh caveat, and computation semantics an agent needs. It is complete enough to call correctly, though the confusing 'Do not use this when' clause and redundant output list keep it from being fully polished.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and their defaults, which sets the baseline at 3. The description restates the parameter list and provides a full JSON example, adding only marginal value beyond the schema's own examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource -- counting authority-scope working and non-working dates in a range for Egypt -- so an agent can tell it apart from the country-specific siblings. It does not, however, explicitly distinguish itself from the closely related check_eg_working_day or add_eg_working_days, leaving that inference to the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear triggering context ('Use this when you need an auditable Egypt working-day count') and an explicit instruction to compute rather than answer from memory. The 'Do not use this when...' sentence, however, is garbled and reads as a scope caveat rather than a real when-not-to-use rule, so the routing guidance is only partly actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_es_working_daysCount Spain Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Spain working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the remaining national, autonomous-community, Ceuta/Melilla and up to two municipal local holidays require a jurisdiction-specific calendar. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Spain working days around National Day. | Count Spain working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/spain-national-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/spain-national-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world. The description adds genuinely useful context beyond them: the exact scope of holidays covered (national only, not CCAA/municipal), the docs link, and a precise REST fallback endpoint with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with usage guidance, but it bloats the back half: a 17-field output list that duplicates the output schema, a trivial formula, and a REST fallback plus docs link. These earn little space given the output schema already exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema and full annotations, the description covers scope limits, inputs, fallback, and docs, so an agent has what it needs to call it correctly. The only shortfall is not naming the sibling calendar/check tools it should be preferred over.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and the baseline is 3. The description restates the inputs with types and a complete JSON example, adding marginal formatting clarity but no new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and pins the jurisdiction to Spain national scope. It is distinct from the check_es_working_day and add_es_working_days siblings only implicitly, and never names them, so an agent must infer the boundary rather than being routed to them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need an auditable Spain working-day count') and when-not ('when remaining national, autonomous-community, Ceuta/Melilla and up to two municipal local holidays require a jurisdiction-specific calendar'). The alternative is described by condition rather than by sibling name, which is a minor gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_fi_working_daysCount Finland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Finland working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide full-day public-holiday layer only. Midsummer Eve, Christmas Eve, employer, collective-agreement, sector, school, bank, Åland, Sámi and local closures are not inferred; private-sector annual-leave counting may treat Saturdays and certain eves differently. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Finland working days around Independence Day. | Count Finland working days around Midsummer Eve is agreement-dependent. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/finland-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/finland-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly/idempotent/non-destructive/openWorld=false), and the description adds genuine scope boundaries — which closures are not inferred, and the private-sector annual-leave caveat. It even gives the counting formula. The garbled 'Do not use this when nationwide full-day public-holiday layer only' sentence weakens clarity, and no auth/rate-limit context is offered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded well with use/when-not before mechanics, but it is bloated: it re-lists Inputs that the schema already documents, re-lists Outputs that the output schema already covers, and duplicates the example already present in the schema. Multiple labelled sections add length without adding decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not explain return values, yet it additionally supplies the scope definition, the counting formula, excluded-closure caveats, and the REST fallback path. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (all four params documented, with a worked JSON example in the schema itself), so the baseline is 3. The description's Inputs list and JSON example merely restate the schema without adding format, default, or edge-case meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Counts authority-scope working and non-working dates in a range' with a Finland scope, which cleanly separates it from the check_* and add_* siblings. It never explicitly names an alternative tool (e.g. check_fi_working_day or add_fi_working_days), so routing relies on the country token in the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-to-use ('auditable Finland working-day count') and a when-not paragraph enumerating what is not inferred (Midsummer Eve, employer/collective-agreement, sector, school, bank, Åland, Sámi, local closures). It also instructs to call it directly rather than answer from memory. No alternative sibling is named however.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_fr_working_daysCount France Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable France working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when alsace-Moselle, overseas territories, employer, sector, school, bank, exchange and regional calendars are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count France working days around Bastille Day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/france-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/france-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only, idempotent, non-destructive, and closed-world. Beyond that, the description adds auditability, a formula-level explanation, an output field list, a direct REST fallback endpoint, and an explicit warning not to guess another /api path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance and organized into labeled sections, which makes it easy to scan. It is somewhat overlong because it re-lists outputs that are already covered by the output schema and repeats parameter examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-country working-day count, the definition covers when to use it, when not to use it, inputs, outputs, calculation behavior, fallback endpoint, and documentation. Nothing critical for correct invocation appears to be missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The description lists the inputs and includes a full JSON example, but this largely repeats the schema rather than adding new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: counting auditable France working and non-working dates in a range. It clearly distinguishes this France-scoped count from the many add_* and check_* sibling tools by naming the country scope and the calculation action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit positive guidance ('use this when you need an auditable France working-day count') and negative guidance about calendars that are not inferred. It also says to call the tool directly rather than answer from memory or stop at discovery. It does not explicitly name the sibling alternatives, so this is strong but not complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_gh_working_daysCount Ghana Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Ghana working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide statutory/public-holiday layer only. It is not a universal private-employer, bank, exchange, school, local, sector or essential-service calendar. The 2026 package uses observed dates published or cross-checked for 2026; lunar dates and later Executive Instruments may change. It does not treat the pre-Act-1142 4 August Founder’s Day or 2025-era September naming as current law, and it does not infer additional closure days from the legal anchors alone. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Ghana working days around Republic Day observed. | Count Ghana working days around Ordinary Ghana working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-20","end_date":"2026-03-23","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ghana-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ghana-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: it is a pure computation, it reflects the 2026 dataset, it does not infer closures from legal anchors, and it documents a REST fallback and docs URL. Minor deduction because it doesn't discuss rate limits or result determinism across dataset versions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with the use case and scope, which is good, but the 'Example user requests' line and the verbatim formula add filler that doesn't change agent behavior. Still, most sentences earn their place and the structure is navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't enumerate return fields, yet it does list them, and it supplies scope boundaries, dataset versioning, and a REST fallback. For a single tool in a very large sibling set it is nearly complete; it could more explicitly name the check_gh_working_day/add_gh_working_days alternatives to fully route the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters including defaults for include_start_date/include_end_date. The description lists the inputs and repeats a complete JSON example, but that example is already present in the schema's 'examples', so it adds little beyond what structured data provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Counts authority-scope working and non-working dates in a range') for Ghana, and explicitly delimits scope to the nationwide statutory/public-holiday layer, distinguishing it from private-employer, bank, exchange, local and sector calendars. An agent can tell this apart from the many sibling count_*/check_*/add_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('Use this when you need an auditable Ghana working-day count... return its calculation instead of answering from memory') and when-not ('Do not use this when this package covers the nationwide statutory/public-holiday layer only'), plus caveats about lunar dates, later Executive Instruments, and non-inference of extra closure days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_global_public_holiday_working_daysCount Global Public-Holiday Reference Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a source-labelled nationwide public-holiday reference count for a supported country and regional or substitute-day semantics are not required. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the range needs a direct official authority, regional/local or employer calendar, substitute-day rules, or dates outside 2026-2028. What it computes: Counts working and non-working dates in a 2026-2028 range using CLDR weekends plus included nationwide OpenHolidays public events. Example user requests: Count reference working days in France from 2026-05-01 through 2026-05-15. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-05-01","end_date":"2026-05-15","territory":"FR","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], public_holidays_counted, territory, territory_name, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: for each included date: working_days += reference status.is_working_day; non_working_days += not is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2028.
territoryYesISO-style alpha-2 country code supported by the pinned OpenHolidays public-holiday reference snapshot.
start_dateYesFirst date in 2026-2028.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent/non-destructive annotations, it discloses the supported date window (2026-2028), the underlying data sources (CLDR weekends, pinned OpenHolidays snapshot), output provenance fields (dataset_version, source_commit, source_quality), and a direct REST fallback path with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but well-structured with labeled sections (when to use, when not to use, what it computes, example, inputs, outputs, formula, fallback, docs) and front-loaded routing guidance. Slightly bloated by enumerating output fields that are already in the output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the existing output schema and annotations, the description still covers selection criteria, coverage limits, computation formula, provenance, and a fallback invocation path. An agent has everything needed to call it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters, defaults, enum, and examples. The description's 'Inputs:' list and worked JSON example restate the schema rather than adding new semantics, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (count) and resource (working/non-working days using CLDR weekends plus nationwide OpenHolidays public events) and scopes it as a' source-labelled nationwide public-holiday reference count'. It clearly separates itself from siblings such as count_global_reference_working_days and count_global_working_days by naming the source basis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need a source-labelled nationwide public-holiday reference count ... regional or substitute-day semantics are not required') and when-not-to-use ('regional/local or employer calendar, substitute-day rules, or dates outside 2026-2028'), plus an instruction to call it directly rather than answer from memory. Alternatives are effectively routed by the exclusion list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_global_reference_working_daysCount Global Reference Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need a broad national-scope reference count and regional or employer semantics are not required. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the range needs a direct official authority, regional/local or employer calendar, or dates outside 2026-2028. What it computes: Counts working and non-working dates in a 2026-2028 range using OpenWorkdays national-scope public-holiday data and country weekend rules. Example user requests: Count broad-reference working days in Australia from 2026-10-01 through 2026-10-15. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-10-01","end_date":"2026-10-15","territory":"AU","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], public_holidays_counted, territory, territory_name, source_territory_name, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: for each included date: working_days += reference status.is_working_day; non_working_days += not is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2028.
territoryYesISO-style alpha-2 country code supported by the pinned OpenWorkdays reference snapshot.
start_dateYesFirst date in 2026-2028.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description still adds real context beyond them: the data source (OpenWorkdays national-scope snapshot), the 2026-2028 coverage window, the counting formula, and the fact that holiday_estimated/substitute_day_policy fields exist, though it omits rate limits or latency expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with when-to-use and when-not-to-use, then computation, inputs, outputs, formula, and fallback, all clearly sectioned. It is somewhat verbose, restating the inputs and JSON example already present in the schema and enumerating all output fields despite an output schema existing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 5-parameter tool with an output schema, the description covers the selection criteria, range limits, data provenance, formula semantics, and even a REST fallback endpoint with a docs link. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (start_date, end_date, territory, include_start_date, include_end_date) is already documented including format, enum, and defaults. The description restates the inputs and provides a full JSON example, which is convenient but adds little semantic meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Counts working and non-working dates in a 2026-2028 range') and explicitly scopes it to national-scope reference counts. It also distinguishes itself from regional/local or employer-calendar siblings, so an agent can route without opening other schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Contains an explicit 'Use this when...' clause with the selecting condition (broad national-scope reference count, no regional/employer semantics) and a 'Do not use this when...' clause listing exclusions (official authority, regional/employer calendar, out-of-range dates). It even instructs the agent to call directly rather than answer from memory.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_global_working_daysGlobal Working Days Between DatesA
Read-onlyIdempotent
Inspect

Use this when you need a worldwide weekday-based count for a stated territory and public holidays are intentionally outside scope. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the count must reflect public holidays, substitute days, employer closures, bank settlement, exchange, school or religious calendars. What it computes: Counts weekday-baseline working days in a date range for any supported CLDR alpha-2 territory code, with explicit endpoint rules and no hidden holiday assumptions. Example user requests: How many weekday-baseline working days are between 2026-10-01 and 2026-10-15 in AE? | Count Saudi weekday working days from 2026-06-01 through 2026-06-30. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-10-01","end_date":"2026-10-15","territory":"AU","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], territory, territory_display_name, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: for each included date: working_days += not is_weekend; non_working_days += is_weekend Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast Gregorian date.
territoryYesCLDR territory code in alpha-2 form. The complete accepted-code enum is exposed here; it includes ISO-style territory codes plus CLDR regional and legacy codes where present.
start_dateYesFirst Gregorian date.
include_end_dateNoWhether end_date participates in the count.
include_start_dateNoWhether start_date participates in the count.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive behavior, but the description adds meaningful behavioral context beyond them: the weekday-only holiday policy, no hidden holiday assumptions, explicit endpoint rules, the exact counting formula, and a direct REST fallback with a warning not to guess another API path.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well organized and front-loads usage guidance before details, but it is longer than strictly necessary because it repeats output fields despite an existing output schema and includes documentation and REST fallback details. Most sentences still earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is a date-calculation operation with full schema coverage, annotations, and an output schema, the description is complete. It covers scope, exclusions, inputs, formula, fallback access, and where to find docs, so an agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 dates, territory enum, and include flags. The description restates the inputs and gives a complete JSON example, but adds little parameter meaning beyond what the schema provides, apart from loosely implying endpoint inclusion through the formula.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, resource, and scope: counting worldwide weekday-baseline working days between two dates for a territory. It explicitly distinguishes this from holiday-aware siblings by saying public holidays are intentionally outside scope and by defining what is excluded.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives direct when-to-use guidance ('Use this when you need a worldwide weekday-based count...') and explicit when-not-to-use conditions ('Do not use this when the count must reflect public holidays...'). It also instructs the agent to call it directly rather than answering from memory, leaving little ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_gr_working_daysCount Greece Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Greece working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide compulsory public-holiday layer over a Saturday-Sunday baseline. 28 October is included as published in the 2026 Ministry schedule; Gov.gr notes that optional-holiday and employer discretion can apply under the underlying legal framework. Clean Monday, Good Friday and Holy Spirit Monday are not generalized as compulsory closures. Regional, municipal, school, bank, exchange, employer, collective-agreement and sector schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Greece working days around Greece Easter Monday. | Count Greece working days around Greece ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-10","end_date":"2026-04-14","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/greece-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/greece-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, and the description still adds real value: the exact holiday layers counted vs. not inferred (regional, municipal, bank, exchange, employer agreements), the substitute-day policy, the 28 October note, a change-detection formula, and an explicit REST fallback path. It stops short of stating rate limits or range-size constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Sectioned and mostly front-loaded, but padded: the Outputs enumeration duplicates fields already in the output schema, the Formula line restates the obvious, and the malformed 'Do not use this when...' sentence costs clarity without earning its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations carrying the safety profile and an output schema covering return fields, the description need not explain results; it does cover scope limits, examples, and a fallback endpoint. The one gap is the effective calendar window (the schema hints 2026-2026) not being restated in prose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (including the optional include_start_date/include_end_date) are already documented, and the description largely repeats them ('Inputs: start_date (date); end_date (date)...'). The complete JSON argument example is a marginal addition over the schema's own examples, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource for a specific authority scope ('Counts authority-scope working and non-working dates in a range') and the country is explicit in the name/title. It is clearly distinguishable from the sibling check_gr_working_day (single-date test) and add_gr_working_days (arithmetic shift), and it even includes worked example requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with when to use it ('auditable Greece working-day count') and explicitly instructs to call the tool directly rather than answer from memory. It also attempts a when-not-to-use clause, but that sentence is garbled ('Do not use this when this package covers the nationwide compulsory public-holiday layer...') and never names the sibling tools it competes with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_hk_working_daysCount 中国香港特别行政区 Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable 中国香港特别行政区 working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package is the Hong Kong general/public-holiday calendar. Statutory employee holidays, employer rest days, school calendars, bank/exchange closures and private-sector arrangements are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count 中国香港特别行政区 working days around 2027 Lunar New Year substitute. | Count 中国香港特别行政区 working days around 2026 Ching Ming substitution. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-02-06","end_date":"2027-02-10","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hong-kong-general-holidays-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hong-kong-general-holidays-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely new behavioral context: the exact calendar policy scope and what is explicitly NOT modeled, the enumerated return fields (calendar_scope, holiday_policy, substitute_day_policy, dataset_version, sources) and the REST fallback path. This is substantive disclosure beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the decision rule and exclusion, then clearly labeled sections (What it computes / Inputs / Outputs / Formula / Fallback / Docs), which is easy to scan. It is somewhat over-stuffed: the Formula line, the Inputs list and the complete JSON example all duplicate information already present in the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description still names the key return fields and, more importantly, covers calendar-policy boundaries, a worked argument example, a REST fallback endpoint and a docs link. An agent has everything needed to select and invoke this tool without guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already carries per-parameter descriptions, defaults and examples, so the baseline is 3. The description's 'Inputs:' enumeration and JSON example largely restate the schema rather than adding syntax, format or edge-case meaning (e.g. what happens if include_start_date is false and start_date is a holiday).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Counts authority-scope working and non-working dates in a range' for the 中国香港特别行政区 general/public-holiday calendar. This clearly separates it from sibling count_* tools for other territories and from check_hk_working_day (single-date) and add_hk_working_days (date arithmetic).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use this when you need an auditable ... working-day count', 'Call this tool directly ... instead of answering the formula from memory') and when-not-to-use (statutory employee holidays, employer rest days, school calendars, bank/exchange closures are not inferred). No sibling tool offers this level of routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_hr_working_daysCount Croatia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Croatia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline. Article 2 memorial days do not add rest. Article 3 religious rights depend on the person and, for specified festivals, the chosen day; they are not included in a universal union. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, payroll, legal deadlines and future years are not computed. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; memorials and person-specific religious rights are not general rest. Example user requests: Count Croatia working days around Good Friday is not a general statutory holiday. | Count Croatia working days around Corpus Christi. | Count Croatia working days around Independence memorial is not a rest holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-04-03","end_date":"2026-04-07","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_commemorative_day, religious_rest_scope, payroll_scope. Formula: planning_workday = weekday AND no article_1_statutory_holiday Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/croatia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/croatia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual statutory roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent/non-destructive safety, but the description adds real behavioral context beyond them: the exact planning_workday formula, that memorial days and person-specific religious rights are not general rest, and a named REST fallback endpoint to avoid guessing paths. The garbled sentences weaken but do not contradict this.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It has recognizable section labels (use case, exclusions, What it computes, Inputs, Outputs, Formula, fallback, docs) and front-loads the use case. But it is bloated and repetitive ('memorials and person-specific religious rights are not general rest' appears twice) and the three 'Example user requests' are unparseable fragments that add noise rather than value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description needn't explain return values, yet it still lists output fields, gives a complete JSON argument example, states the formula, and provides a REST fallback and docs link. For a 5-param, 3-required read-only calculator this is largely complete; only the broken negation keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description largely restates the same fields (start_date, end_date, include_* flags, work_schedule) already documented in the schema, including the work_schedule 'explicit Monday-Friday planning baseline' wording that duplicates the schema description. No extra syntax or constraint meaning is added, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('auditable Croatia working-day count') and says plainly 'Counts authority-scope working and non-working dates in a range.' The country qualifier distinguishes it from the many sibling country count tools, though it never explicitly contrasts with count_hr_working_days' own family vs. 'add_*'/'check_*' variants.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It opens with a clear when-to-use ('Use this when you need an auditable Croatia working-day count') and lists concrete exclusions (payroll, legal deadlines, future years, individual shifts). However, the key negative guidance is garbled and unparseable ('Do not use this when croatia 2026 article 1 general holidays over an explicitly selected Monday-Friday planning baseline'), so the primary when-not condition is effectively lost.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_hu_working_daysCount Hungary Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Hungary working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when hungary 2026 general Monday-Friday work schedule only (Labour Code section 97(2), NGM 10/2025). Requires explicit work_schedule. Eleven statutory holidays and three paired transfers are included; three Saturdays are working. No shift, personal, bank, exchange, school, local-office opening or payroll schedule is inferred. No automatic substitute Monday. The annual decree expires 2027-01-01; later schedules require new evidence. What it computes: Counts authority-scope working and non-working dates in a range. Requires an explicit general Monday-Friday work schedule; includes three working Saturdays and paired rest dates. Example user requests: Count Hungary working days around Working Saturday compensates August 21. | Count Hungary working days around Christmas Eve is transferred rest, not statutory holiday. | Count Hungary working days around Whit Monday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-08-07","end_date":"2026-08-10","work_schedule":"general_monday_friday"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_transferred_rest_day, is_makeup_working_day, transfer_pair, payroll_scope. Formula: working = published makeup day OR (weekday AND not statutory holiday AND not transferred rest) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hungary-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/hungary-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired: confirm the general Monday-Friday work schedule under Labour Code 97(2). Do not use for shifts or institution-specific opening.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations covering read-only, idempotent, closed-world, and non-destructive behavior, the description still adds substantial operational context: statutory holidays, paired transfers, three working Saturdays, no automatic substitute Monday, decree expiry in 2027, and the exact formula. It also discloses that an explicit work_schedule is required and that other schedule types are not inferred. This goes well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the primary use case and structured with headings, but it is quite long and repeats requirements such as the explicit work_schedule across multiple sections. It also enumerates many output fields even though an output schema exists, and includes formula, REST fallback, and docs links that are useful but not tightly scoped. The content is organized, but not concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 5-parameter tool with an output schema, annotations, and many siblings, the description provides enough context to invoke it correctly: required inputs, an argument example, scope limitations, formula behavior, and fallback information. The output schema means return-value details need not be explained further, and the description still lists output fields for transparency. Nothing essential for correct invocation appears missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters and the work_schedule enum. The description lists the inputs and provides a complete JSON example, but adds little parameter meaning beyond what the schema already provides. The baseline of 3 is appropriate when structured fields carry the parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: counting Hungary working days, with scope limited to authority-scope general Monday-Friday schedules. It also distinguishes the tool from memory-based answers and from schedules covering shifts or institution-specific openings. An agent can identify this as the Hungary count tool among many country-specific count_* siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear use condition: 'Use this when you need an auditable Hungary working-day count,' and instructs the agent to call the tool directly instead of relying on memory. It also provides exclusions such as no shift, personal, bank, exchange, school, local-office, or payroll schedules. However, it does not explicitly name sibling alternatives like check_hu_working_day or add_hu_working_days, so routing guidance is strong but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_id_working_daysCount Indonesia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Indonesia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when cuti bersama is facultative for private employers and may be governed by each employer; ASN-specific implementation and local, sector, religious-optional and employer schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Indonesia working days around National holiday. | Count Indonesia working days around Joint leave is separately labelled. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/indonesia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/indonesia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: the non-inference limits for ASN/local/sector/employee schedules, the deterministic per-date formula, an explicit REST fallback endpoint, and an auditable dataset_version/sources framing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Content is front-loaded and sectioned, but the 'Inputs', full JSON argument example, and the complete 'Outputs' field list largely duplicate the input schema, its example, and the output schema. Several lines do not add value beyond structured fields, so it is longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With rich annotations and an output schema present, the description need not explain returns, yet it already covers scope, exclusions, formula, and fallback path. It is complete enough to invoke correctly, with the only gap being explicit disambiguation from the add_/check_ Indonesia siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents types, defaults, and inclusion semantics for all four parameters. The description's 'Inputs:' line and JSON example merely restate the schema, adding no format or edge-case meaning beyond it, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource with scope: 'Counts authority-scope working and non-working dates in a range,' and the JSON argument example pins down the input shape. Indonesia specificity plus 'authority-scope' distinguishes it from the wider country family, though it never explicitly contrasts with the adjacent add_id_working_days or check_id_working_day siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when ('an auditable Indonesia working-day count') and a detailed when-not covering cuti bersama that is facultative for private employers and ASN-specific/local/sector/religious-optional schedules. No alternative tool is named for the excluded cases, so routing is clear on scope but not on the sibling to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_india_central_working_daysCount India Central Government Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable 2026 central-government count and can specify the office scope. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a state/UT, bank, employer, school, exchange or exact outside-Delhi local optional calendar. What it computes: Counts 2026 central-government baseline working and non-working dates while preserving Gazetted and Restricted event classes. Example user requests: Count Delhi central-government working days from 2026-10-01 to 2026-10-31. Inputs: start_date (date); end_date (date); office_scope (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-10-01","end_date":"2026-10-31","office_scope":"delhi_new_delhi","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, calendar_days_counted, gazetted_holidays_counted, restricted_holidays_available, territory, territory_name, office_scope, office_scope_name, is_guaranteed_non_working_day, day_type, restricted_holiday_available, calendar_scope, rest_day_policy, restricted_holiday_policy, selection_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += selected status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/india-central-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/india-central-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026.
start_dateYesFirst date in 2026.
office_scopeYesRequired scope: delhi_new_delhi or outside_delhi. State/UT holiday calendars are not represented by this package.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint false, destructiveHint false), but the description adds substantial behavioral context: it explains what is computed, the classes preserved (Gazetted vs. Restricted), the exact formula, the REST fallback endpoint, and documentation. This is well beyond what the structured annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded and structured with headings, which helps scanning. But it is overlong for the task: the 'Inputs' list duplicates the schema, and the long 'Outputs' list duplicates the rich output schema, so several lines do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a date-range counting tool with rich schema, annotations, and output schema, the description is complete enough for an agent to invoke it correctly. It covers purpose, scope exclusions, required and optional inputs, examples, computation behavior, and fallback mechanics.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents start_date, end_date, office_scope, and the two include flags. The description repeats the inputs and provides a complete JSON example, but that example largely duplicates the schema's own examples and adds no new syntax or constraint detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it counts 2026 central-government working and non-working dates while preserving Gazetted and Restricted event classes. It also excludes related but different calendars, so an agent can distinguish it from the many sibling count_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance ('auditable 2026 central-government count' with office scope) and explicit when-not-to-use guidance ('state/UT, bank, employer, school, exchange, or exact outside-Delhi local optional calendar'). However, it does not name specific sibling alternatives such as check_india_central_working_day for single-date checks or add_india_central_working_days for date arithmetic.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ireland_working_daysCount Ireland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Ireland national working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need employer, school, bank, sector or individually selected benefit schedules. What it computes: Counts national working and non-working dates in an Ireland 2026-2027 range. Example user requests: Count Ireland working days from 2027-01-29 to 2027-02-03. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-01-29","end_date":"2027-02-03","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, holiday_names, calendar_scope, good_friday_policy, weekend_holiday_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += Ireland status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ireland-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/ireland-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world. The description adds real behavioral context beyond them: the supported 2026-2027 range, the auditable formula, the exact REST fallback path with a warning not to guess other /api/* routes, and a docs link. It omits only finer traits like rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (when-to-use, when-not, computes, inputs, outputs, formula, fallback, docs) make it skimmable and it is front-loaded with the routing decision. It runs long and repeats what the output schema already enumerates, but almost every line carries actionable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers everything needed to call it correctly: range limits, argument shape, strict additionalProperties:false inputs, fallback endpoint, and provenance fields. With an output schema present, the brief output listing is harmless redundancy rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter already carries a description and default, so the schema does the heavy lifting. The description restates the inputs with optionality and supplies a complete JSON argument example, which is modest incremental value rather than new semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('counts national working and non-working dates'), a precise resource (Ireland, 2026-2027 range), and scope (national calendar). It is instantly separable from the many siblings: 'add_*' accumulates, 'check_*' tests a single day, 'count_ireland' totals a range.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('auditable Ireland national working-day count'), explicit when-not ('employer, school, bank, sector or individually selected benefit schedules'), and an operational instruction to call it directly rather than answering from memory or stopping at discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_it_working_daysCount Italy Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Italy working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when regional, municipal, local patron-saint, school, bank, sector, collective-agreement and employer-specific schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Italy working days around Republic Day. | Count Italy working days around Easter Monday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/italy-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/italy-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description goes beyond them by disclosing the computation formula, the output field set, an exact REST fallback endpoint, and a documentation link — useful operational context for a calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the usage condition, then moves through inputs, example payload, outputs, formula and fallback in labeled chunks, which makes it skimmable. The single-line formula and the REST/docs block are marginally redundant given the schema and output schema, but nothing is padded to the point of noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a scoped date-count calculator with a full output schema present, everything an agent needs is covered: when to call it, what it computes, the exact argument shape, the returned fields, and a deterministic HTTP fallback if the tool call fails. No material gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already carries a description and default, so the baseline is 3. The description adds a complete, copy-ready JSON argument example using all four fields, which clarifies how include_start_date/include_end_date interact with the required date range beyond what the schema spells out.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Counts authority-scope working and non-working dates in a range' — and names Italy both in the title and via the tool name. It does not, however, explicitly differentiate itself from the many adjacent siblings (count_de_working_days, check_it_working_day, add_it_working_days), leaving the agent to infer the count/check/add distinction from naming alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear positive guidance ('Use this when you need an auditable Italy working-day count... instead of answering the formula from memory') and an explicit when-not clause about non-inferred regional, municipal, school, bank and employer-specific schedules. The negative clause is awkwardly worded and never names a concrete alternative tool, so routing among siblings still requires inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_japan_national_working_daysCount Japan National Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Japan statutory national-holiday working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a company, school, bank, exchange or prefectural closure calendar. What it computes: Counts Japan statutory-baseline working and non-working dates for a pinned year range. Example user requests: Count Japan working days from 2027-03-01 to 2027-03-31. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-03-01","end_date":"2027-03-31","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, national_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_legal_bases, weekend_days, calendar_scope, rest_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += Japan national status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/japan-national-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/japan-national-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds meaningful context beyond that: the statutory-baseline scope limitation, the pinned year range, the enumerated return fields (calendar_scope, rest_day_policy, dataset_version), the computation formula, and a REST fallback endpoint. Minor gap: it does not state error handling for out-of-range dates.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: usage, exclusions, computation, example, inputs, and fallback in a scannable order. Slight over-length comes from enumerating the full output field list, which duplicates the existing output schema and does not fully earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema already exists, the description need not explain return values, yet it still covers usage boundaries, inputs, a worked example, a REST fallback and docs links. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters, their types, defaults and optionality. The description restates inputs and provides a complete JSON example but adds no semantic detail beyond what the schema supplies. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (count Japan statutory national-holiday working days) with an explicit scope qualifier ('statutory-baseline', 'pinned year range') that separates it from the dozens of sibling count_*_working_days tools. An agent can identify exactly what this does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need an auditable Japan statutory national-holiday working-day count') and when-not ('company, school, bank, exchange or prefectural closure calendar'). It also instructs the agent to prefer this over answering from memory or stopping at discovery, which is unusually strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ke_working_daysCount Kenya Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Kenya working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide public-holiday layer only. It is not a universal private-employer, bank, school, county, sector, diplomatic or shift-work calendar. The Saturday-Sunday baseline is a calculation convention for ordinary weekday work, not a claim that every employer uses the same roster. Idd-ul-Fitr and Idd-ul-Adha are pinned to the 2026 Gazette declarations; future lunar dates and later special notices require a refreshed package. The Act's Sunday substitution rule is preserved and no Saturday-to-Monday substitution is inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Kenya working days around Idd-ul-Fitr public holiday. | Count Kenya working days around Ordinary Kenya working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-03","end_date":"2026-04-06","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kenya-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kenya-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description does add genuine behavioral context beyond that: the Saturday-Sunday baseline convention, the Act's Sunday substitution rule being preserved with no Saturday-to-Monday substitution inferred, and the Idd-ul-Fitr/Idd-ul-Adha dates being pinned to the 2026 Gazette (so future lunar dates need a refreshed package). However, that content is embedded in a wall of caveats and partly restates the output field list, so it lands at a solid 3 rather than higher.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

This is a long description, but nearly every sentence carries a distinct obligation: when to use, when not to use, the roster convention, the gazette pinning caveat, the substitution rule, the computed output, an example, inputs, a JSON sample, output fields, the formula, and the REST fallback. It is front-loaded with the routing decision and structured with clear labelled sections.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 4-parameter date-range calculator with a fully described schema and an output schema, the description supplies everything an agent needs: the calculation convention, jurisdiction caveats, lunar-date limitations, an input example, the formula and a REST fallback URL with a warning not to guess other paths.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter carries its own description plus examples, so the schema does the heavy lifting. The description's 'Inputs:' line and complete JSON example mostly restate what the schema already shows, adding no syntax or edge-case detail beyond it. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and frames the tool as a Kenya-specific working-day counter, which separates it from the check_/add_ siblings. It does not explicitly contrast itself with check_ke_working_day or add_ke_working_days, leaving sibling differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit direction to 'Call this tool directly and return its calculation instead of answering the formula from memory,' followed by a clear 'Do not use this when...' clause scoping out private-employer, bank, school, county, sector, diplomatic and shift-work calendars. Both the when and the when-not are spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_kr_working_daysCount South Korea Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable South Korea working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the package covers the 2026 statutory/public-office schedule only; private-employer, school, bank, exchange, local-government and 2027 schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count South Korea working days around New Labor Day public holiday. | Count South Korea working days around Published substitute holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-korea-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-korea-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe, idempotent, closed-world read, and the description adds substantial context beyond that: the exact calendar scope (2026 statutory/public-office only), what is not inferred, the counting formula, the full output field set including substitute_day_policy and dataset_version, and a specific REST fallback endpoint with a warning not to guess other paths. This is genuinely additive behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with labeled sections (usage, when-not, what it computes, inputs, outputs, formula, REST fallback, docs) and front-loads the use case. Listing all the output fields is slightly redundant given a declared output schema, but nearly every line carries usable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 4-parameter tool with 100% schema coverage, full annotations, and a declared output schema, the description supplies everything an agent needs: usage conditions, exclusions, input example, calculation formula, and a fallback endpoint plus docs link. Nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 restates the parameter names with types and optionality and gives a complete JSON example, but adds no format or edge-case semantics beyond what the schema already documents (e.g. nothing about inclusive-range defaults or validation errors).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: 'Counts authority-scope working and non-working dates in a range', plus a concrete label ('auditable South Korea working-day count'). It is clear what the tool does, but it never names the sibling alternatives (check_kr_working_day for single dates, add_kr_working_days for date shifting), so it does not explicitly differentiate itself from the surrounding family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides an explicit when-to-use ('when you need an auditable South Korea working-day count') and an explicit when-not-to-use (the package covers only the 2026 statutory/public-office schedule; private-employer, school, bank, exchange, local-government and 2027 schedules are not inferred). It also instructs the agent to call it directly rather than answering from memory. It stops short of routing to any named alternative tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_kz_working_daysCount Kazakhstan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Kazakhstan working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide published 2026 five-day schedule over a Saturday-Sunday baseline. Six-day, shift, continuous-operation, employer, bank, school, local and sector calendars are not inferred. Qurban Ait is represented by the published 2026 first-day date. Adilet's current text records Constitution Day on 15 March with an amendment effective 2026-07-01, while the published 2026 government calendar does not add a March 15/16 closure; this package follows the published 2026 calendar and future-year packages must refresh the legal transition. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Kazakhstan working days around Nauryz transfer day. | Count Kazakhstan working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-21","end_date":"2026-03-25","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kazakhstan-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/kazakhstan-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them by disclosing exact calendar basis, Qurban Ait treatment, the Constitution Day legal-transition caveat, the formula, a REST fallback endpoint, and the returned field list. This is unusually rich behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with a clear 'Use this / Do not use this' framing and labeled sections (What it computes, Example, Inputs, Outputs, Formula, REST, Docs). The scope-caveat sentence about Constitution Day is dense and long, but it earns its place by preventing misuse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values are already structured, yet the description still enumerates the notable fields and adds the fallback endpoint and docs URL. Together with the scope exclusions, an agent has everything needed to call this correctly and interpret limits.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each of the four parameters is documented in the schema with defaults and examples, so the schema does the heavy lifting. The description restates the input list and repeats the JSON example already present in the schema, adding little beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Counts authority-scope working and non-working dates in a range' for Kazakhstan, and names the dataset scope (nationwide 2026 five-day Sat-Sun baseline). It implies the range-count distinction versus the single-day sibling check_kz_working_day, but never names or explicitly rules out add_kz_working_days, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Use this when you need an auditable Kazakhstan working-day count... return its calculation instead of answering the formula from memory') and a detailed negative scope list (six-day, shift, continuous-operation, employer, bank, school, local, sector calendars not inferred). It stops short of naming a specific alternative tool for those excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_lk_working_daysCount Sri Lanka Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Sri Lanka working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a combined official holiday-class calendar, not a universal private-employer closure rule. Public, bank and mercantile classifications remain in each event kind; the March 18, March 25 and April 1 fuel-conservation entries apply to government offices only and the schedule was cancelled effective April 8. Essential services, schools, private employers, sector agreements, local arrangements and later unlisted notices are not inferred. The additional day after the National Vesak Festival is not invented beyond the published May 2 calendar entry. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Sri Lanka working days around Poya holiday. | Count Sri Lanka working days around Temporary government-office Wednesday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-13","end_date":"2026-04-14","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sri-lanka-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sri-lanka-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive, closed-world), the description discloses substantial behavioral context: authority scope is not a universal private-employer rule, specific fuel-conservation entries apply to government offices only, the schedule was cancelled April 8, and unlisted notices are not inferred. This is exactly the kind of scope-boundary disclosure that annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Uses labeled sections (Inputs, Outputs, Formula, REST fallback, Docs) which aids scanning, but the raw formula line 'working_days += status.is_working_day' and the REST fallback URL are largely redundant for an MCP invocation, and the scope paragraph is dense and hard to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the return fields need not be restated, yet the description re-lists output keys—mild waste but not harmful. The scope, exclusions, inputs, and an example are all covered, making it adequately complete for a 4-parameter counter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3. The description adds a complete JSON argument example that shows how the optional include_start_date/include_end_date flags combine with the required dates, providing modest extra value beyond the per-field schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource—counts authority-scope working and non-working dates in a range for Sri Lanka—and the 'Counts ... in a range' phrasing implicitly separates it from the single-date check_lk_working_day and the add_lk_working_days siblings, which are named in the tool list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use it ('auditable Sri Lanka working-day count', call directly rather than answering from memory) and provides a 'Do not use this when' clause covering scope exclusions. The exclusion sentence is grammatically mangled and reads as scope caveats rather than sibling alternatives, so it stops short of a clean 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_lt_working_daysCount Lithuania Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Lithuania working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when lithuania 2026 Labour Code holiday facts with explicit mon_fri_planning or mon_sat_planning. Sixteen full-day statutory holidays; pre-holiday one-hour rules do not create additional rest. No weekend substitution or bridge is inferred. Required work_schedule selects a planning calendar, not a universal personal roster. Actual hours, pay, shifts, local/employer/sector/school/bank schedules, religious personal leave, legal deadlines and future years are not computed. What it computes: Counts working/rest dates in the explicitly selected Lithuania 2026 five-day or six-day planning workweek. Sixteen statutory holidays; conditional one-hour eve markers never add full-day rest. Example user requests: Count Lithuania working days around Restoration of the State is a statutory holiday. | Count Lithuania working days around August 14 shortening is not full-day rest. | Count Lithuania working days around Good Friday is not an Article 123 rest day. | Count Lithuania working days around Easter eve depends on selected workweek. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-12-31","work_schedule":"mon_fri_planning"} | {"start_date":"2026-01-01","end_date":"2026-12-31","work_schedule":"mon_sat_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_holiday, is_preholiday_rule_date, is_shortened_workday, statutory_shortening_hours, shortening_scope, working_hours_scope, personal_roster_scope, payroll_scope, shortened_work_dates_counted, shortened_work_date_count. Formula: planning_workday = day in selected workweek AND no statutory_holiday_rest; shortened work dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lithuania-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/lithuania-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired mon_fri_planning or mon_sat_planning. Choose the intended baseline explicitly; no universal or personal roster inferred.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly/idempotent/non-destructive/openWorld=false), yet the description adds real behavioral context: no weekend substitution or bridge is inferred, work_schedule selects a planning calendar rather than a personal roster, and hours/pay/shifts/local schedules/future years are explicitly not computed. This is exactly the beyond-annotation disclosure the dimension rewards.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Usage is front-loaded, which is good, but the description also enumerates a long outputs field list that duplicates the existing output schema and appends a formula and REST fallback that could be trimmed. Much of it earns its place, but several clauses are redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only calculation tool with a full output schema and rich annotations, the description is complete enough: it defines scope, policy exclusions, and the enum's meaning. Since an output schema exists, the elaborate output enumeration is unnecessary rather than harmful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters, and the baseline is 3. The description echoes the param list and clarifies that work_schedule selects a planning calendar, which is mildly additive but mostly restates structured data.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Counts working/rest dates in the explicitly selected Lithuania 2026 five-day or six-day planning workweek') and scopes it to a country and year, so it is easily distinguishable from the many sibling count_XX_working_days tools. The explicit example requests reinforce what is being computed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need an auditable Lithuania working-day count' plus 'Call this tool directly... instead of answering the formula from memory or stopping at discovery' gives clear usage context. The 'Do not use this when...' clause is grammatical nonsense and does not name a real alternative, so the exclusion guidance is weak, but the positive routing is solid.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_lu_working_daysCount Luxembourg Working DaysB
Read-onlyIdempotent
Inspect

Use this when you need an auditable Luxembourg working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when luxembourg 2026-2028 statutory holiday dates over an explicitly selected Monday-Friday planning baseline, BEFORE individual annual or compensatory leave. A holiday on a normally non-worked day may produce compensatory leave depending on the employee's schedule, hours and applicable rules; no compensation date or next-Monday closure is assigned here. Bank-only Good Friday/Christmas Eve afternoon, customary or collectively agreed holidays, school/local/employer/shift schedules, hours, payroll, personal entitlements and legal deadlines are not computed. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; personal compensatory leave and bank-only closures are not computed. Example user requests: Count Luxembourg working days around Europe Day is statutory rest. | Count Luxembourg working days around No uniform Monday compensation date. | Count Luxembourg working days around Bank-only Good Friday is not general statutory rest. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-05-08","end_date":"2026-05-11","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_statutory_non_working_day, holiday_on_baseline_weekend, compensatory_leave_scope, compensatory_date_policy, personal_roster_scope, payroll_scope, weekend_holiday_dates_counted, weekend_holiday_date_count. Formula: planning_workday = weekday AND no statutory_holiday_rest; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/luxembourg-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/luxembourg-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2028.
start_dateYesFirst date in 2026-2028.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not a personal roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/short-of-open-world, so the bar is lower, yet the description adds substantial scope disclosure: no compensatory dates, no bank-only Good Friday/Christmas Eve, no personal roster, payroll, or legal-deadline computation, plus a formula and dataset scope. The exclusion list is the most valuable content here, though the garbled fragments weaken it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is bloated and disorganized: it enumerates 24 output fields already covered by the output schema, embeds a REST fallback and docs URL, and contains malformed fragments such as 'Count Luxembourg working days around Europe Day is statutory rest.' Front-loading is decent, but much of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the return-value enumeration is unnecessary, and the description covers computation scope and caveats reasonably well. The main gap is that the count-vs-check-vs-add distinction among Luxembourg siblings is left to inference, and the broken exclusion sentence leaves the usage boundary incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all five parameters. The description restates the inputs and emphasizes that mon_fri_planning is 'required explicit,' but adds no syntax or format detail beyond the schema, which sets the baseline at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'auditable Luxembourg working-day count,' and 'What it computes: Counts authority-scope working and non-working dates in a range.' It is clearly a count-in-range tool, distinct from a single-day check, though it never names sibling tools like check_lu_working_day or add_lu_working_days explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It attempts explicit routing with 'Use this when...' and 'Call this tool directly... instead of answering from memory or stopping at discovery,' which is genuinely useful. However, the 'Do not use this when...' sentence is garbled into an incoherent fragment ('Do not use this when luxembourg 2026-2028 statutory holiday dates over an explicitly selected Monday-Friday planning baseline'), so the exclusion guidance fails to communicate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_lv_working_daysCount Latvia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Latvia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when latvia 2026 only. Explicit calendar_basis and work_schedule=mon_fri_planning are required. The transfer basis applies Cabinet Order 330 only when the organization is covered or has adopted it; no private employer adoption is inferred. Section 2 observances do not add rest. Shortening is conditional, not full-day rest. Six-day/shift/personal rosters, other religious calendars, bank/exchange/school opening, payroll, actual hours and legal deadlines are not computed. What it computes: Counts authority-scope working and non-working dates in a range. Explicit transfer basis and mon_fri_planning required. Separate statutory rest, non-rest observances, transferred work/rest and conditional shortening. Example user requests: Count Latvia working days around Mother's Day is statutory even on Sunday. | Count Latvia working days around January 2 depends on explicit transfer basis. | Count Latvia working days around June 27 depends on explicit transfer basis. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-12-31","calendar_basis":"statutory_holidays_only","work_schedule":"mon_fri_planning"} | {"start_date":"2026-01-01","end_date":"2026-12-31","calendar_basis":"cabinet_order_330_transfers","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, is_non_rest_observance, is_transferred_rest_day, is_transferred_working_day, is_shortened_workday, statutory_shortening_hours, shortening_scope, payroll_scope, personal_roster_scope, working_hours_scope, additional_religious_holidays_scope, shortened_work_dates_counted, shortened_work_date_count. Formula: planning_workday = explicit transferred working date OR (weekday AND no statutory/selected transferred rest); shortened dates count once Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/latvia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/latvia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday baseline before any selected Order 330 transfers; not a universal or individual roster.
calendar_basisYesRequired statutory_holidays_only or cabinet_order_330_transfers. Choose the latter only for a covered institution or an employer adopting the order; never infer adoption.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description goes further with substantive behavioral rules – no private-employer adoption is inferred for Cabinet Order 330, Section 2 observances add no rest, shortening is conditional rather than full-day, and it warns against guessing another /api/* path. These are genuine additions beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening usage rules are front-loaded and useful, but the text is unusually dense and repetitive – the requirement for explicit calendar_basis/work_schedule is stated three separate times, and the outputs list is dumped verbatim despite an output schema existing. Information value is high but wording is bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex, policy-heavy calculator it supplies the required context: inputs, enumerations, a formula, REST fallback endpoint, and docs link, and an output schema exists so return values need not be explained. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 every parameter, including the calendar_basis and work_schedule enums and their selection conditions. The description largely restates those same requirements rather than adding new syntax or format meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (count Latvia working days) and clarifies the authoritative scope: 'Counts authority-scope working and non-working dates in a range,' explicitly required calendar_basis and work_schedule, and what it will not cover (six-day rosters, other religious calendars, payroll). It is clearly distinguishable from the country-agnostic siblings, though it never names its closest relatives (e.g. check_lv_working_day, add_lv_working_days) to sharpen the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit 'Use this when...' and 'Do not use this when...' framing, mandates calendar_basis and work_schedule=mon_fri_planning, and enumerates excluded cases (six-day/shift rosters, bank/exchange openings, legal deadlines). What it lacks is direct routing to sibling alternatives rather than a generic 'do not use' list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_mt_working_daysCount Malta Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Malta working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when malta 2026 named statutory holidays and Sunday public-holiday status over an explicitly selected Monday-Friday planning baseline BEFORE individual annual or compensatory leave. Additional vacation entitlement for a named holiday on a weekly rest day depends on the person's employment and roster; no next-Monday or later leave date is assigned. Bank-only, school, local, employer and shift calendars, hours, payroll, personal entitlements and legal deadlines are not computed. Future years require a separately verified package. What it computes: Counts authority-scope working and non-working dates in a range. Required mon_fri_planning; named holidays and Sunday statutory status remain distinct. Personal leave and bank-only dates are not computed. Example user requests: Count Malta working days around Good Friday is scheduled public rest. | Count Malta working days around Ordinary Sunday is public holiday, not a named holiday. | Count Malta working days around No invented Monday compensation. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-06-05","end_date":"2026-06-08","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_public_holiday, is_named_statutory_holiday, is_national_holiday, is_other_scheduled_public_holiday, is_sunday_public_holiday, holiday_on_baseline_weekend, sunday_legal_basis, compensatory_leave_scope, personal_roster_scope, payroll_scope, compensatory_date_policy, public_holiday_dates_counted, public_holiday_date_count, weekend_holiday_dates_counted, weekend_holiday_date_count. Formula: planning_workday = Monday_to_Friday AND no named statutory holiday; individual leave is not deducted Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malta-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malta-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline BEFORE individual annual/compensatory leave; not personal attendance.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, idempotent, non-destructive and closed-world, so the bar is lower, but the description still adds meaningful behavioral context: what is explicitly NOT computed (bank-only, school, local, employer and shift calendars, hours, payroll, personal entitlements, legal deadlines), that future years need a separately verified package, the exact planning formula, and a REST fallback endpoint. That is well beyond what the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with purpose, but the body is bloated and partly broken: the 'Example user requests' block reads as mangled fragments ('Count Malta working days around No invented Monday compensation'), and the exhaustive Outputs list is wasted text given an output schema already exists. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-territory count tool with an output schema, the description gives enough for correct invocation: required work_schedule enum, the planning formula, the scope exclusions and the REST fallback. Deductions only for the redundant output enumeration and the confusing fragments rather than for any missing decision-critical information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters, making 3 the baseline. The description restates the input list and provides one complete JSON argument example, and its work_schedule phrasing ('planning baseline BEFORE individual annual/compensatory leave; not personal attendance') largely duplicates the schema's own description, so little net meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and is unambiguously scoped to Malta, which is what separates it from the ~60 sibling count_*_working_days tools. It falls short of 5 because the scoping is achieved mostly by the territory word rather than a crisp one-line statement of what distinguishes it, and the surrounding sentences are tangled.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an explicit 'Use this when you need an auditable Malta working-day count' and a 'Call directly... instead of answering from memory' directive, which gives real usage context. However, the 'Do not use this when...' sentence is a garbled fragment that never names an alternative tool or a clean exclusion condition, so the when-not guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_mx_working_daysCount Mexico Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Mexico working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when article 69 weekly rest is at least one day after six days and the employer/worker schedule is not inferred; sector, state, employer, school and bank calendars are outside scope. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Mexico working days around Constitution Day observed. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/mexico-labor-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/mexico-labor-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds meaningful context beyond that: output fields, formula behavior, REST fallback, documentation link, and scope exclusions. No annotation contradiction is present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage conditions and structured into labeled sections, which helps scanning. However, it is overlong and redundantly enumerates output fields and formula details already covered by the output schema, so not every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, annotations, and 100% input schema coverage, the description is more than complete. It covers purpose, usage, exclusions, inputs, outputs, fallback endpoint, and documentation, leaving no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 start_date, end_date, and the two include booleans. The description lists the same parameters and gives a complete JSON example but adds no new semantic detail or usage nuance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: counting Mexico working and non-working dates in a range. It also distinguishes scope from discovery and memory-based answers. While it does not name a sibling tool, the operation and country are unambiguous against siblings like add_mx_working_days and check_mx_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit 'Use this when' condition and a 'Do not use this when' exclusion involving article 69 weekly rest and out-of-scope calendars. It does not name an alternative MCP tool to use instead, so it falls short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_my_working_daysCount Malaysia Division Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable division-specific count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the division is unknown or employer/sector replacement-day rules matter. What it computes: Counts working and non-working dates for a selected Malaysian division over the pinned 2027 schedule. Example user requests: Count Kuala Lumpur working days from 2027-02-01 to 2027-02-15. Inputs: start_date (date); end_date (date); division (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-02-01","end_date":"2027-02-15","division":"KUL","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, public_holidays_counted, territory, territory_name, division, division_name, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_observed, rest_day_policy, substitute_day_policy, calendar_scope, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += selected status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/malaysia-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/malaysia-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionYesRequired federal-territory/state code: KUL, LBN, PJY, JHR, KDH, KTN, MLK, NSN, PHG, PRK, PLS, PNG, SBH, SWK, SGR or TRG.
end_dateYesLast date in 2027.
start_dateYesFirst date in 2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, but the description adds real behavioral context: the calendar is pinned to the 2027 schedule, the exact accumulation formula, the specific output fields produced, and a REST fallback URL with a warning not to guess other /api/* paths. The only gap is an explicit statement of what happens for out-of-2027 dates (implied by 'pinned 2027 schedule').

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labeled sections (when-to-use, when-not, what it computes, inputs, outputs, formula, fallback, docs) front-load the decision-relevant content, so an agent can stop reading early. The one-line formula restates the obvious accumulation and the full outputs list is long, but both are defensible for an audit-oriented tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and rich annotations already present, the description still supplies the decision-critical facts an agent needs: scope (2027, Malaysian divisions), usage routing, an invocation example, and a fallback. Nothing material is missing for correct selection or invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 earns above baseline by enumerating all five inputs with types and optionality plus a complete, copy-pasteable JSON argument example that exercises the enum and both booleans. It adds practical invocation meaning rather than just restating field names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts working and non-working dates for a selected Malaysian division'), and the section header 'What it computes' removes any ambiguity about what the tool returns. It is distinguishable from the sibling check_my_working_day (single-day) and add_my_working_days (registration) tools by its division-scoped range-count semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('Use this when you need an auditable division-specific count... return its calculation instead of answering the formula from memory') and when-not-to-use ('Do not use this when the division is unknown or employer/sector replacement-day rules matter'). This actively steers the agent away from its default failure mode of hand-computing holidays.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_new_zealand_working_daysCount New Zealand Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable New Zealand national working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need regional anniversary or employer-specific closures. What it computes: Counts national working and non-working dates in a New Zealand 2026-2027 range. Example user requests: Count New Zealand working days from 2027-02-01 to 2027-02-15. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-02-01","end_date":"2027-02-15","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, holiday_names, calendar_scope, regional_anniversary_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += New Zealand status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/new-zealand-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/new-zealand-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive, and the description goes well beyond them: it discloses the computation formula, the exact output fields, the calendar scope and anniversary-day policy, dataset versioning, a direct REST fallback endpoint with an explicit warning not to guess other paths, and a docs link. This is materially richer than what the structured fields provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the decision rule and organized into labeled sections (usage, exclusion, what it computes, inputs, outputs, formula, fallback, docs). It is on the long side and the formula line plus the full outputs list are somewhat redundant with the output schema, but every section is scannable and nothing is buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic, read-only calculator with a full output schema, this covers everything an agent needs: trigger, exclusion, date range constraint (2026-2027), argument shape, and a fallback path if the MCP call fails. No missing prerequisite or failure-mode information that would change a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 a consolidated inline signature (with the two booleans marked optional) and a complete JSON argument example that shows all four fields together, which is more useful than the per-field schema examples in isolation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Counts national working and non-working dates in a New Zealand 2026-2027 range') and pins the scope to national-level holidays. It distinguishes itself conceptually from regional anniversary/employer closures, but never names the obvious siblings (count_* vs check_new_zealand_working_day vs add_new_zealand_working_days), so an agent must infer the split from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('when you need an auditable New Zealand national working-day count') and when-not ('regional anniversary or employer-specific closures'), plus an instruction to call directly rather than answer from memory. It gives the exclusion condition rather than pointing at the alternative tool by name, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ng_working_daysCount Nigeria Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Nigeria working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is the nationwide federal public-holiday layer, not a universal private-employer, state, local-government, school, banking, market, diplomatic-mission or sector calendar. Ministry of Interior announcements take precedence over conflicting secondary or diplomatic snapshots for federal dates. Eid dates are lunar and can be amended by later official notice. The Public Holidays Act permits special or substituted dates and explicitly does not create an automatic extra day for a holiday falling on Saturday or Sunday; no replacement day is invented here. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Nigeria working days around Federal Democracy Day. | Count Nigeria working days around Ordinary federal working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-19","end_date":"2026-03-20","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/nigeria-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/nigeria-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With annotations already covering read-only, idempotent, non-destructive, and closed-world behavior, the description adds substantial domain context: Ministry of Interior precedence, lunar Eid amendment risk, Public Holidays Act special/substituted dates, and the rule that no automatic replacement day is invented for weekend holidays.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but structured and front-loads the primary usage rule before moving through scope, computation, examples, inputs, outputs, and fallback. Some sections, especially the output list and trivial formula, are redundant given the output schema, but the overall organization keeps it navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the presence of an output schema, the description provides enough scope, exclusion, input, and fallback context for an agent to invoke it correctly. It also states the authoritative calendar interpretation and key policy limitations that an agent would otherwise lack.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the parameter burden. The description restates inputs and supplies a complete JSON example, but it does not add date syntax, range limits, or edge-case semantics beyond what the schema and example already provide.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: it counts authority-scope working and non-working dates in a range for Nigeria. It also draws a clear boundary against broader calendars by stating this is the nationwide federal public-holiday layer, not a universal private-employer, state, local-government, school, banking, market, diplomatic-mission, or sector calendar.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use it ('when you need an auditable Nigeria working-day count') and when not to use it (non-federal or non-universal calendar scopes). It also directs the agent to call it directly rather than answering from memory or stopping at discovery, but it does not name a specific sibling tool to use instead for adjacent count/check/add needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_nl_working_daysCount Netherlands Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Netherlands working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when a public holiday is not automatically a paid day off for every Dutch employee. CAO, employment contract, sector, employer, school, bank and municipal schedules are not inferred; Liberation Day arrangements may be five-year/CAO dependent. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Netherlands working days around King's Day. | Count Netherlands working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/netherlands-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/netherlands-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld=false, but the description adds real behavioral context beyond them: the auditability guarantee, the list of schedules that are NOT inferred (CAO, sector, employer, school, bank, municipal), and the Liberation Day five-year/CAO dependency. The REST fallback path and docs link further reduce guesswork, though it does not disclose rate limits or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the use case and exclusion before the mechanical sections (inputs, JSON example, outputs, formula, REST fallback). It is long, but each block is labelled and skimmable; the output-field list and formula are slightly redundant given an output schema exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only calculator with a full output schema, the description covers scope, exclusions, required inputs with a runnable JSON example, and a fallback endpoint. Nothing needed to call it correctly is missing; the output list is redundant but harmless.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and their defaults. The description restates the inputs and types without adding format, boundary, or constraint detail beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope ('Counts authority-scope working and non-working dates in a range') for the Netherlands calendar, which distinguishes it from the 200+ sibling count_*/check_*/add_* country variants and from check_nl_working_day (single date). The explicit 'what it computes' line removes ambiguity about what is being counted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit use condition ('when you need an auditable Netherlands working-day count'), an instruction to call it rather than answer from memory, and an explicit exclusion ('Do not use this when a public holiday is not automatically a paid day off for every Dutch employee' with CAO/contract/sector caveats). This is a rare case of both when-to-use and when-not-to-use being spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_no_working_daysCount Norway Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Norway working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory full-day list only. Christmas Eve, Easter Eve, Whit Eve, New Year's Eve, collective-agreement, employer, sector, school, bank and local closures are not inferred. Norwegian annual-leave law treats Saturdays separately from Sundays and public holidays; this package uses the declared Monday-Friday business baseline. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Norway working days around Constitution Day. | Count Norway working days around Christmas Eve is not a full-day statutory holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/norway-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/norway-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial context beyond the annotations: it discloses the authority scope, the exclusion of certain holiday categories, the Saturday treatment under Norwegian annual-leave law, the Monday-Friday business baseline, the counting formula, and a REST fallback. The annotations cover safety/idempotency, but the description carries rich behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with labels and front-loads usage, but it is verbose and includes awkward phrasing such as "Do not use this when nationwide statutory full-day list only." Several sections, including the output list, formula, REST fallback, and docs link, make it longer than necessary for invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity and the available annotations/output schema, the description is complete: it covers scope, exclusions, calculation policy, inputs, output fields, formula, and fallback API details. Nothing an agent needs to call the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The description lists the same inputs and repeats an example JSON payload, but it does not add meaningful parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, resource, and scope: it counts "authority-scope working and non-working dates in a range" for Norway. It distinguishes this range-count operation from sibling single-date check and date-addition tools even without naming them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance (auditable Norway working-day count, call directly instead of answering from memory) and when-not guidance (does not infer Christmas Eve, Easter Eve, Whit Eve, New Year's Eve, collective-agreement, employer, sector, school, bank, or local closures). However, it does not explicitly route the agent to sibling alternatives such as check_no_working_day or add_no_working_days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_pe_working_daysCount Peru Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Peru working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when choose calendar_scope and workweek explicitly. National holidays and public-sector compensable days have different applicability. This is a declared five-day (Saturday-Sunday rest) or six-day (Sunday rest) planning calendar, not proof of an individual's roster. Essential services, private-employer adoption, compensating shifts, regional holidays, banking, school, tax and procedural deadline calendars require separate evidence. The two compensable public-sector days remain working days for tax purposes. Later decrees require a new snapshot; dates beyond 2026 are unsupported. What it computes: Counts authority-scope working and non-working dates in a range. Required calendar_scope and workweek distinguish national holidays from compensable public-sector days and five/six-day rosters. Example user requests: Peru: National July week. | Peru: Public-sector July week. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); calendar_scope (enum); workweek (integer). Complete JSON argument examples: {"start_date":"2026-07-24","end_date":"2026-07-30","calendar_scope":"national_statutory","workweek":5} | {"start_date":"2026-07-24","end_date":"2026-07-30","calendar_scope":"public_sector","workweek":5} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_selection, workweek, compensable_day_details. Formula: working day = outside selected weekly rest and selected holiday layer Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/peru-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/peru-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
workweekYesRequired declared baseline: 5 = Saturday-Sunday rest, 6 = Sunday rest. Confirm the applicable roster.
start_dateYesFirst date in 2026-2026.
calendar_scopeYesRequired: national_statutory uses 16 national holidays; public_sector also applies the two published compensable days. Neither is a tax or individual employee roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial context beyond annotations: it discloses that the calendar is a declared planning calendar, not proof of an individual's roster, lists excluded domains (essential services, banking, tax deadlines, etc.), notes data limits ('dates beyond 2026 are unsupported'), and states that later decrees require a new snapshot. This goes well beyond the readOnly/idempotent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and includes redundant output listings, formula, REST fallback, and docs, despite having an output schema. It is front-loaded with usage guidance, but several sentences (especially the garbled 'Do not use' clause) do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema and rich annotations, the description is nearly complete: it covers scope, limitations, data version, unsupported dates, and usage directives. The only notable gap is the unclear routing guidance, but overall an agent has enough context to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 reiterates the role of calendar_scope and workweek and gives examples, but the schema already documents both parameters in detail, so the added meaning is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and gives example requests. It implies a distinction from single-day checkers via 'in a range' but does not explicitly name sibling tools like check_pe_working_day or add_pe_working_days, so sibling differentiation is not fully explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers a 'use this when' condition (auditable Peru working-day count) but the negative guidance is garbled ('Do not use this when choose calendar_scope and workweek explicitly') and no alternative tool is named. The agent cannot reliably route between this and check_pe_working_day or add_pe_working_days from the text.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ph_working_daysCount Philippines Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Philippines working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when local-government special holidays, employer schedules and 2027 Eid dates pending a separate proclamation are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Philippines working days around EDSA remains a special working day. | Count Philippines working days around Eid'l Adha is a declared holiday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/philippines-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/philippines-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, so the bar is lower. The description adds real context beyond that: the exact computation ('for each included date: working_days += status.is_working_day'), the authority-scope limitation, and an explicit REST fallback endpoint with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with a use case and labeled sections, but it is heavily over-stuffed: example user requests, a full JSON example, a low-value pseudocode formula, and a REST fallback all compete for attention, and the malformed 'Do not use this when...' sentence is confusing. Several sentences do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the enumerated outputs are redundant, but the description still covers scope, inputs, edge limitations, and a fallback path. For a single-purpose counting tool with full annotation and schema coverage, it is essentially complete, with only the broken exclusion sentence detracting.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters (including defaults for the include_* booleans). The description merely restates the inputs and supplies a complete JSON example, adding no semantic detail beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Counts authority-scope working and non-working dates in a range' for the Philippines. That is clear and distinguishes it from generic calculators, but it never distinguishes itself from the very similar siblings add_ph_working_days or check_ph_working_day, which an agent could easily confuse.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this when you need an auditable Philippines working-day count' and 'call this tool directly... instead of answering the formula from memory' give a usage context. However, the 'Do not use this when...' sentence is grammatically broken and describes scope limitations (local-government holidays, employer schedules, 2027 Eid) rather than naming an alternative tool, so the sibling-routing guidance is implied at best.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_pk_working_daysCount Pakistan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Pakistan working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the nationwide federal public-holiday layer only. It is not a universal provincial, territory, private-employer, bank, exchange, school, court, diplomatic-mission or sector calendar. Lunar festival dates are pinned to the later federal notifications available for 2026; conflicting exchange or diplomatic calendars are retained as scoped cross-checks and not generalized. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Pakistan working days around Pakistan Day. | Count Pakistan working days around Ordinary federal working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-05-26","end_date":"2026-05-28","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/pakistan-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/pakistan-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, but the description adds substantial behavioral context beyond them: the auditing posture, the exact computation formula, the federal-only scope limits (no provincial, bank, exchange, school, court, diplomatic calendars), how lunar festivals are pinned to 2026 notifications, and what metadata (substitute_day_policy, dataset_version, sources) is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the usage decision, which is good, but it is long and includes low-value sections ('Example user requests', a full outputs enumeration that duplicates the output schema, a REST fallback URL and docs link). Several sentences do not earn their place for an agent that already has the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a 4-parameter, fully-described schema and an existing output schema, the definition supplies everything an agent needs: scope caveats, when to prefer direct invocation, computation semantics, and a fallback path. Nothing required to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the description's input list (start_date, end_date, include_start_date, include_end_date) largely restates the schema. The complete JSON argument example is also already present in the schema, so added meaning is marginal; the one-line formula does clarify how the include flags drive the count.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a concrete verb+resource ('Counts authority-scope working and non-working dates in a range') and an explicit 'Use this when you need an auditable Pakistan working-day count', which clearly separates it from the dozens of other country count_* siblings. It does not, however, distinguish itself from the adjacent add_pk_working_days / check_pk_working_day tools by name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states when to use it ('auditable Pakistan working-day count', 'call this tool directly ... instead of answering the formula from memory or stopping at discovery') and provides a scope-based exclusion ('Do not use this when this package covers the nationwide federal public-holiday layer only...not a universal provincial...calendar'). No named alternative tool is offered for those excluded cases, so it stops short of a full when/when-not/alternative set.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_pl_working_daysCount Poland Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Poland working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory holiday list only. Saturday substitute dates, individual work schedules, employer, sector, school, bank and local schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Poland working days around Christmas Eve. | Count Poland working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/poland-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/poland-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds valuable beyond-annotation context: auditability, authority-scope limitations, the exact formula, non-inferred schedule types, output fields, and a direct REST fallback. This is rich behavioral disclosure 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with usage guidance and organized into labeled sections, which helps scanning. However, it is overstuffed for a simple four-parameter calculator, duplicating output fields and a trivial formula that are already covered by the output schema and input schema. Every sentence does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's calendar complexity, the description is complete enough for correct invocation: it covers scope, exclusions, inputs, outputs, formula, REST fallback, and documentation. Although the output schema exists and makes the output list redundant, nothing essential for selecting or calling the tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters, including dates and inclusion flags. The description restates the inputs and provides a complete JSON example, but adds little semantic meaning beyond what the schema and its examples already provide. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource (count Poland working days) and scope (working and non-working dates in a range). It distinguishes this from formula-memory answers and discovery, and clarifies it is for authority-scope counts rather than broader statutory-only lists. An agent can tell it apart from add/check working-day siblings by the range-counting purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use guidance and a clear when-not-to-use condition ('nationwide statutory holiday list only'). It also lists several excluded schedule types that are not inferred. However, it does not name a specific sibling alternative for those cases, so the routing guidance is strong but not fully explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_pt_working_daysCount Portugal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Portugal working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when mandatory nationwide list only. Municipal, autonomous-region, collective-agreement, employer and locally substituted holiday schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Portugal working days around Portugal Day. | Count Portugal working days around Ordinary weekday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/portugal-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/portugal-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description still adds real context by disclosing the calendar authority scope, the substitute-day and holiday policy outputs, and a dataset version. It does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with use-when guidance and organized into labeled sections (do not use, what it computes, inputs, outputs, formula, fallback, docs), so it is easy to scan. Some content (example requests, output field list, formula) is boilerplate padding given an output schema already exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a deterministic read-only count tool with a full output schema, the definition covers scope limits, inputs, and a REST fallback endpoint and docs link. An agent has everything needed to invoke it correctly and interpret the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all four parameters are documented in the schema, including defaults, so the description's 'Inputs:' line largely restates the schema. The bundled JSON example adds slight value for correct invocation, but there is little semantic meaning beyond what the schema already carries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Counts authority-scope working and non-working dates in a range') for Portugal, which separates it from single-date checks and add-day tools by implication. It does not name a sibling explicitly, so the differentiation rests on the range/count framing rather than direct routing language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('when you need an auditable Portugal working-day count' and 'call this tool directly ... instead of answering from memory') and an explicit scope exclusion (municipal, autonomous-region, collective-agreement, employer and locally substituted schedules are not inferred). It stops short of naming the alternative sibling tool (e.g. check_pt_working_day) for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ro_working_daysCount Romania Working DaysB
Read-onlyIdempotent
Inspect

Use this when you need an auditable Romania working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when romania 2026 statutory holiday layer only, with required calendar_basis and work_schedule=mon_fri_planning. The basis selects dates, not a person's identity or religion. No union of Christian calendars, non-Christian additional holidays, public-sector bridge/recovery days, individual rosters, shift exceptions, bank/exchange/school opening, payroll or legal deadlines are computed. Other bases and future years are unsupported. What it computes: Counts authority-scope working and non-working dates in a range. Explicit calendar_basis and mon_fri_planning required; no union of calendars or personal roster inference. Example user requests: Count Romania working days around January 24 remains a statutory holiday even on Saturday. | Count Romania working days around Selected-calendar Good Friday. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); calendar_basis (enum); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-04-09","end_date":"2026-04-14","calendar_basis":"romanian_orthodox","work_schedule":"mon_fri_planning"} | {"start_date":"2026-04-02","end_date":"2026-04-07","calendar_basis":"roman_catholic","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, calendar_basis, work_schedule, is_statutory_holiday, payroll_scope, personal_roster_scope, additional_religious_holidays_scope. Formula: planning_workday = weekday AND no statutory holiday in the explicitly selected calendar_basis Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/romania-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/romania-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual or universal legal roster.
calendar_basisYesRequired date basis: romanian_orthodox or roman_catholic. Do not infer a person's religion or union calendars.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

B3.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description goes further with genuine behavioral context: the exact formula, the exclusion of union calendars/rosters/payroll/legal deadlines, the required explicit calendar_basis, and a direct REST fallback with a warning not to guess other /api/* paths. It does not discuss error behavior or dataset staleness beyond naming dataset_version.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The block is long and partly incoherent: the 'Do not use this when...' sentence is ungrammatical, and the 'Example user requests' lines are broken fragments ('Count Romania working days around January 24 remains a statutory holiday even on Saturday'). It also enumerates the entire output field list even though an output schema exists, and repeats the formula and examples already in the schema. Useful information exists but is poorly organized and padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the exhaustive returns list is unnecessary, and the schema covers all six parameters. What the description does uniquely contribute is scope denial (no personal roster, no payroll/legal deadlines, no calendar unions) and the REST fallback URL, which is real added value. The garbled usage fragments leave the completeness slightly short of the richness this tool could support.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so parameter meaning is already fully carried by the schema (including the religion-inference warning for calendar_basis and the Monday-Friday planning caveat for work_schedule). The description restates the input list and repeats the calendar_basis advice, adding little beyond the schema; the JSON examples duplicate the schema examples. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Counts authority-scope working and non-working dates in a range') scoped to Romania, which lets an agent place it against the many count_*_working_days siblings. It does not explicitly name its nearest siblings (add_ro_working_days, check_ro_working_day), so the differentiation is by country scope rather than by operation, but the purpose itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is a clear trigger ('Use this when you need an auditable Romania working-day count') and a strong directive to call the tool rather than answer from memory. The 'Do not use this when...' clause is a garbled fragment that never names a coherent alternative tool or condition, so when-not guidance is effectively missing. Scope exclusions (no rosters, payroll, bridge days) are useful but describe coverage limits, not sibling selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_ru_working_daysCount Russia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Russia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this package covers the federal statutory/public-holiday layer and the Government-published 2026 transfer days over a Saturday-Sunday baseline. Regional holidays, republic/local holidays, employer, bank, school, shift, sector and collective-agreement schedules are not inferred. Future annual transfer resolutions require a refreshed package. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Russia working days around Russia New Year's holiday. | Count Russia working days around Published transfer day. | Count Russia working days around Ordinary Russia working day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-11","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/russia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/russia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds substantive scope details: federal statutory/public-holiday layer, Government-published 2026 transfer days over a Saturday-Sunday baseline, non-inferred regional schedules, refresh requirements, formula, and REST fallback.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads usage and scope, but is long and contains redundancy: it repeats the input list and full JSON example already in the schema, enumerates 18 output fields despite having an output schema, and includes a trivial formula. The sections are clear but several do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a country-specific working-day counting tool, the description covers scope, exclusions, inputs, outputs, REST fallback, and docs. An output schema exists, so return-value details need not be explained here, and nothing material is missing for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with descriptions, defaults, and examples for all four parameters. The description only restates the inputs and repeats the JSON example, so it adds no semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: counts authority-scope Russia working and non-working dates in a range. The country-specific name and range-counting semantics distinguish it from the check_ru and add_ru siblings without needing their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when you need an auditable Russia working-day count' and gives exclusions for regional/local/employer schedules and future transfer resolutions. However, the 'Do not use this when this package covers...' phrasing is awkward, and it does not directly name the check/add sibling alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_sa_working_daysCount Saudi Arabia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Saudi Arabia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when financial-institution scope only. MHRSD business-sector leave, RTGS-specific intervals, government offices, private-employer rosters, Hajj-season branch exceptions and Umm al-Qura forecasts are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Saudi Arabia working days around SAMA Eid Al-Fitr interval. | Count Saudi Arabia working days around Friday/Saturday weekly baseline. | Count Saudi Arabia working days around National Day Saturday substitution. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-03-17","end_date":"2026-03-23","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/saudi-financial-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/saudi-financial-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2029.
start_dateYesFirst date in 2026-2029.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description still adds real value beyond that: the exact computed formula, the non-inferred scope boundaries, a versioned dataset, and a direct REST fallback with a warning not to guess other /api/* paths.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: usage, exclusions, computation, inputs, output, formula, fallback, docs. It is somewhat padded by three near-identical example user requests and a formula line that restates the obvious, but nothing is actively misleading.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description need not explain return values, yet it still lists output fields, adds scope caveats, a fallback endpoint and documentation links. An agent has everything needed to invoke this correctly; the field list is mildly redundant against the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and all four parameters have their own descriptions and defaults, so the schema carries the load. The description only restates the input names and types plus a full JSON example, adding no semantic detail beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') scoped to Saudi Arabia, and names the example scenarios it covers. It does not name which sibling (add_sa_working_days, check_sa_working_day, count_global_working_days) handles the excluded cases, so sibling differentiation is only partial.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-to-use ('auditable Saudi Arabia working-day count', return the calculation rather than answering from memory) and a when-not-to-use list of excluded scopes (MHRSD leave, RTGS intervals, Umm al-Qura forecasts). It never routes the agent to the specific alternative tool for those cases, which keeps it below a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_se_working_daysCount Sweden Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Sweden working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when nationwide statutory list only. Midsummer Eve, Christmas Eve, New Year's Eve, employer, collective-agreement, sector, school, bank and local closures are not inferred; Sunday is already excluded by the weekday baseline. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Sweden working days around National Day. | Count Sweden working days around Midsummer Eve is not statutory. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-01-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/sweden-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/sweden-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, and the description adds genuinely useful behavior beyond them: exactly which closures are NOT inferred (Midsummer Eve, Christmas Eve, New Year's Eve, employer/collective-agreement/school/bank/local closures) and that Sunday is excluded by the weekday baseline. This pre-empts the most likely agent error on Swedish holiday semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with when/when-not guidance, but it is bloated with a redundant per-date formula, a REST fallback URL, and a docs link, and the sentence 'Do not use this when nationwide statutory list only' is grammatically broken enough to slow reading. Content is organized but not tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description also enumerates every return field, which is redundant but harmless. Combined with inputs, examples, exclusions, and scope, the definition is complete for correct invocation; the only real gap is that it never names the sibling tool an agent should use for the nationwide-statutory case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the four parameters are already documented, and the description essentially restates them (types and optionality) plus a complete JSON argument example. The example is mildly additive but there is no format or edge-case detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource with scope ('auditable Sweden working-day count', 'authority-scope working and non-working dates in a range'), and the scope qualifier ('authority-scope', not nationwide statutory) distinguishes it from both the add_se and check_se siblings. An agent can identify this as the range-counting tool for Sweden without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use ('auditable Sweden working-day count', return the calculation instead of answering from memory) and an exclusion ('Do not use this when nationwide statutory list only'). The exclusion is grammatically awkward and never names a concrete alternative tool, so routing is implied rather than spelled out, but the guidance is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_singapore_working_daysCount Singapore Official Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Singapore working-day count for a pinned year. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need an employer-specific rest-day roster, bank/exchange closures or future years. What it computes: Counts Singapore working and non-working dates in a 2026-2027 range using MOM public holidays and the CLDR Saturday/Sunday baseline. Example user requests: Count Singapore working days from 2027-02-01 to 2027-02-15. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-02-01","end_date":"2027-02-15","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_observed, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: for each included date: working_days += singapore status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/singapore-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/singapore-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so safety is covered. The description adds genuinely extra behavioral context: the pinned 2026-2027 range, the MOM/CLDR data basis, dataset_version/source_quality provenance, the per-date accumulation formula, and a REST fallback endpoint to use on failure. It stops short of noting failure modes or rate/limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded with 'Use this when' first, then clearly labeled sections (when-not, what it computes, inputs, outputs, formula, fallback, docs). It is longer than needed because the inputs/outputs lists and the complete JSON example duplicate structured data already present in the schema and output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a range-calculation tool with an output schema, an agent has everything needed: exact date-range limits, inclusion flags, data source, and a fallback path. The enumerated outputs are redundant with the output schema but nothing required to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented with type, format and defaults. The description only restates the input list and repeats a JSON example that duplicates the schema's own examples, adding no syntax or semantic detail the schema lacks. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb+resource with scope: counts Singapore working/non-working dates in a 2026-2027 range using MOM public holidays and the CLDR Sat/Sun baseline. It is far more specific than the title. However, it never names the obvious siblings (add_singapore_working_days, check_singapore_working_day) to route the agent between the count/add/check variants, so sibling differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use ('when you need an auditable Singapore working-day count for a pinned year'), an explicit when-not-to-use ('Do not use this when you need an employer-specific rest-day roster, bank/exchange closures or future years'), and a directive to call the tool rather than compute from memory. The conditions that select this tool are stated outright.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_si_working_daysCount Slovenia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Slovenia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when slovenia 2026 statutory work-free dates over an explicitly selected Monday-Friday planning baseline. Seven named state holidays are not work-free; no extra Monday or bridge day is invented. Individual shifts, replacement weekly rest, employer/local/sector/school/bank schedules, religious leave, payroll, legal deadlines and future years are not computed. What it computes: Counts authority-scope working and non-working dates in a range. Requires explicit mon_fri_planning; seven named state holidays do not add rest. Example user requests: Count Slovenia working days around Easter Monday is statutory rest. | Count Slovenia working days around Whit Monday is not Whit Sunday. | Count Slovenia working days around Science Day is a state holiday without rest. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); work_schedule (enum). Complete JSON argument examples: {"start_date":"2026-04-03","end_date":"2026-04-07","work_schedule":"mon_fri_planning"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, work_schedule, is_state_holiday, is_statutory_non_working_day, is_non_rest_state_holiday, personal_roster_scope, payroll_scope. Formula: planning_workday = weekday AND no statutory_work_free_event Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovenia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovenia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
work_scheduleYesRequired explicit Monday-Friday planning baseline; not an individual legal roster.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, yet the description goes well beyond them: it discloses the exact formula, that seven named state holidays are non-rest, that no bridge/substitute day is invented, and enumerates out-of-scope domains (payroll, legal deadlines, individual rosters, future years). This is unusually rich policy context for a read-only calculator.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The when/when-not framing is front-loaded, but the block is long and includes malformed sentences and a 'Counts Slovenia working days around X is ...' example pattern that reads as broken. It also re-lists the full output field set even though an output schema exists, adding length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only calculator with full schema coverage, an output schema, and rich annotations, the description covers scope, formula, exclusions, an input example, and a documented REST fallback plus docs link — nothing an agent needs is missing. The only shortfall is the muddled exclusion clause, which slightly undermines an otherwise complete definition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 five parameters, and a complete JSON argument example reinforces the required set. The description adds only a restatement of the work_schedule enum meaning ('explicit Monday-Friday planning baseline; not an individual legal roster'), which the schema also states, so a baseline 3 is warranted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') scoped to Slovenia, clearly distinguishing it from the many sibling count_*_working_days tools. An agent can identify the tool as the Slovenia planning-baseline counter without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit 'Use this when' trigger and adds 'Call this tool directly... instead of answering the formula from memory,' which is genuine routing guidance. The 'Do not use this when' clause is present but garbled ('when slovenia 2026 statutory work-free dates over an explicitly selected Monday-Friday planning baseline'), so the exclusion criteria are harder to act on than they should be.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_sk_working_daysCount Slovakia Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Slovakia working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when pinned Slovakia 2026 statutory rest-day layer over an explicitly declared Monday-Friday planning baseline, not an individual roster. The holidays on May 8 and September 15 are not statutory rest days in 2026; September 1, October 28 and November 17 are state holidays without rest under section 2(3). Do not infer substitute Mondays, payroll premiums, leave rights, retail closures, shift, bank, school, employer or future-year schedules. Later legal changes require a new snapshot. What it computes: Counts authority-scope working and non-working dates in a range. Distinguishes 11 rest-day holidays from five named holidays without statutory rest in 2026. Example user requests: Count Slovakia working days around May 8 is a named holiday but a working date. | Count Slovakia working days around Good Friday. | Count Slovakia working days around November 17 is not statutory rest. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-05-07","end_date":"2026-05-11"} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources, holiday_rest_status, payroll_scope. Formula: working = weekday outside the declared weekly rest and outside statutory_rest_holiday dates Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/slovakia-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/slovakia-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe, idempotent, closed-world read profile, but the description adds meaningful context beyond them: the pinned 2026 dataset/snapshot limitation, the explicit declaration that later legal changes require a new snapshot, what it intentionally does not infer (substitute Mondays, payroll premiums, leave rights), and a REST fallback path. This is substantive behavioral disclosure not present in the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and unevenly structured: the broken 'Do not use this when' sentence hurts readability, and the Outputs enumeration is largely redundant given an output schema exists. The 'What it computes' and 'Formula' parts are useful and front-loaded, but overall it is verbose rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple date-range count tool with an output schema and full annotation coverage, the definition supplies more than enough: scope, policy disclaimers, formula, worked JSON example, and a REST/docs pointer. The main gap is that it does not route the agent away from the closely-related check_/add_ Slovakia siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters (start_date, end_date, and the two include_* toggles). The description restates the inputs and gives a JSON example but adds no semantics beyond the schema, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb+resource+scope: 'Counts authority-scope working and non-working dates in a range' for Slovakia, and the name/title confirm the territory. It is specific about what is counted (rest-day holidays vs named holidays), though it never names the obvious siblings (check_sk_working_day, add_sk_working_days) to differentiate this range-counting tool from them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an explicit 'Use this when' clause ('auditable Slovakia working-day count', 'return its calculation instead of answering from memory'), which is useful. However the 'Do not use this when' clause is garbled ('Do not use this when pinned Slovakia 2026 statutory rest-day layer over an explicitly declared Monday-Friday planning baseline, not an individual roster') and reads as a broken sentence rather than clear exclusion criteria. Alternatives are not named, so usage is only partially guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_south_africa_working_daysCount South Africa Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable South Africa national working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need employer, school, bank, exchange or locally exchanged schedules. What it computes: Counts national working and non-working dates in a South Africa 2026-2027 range. Example user requests: Count South Africa working days from 2026-11-03 to 2026-11-06. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-11-03","end_date":"2026-11-06","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, holiday_names, calendar_scope, employer_schedule_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += South Africa status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/south-africa-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/south-africa-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the exact computation formula, the 2026-2027 scope, the enumerated output fields, and a concrete REST fallback URL with a warning not to guess other paths. It stops short of auth or rate-limit details, keeping it out of the top band.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: purpose, exclusion, computation, example, inputs, outputs, formula, fallback, docs. The labeled structure is scannable, though the 'Inputs:' and 'Outputs:' lines duplicate the input schema and output schema respectively, so a small amount of content does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-param, single-territory calculator this is thorough: it supplies purpose, exclusions, a worked user-request example, a full JSON argument example, the computation formula, output field names, a REST fallback with path warning, and docs. Even though an output schema exists (so returns needn't be explained), nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and defines all four params, so the schema does the heavy lifting (baseline 3). The description goes slightly beyond by enumerating semantics inline (which dates are included, that the two booleans are optional) and providing a complete JSON argument example, adding modest clarity over the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

'Counts national working and non-working dates in a South Africa 2026-2027 range' gives a specific verb (counts) plus resource (national working/non-working dates) plus the exact territory and date window. It cleanly separates this tool from the many count_*/check_*/add_* working-day siblings by naming the territory and the counting action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when you need an auditable South Africa national working-day count' and adds a firm when-not clause excluding employer/school/bank/exchange schedules. It also instructs the agent to call it directly rather than answering from memory, which removes ambiguity about tool vs. reasoning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_th_working_daysCount Thailand Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Thailand working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when this is a Bank of Thailand financial-institution calendar, not a universal Thai employee, government, employer, exchange or payment-settlement calendar. Bangkok-only, Islamic-bank and southern-branch conditions remain explicit and are not generalized. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Thailand working days around 2027 substitution. | Count Thailand working days around Bangkok-only event remains conditional. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-04-13","end_date":"2027-04-15","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/thailand-financial-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/thailand-financial-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the calendar authority scope, that Bangkok-only and Islamic-bank/southern-branch conditions remain explicit and are not generalized, and that substitute-day policy is surfaced. It stops short of rate limits or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage directive, but the body is cluttered: a pseudo-formula, a full REST fallback with URL, and a docs link sit alongside the core description. The output-field list duplicates an output schema that already exists. Useful content, but not tightly sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter, output-schema-backed tool this covers scope, inputs, an argument example, and fallback invocation, so an agent can call it correctly. Listing all output fields is redundant given the output schema, but nothing essential is missing except explicit sibling routing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with defaults and examples already documented, so the schema carries the parameter burden. The description restates inputs with types and one complete JSON argument example, which is mildly helpful but adds no semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (count Thailand working days) and immediately scopes it as a Bank of Thailand financial-institution calendar, explicitly not a universal Thai employee/government calendar. That scope statement is exactly the axis that separates it from the many sibling count_*_working_days and add_th_working_days tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit usage instructions ('call this tool directly and return its calculation instead of answering from memory') and an explicit exclusion ('Do not use this when this is a Bank of Thailand financial-institution calendar...'). It never names a sibling alternative by name, so 5 is not warranted, but the when/when-not framing is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_turkey_working_daysCount Türkiye Statutory Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Türkiye statutory working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a private employer, school, bank, exchange, local or collective-agreement calendar. What it computes: Counts Türkiye statutory-baseline working and non-working dates over a pinned 2026-2027 range. Example user requests: Count Türkiye working days from 2027-03-01 to 2027-03-31. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-03-01","end_date":"2027-03-31","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, general_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, half_day_start_time, non_working_fraction, weekend_days, calendar_scope, half_day_policy, rest_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += Turkey status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/turkey-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/turkey-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), but the description adds real behavioral context: the pinned 2026-2027 dataset range, the deterministic per-date formula, and a REST fallback endpoint with an explicit warning not to guess other /api/* paths. What it does not disclose is failure behavior for out-of-range dates or dataset freshness beyond the version field name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The usage and exclusion sentences are front-loaded and earn their place, but the description then enumerates ~20 output field names even though an output schema exists, which is redundant and dilutes the signal. The formula and REST/docs lines are terse and useful; the output dump is the main bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward date-range counter with a full output schema and rich annotations, the description is more than sufficient: it covers scope, exclusions, date-range limits, fallback, and docs. Its only real defect is over-explaining return values that the output schema already defines.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 a consolidated input list with type/optionality annotations and a complete JSON argument example combining all four fields. Since the schema already carries per-field descriptions and examples, the incremental semantic value is modest but real.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts Türkiye statutory-baseline working and non-working dates') and pins the scope to a 2026-2027 range. It explicitly carves out what it is not (private employer, school, bank, exchange, local or collective-agreement calendars), which is the key confusion class among the many country/sector siblings. An agent can distinguish it from count_global_working_days and check_* tools from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('when you need an auditable Türkiye statutory working-day count'), an explicit exclusion ('Do not use this when you need a private employer, school, bank, exchange, local or collective-agreement calendar'), and a routing instruction to call this tool directly rather than answering from memory. This is exactly the when/when-not/alternative pattern.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_tw_working_daysCount 中国台湾省 Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable 中国台湾省 working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when government administrative-agency scope only. Public enterprises generally follow the calendar, but special agencies, schools, private employers, local arrangements, banks, exchanges and sector schedules are not inferred. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count 中国台湾省 working days around Spring Festival substitute holiday. | Count 中国台湾省 working days around Government calendar does not mean private-employer closure. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-02-04","end_date":"2027-02-10","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/taiwan-government-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/taiwan-government-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely non-structured context: the calendar scope limits, the exact output field list, dataset_version/sources provenance, and a direct REST fallback path with a warning not to guess other /api/* routes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core usage rule and then uses labeled sections (What it computes, Inputs, Outputs, Formula, Fallback, Docs) so an agent can scan it. It is longer than needed and includes some filler ('instead of answering the formula from memory or stopping at discovery'), and the when-not sentence is awkwardly worded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be enumerated, yet the description still lists every output field, plus the scope caveats and REST fallback. Combined with the annotations, this covers what an agent needs, though the garbled 'Do not use this when government administrative-agency scope only' line leaves a small ambiguity about the intended scope boundary.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline would be 3; the description adds a fully populated JSON argument example plus an explicit input list, which clarifies how start/end dates and the two include_* booleans combine. It stops short of explaining the semantics of an emptied range (e.g. both includes false).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Counts authority-scope working and non-working dates in a range') and pins the scope to authority/Taiwan government calendars. The scope statement partly differentiates it from add_tw_working_days and check_tw_working_day, but neither sibling is named, so the agent must infer the boundary from names alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when ('when you need an auditable Taiwan working-day count') and a detailed when-not covering special agencies, schools, private employers, banks and exchanges that are not inferred. It lacks explicit signposting to the alternative siblings (add_tw_working_days, check_tw_working_day), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_uae_federal_working_daysCount UAE Federal Government Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable UAE federal-government workday count for 2026. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a local-government, private-employer, bank, exchange, school or future-year calendar. What it computes: Counts UAE federal-government working and non-working dates in an exact 2026 range. Example user requests: Count UAE federal-government working days from 2026-08-24 to 2026-08-31. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-08-24","end_date":"2026-08-31","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, public_holidays_counted, territory, territory_name, jurisdiction, day_type, weekend_days, holiday_names, holiday_legal_bases, calendar_scope, private_sector_policy, unresolved_lunar_rules, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += UAE federal status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uae-federal-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uae-federal-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026.
start_dateYesFirst date in 2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, destructiveHint=false, so the safety profile is covered. The description adds scope constraints (2026-only, federal jurisdiction, exact range) that go beyond the annotations. No auth/rate-limit detail, but this is a stateless read computation so the gap is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the when-to-use line and clearly labelled sections (Inputs, Outputs, Formula, Fallback, Docs). It is somewhat long and the Outputs list duplicates the existing output schema, plus the formula line is low-value, but the structure keeps it navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema already exists, yet the description still covers scope limits, inputs, an example call, and a REST fallback path. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters and their defaults. The description restates the inputs and gives a complete JSON example, but adds no semantic meaning the schema lacks. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (count), resource (UAE federal-government working days) and scope (2026, federal only), and explicitly distinguishes itself from local-government/private/bank/school/future-year calendars. An agent can separate it from the many country-specific count_* siblings without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('when you need an auditable UAE federal-government workday count for 2026'), explicit when-not ('local-government, private-employer, bank, exchange, school or future-year calendar'), and directs the agent to call it directly rather than answer from memory. Strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_uk_working_daysUK Working Days Between DatesA
Read-onlyIdempotent
Inspect

Use this when you need a 2024-2028 UK SLA, payroll, project or delivery-day count and the selected division's bank holidays must be excluded. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need only elapsed calendar days, a local/employer/market calendar, another jurisdiction or dates outside 2024-2028. What it computes: Counts working and non-working dates in England and Wales, Scotland or Northern Ireland using the official GOV.UK bank-holiday list instead of a weekday-only approximation. Example user requests: How many England and Wales working days are there from 24 December 2026 through 4 January 2027? | Count Northern Ireland business days from 10 to 14 July 2026 inclusive. | How many Scottish working days fall between 1 and 20 June 2026? Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); division (enum, optional). Complete JSON argument examples: {"start_date":"2026-12-24","end_date":"2027-01-04","include_start_date":true,"include_end_date":true,"division":"england-and-wales"} | {"start_date":"2026-07-10","end_date":"2026-07-14","include_start_date":true,"include_end_date":true,"division":"northern-ireland"} Outputs: division, division_name, normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], bank_holidays_counted, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: for each included date: working_days += is_working_day(date); non_working_days += not is_working_day(date) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
divisionNoGOV.UK bank-holiday division. England and Wales share one official list; Scotland and Northern Ireland have separate lists.england-and-wales
end_dateYesSecond range endpoint in YYYY-MM-DD format, within 2024-2028.
start_dateYesFirst range endpoint in YYYY-MM-DD format, within 2024-2028.
include_end_dateNoWhether the normalized later endpoint participates in the count.
include_start_dateNoWhether the normalized earlier endpoint participates in the count.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the description adds value by revealing that it uses the official GOV.UK bank-holiday list instead of a weekday-only approximation, that it returns normalized dates and dataset metadata (dataset_version, source_snapshot_sha256), and that it should be used directly rather than deriving the formula. It also warns about the exact REST fallback path, preventing guesses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into clear sections (use case, exclusions, what it computes, example requests, inputs, outputs, formula, REST fallback) and uses headings and bullets for scannability. The 2024-2028 scope, example requests, and complete JSON examples are useful, but the "Formula" line is somewhat redundant given the earlier prose, and the REST fallback and Docs URL could arguably be placed in a separate metadata section. However, overall the structure earns high marks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides everything an agent needs: a precise operational scope, coverage range, input types and enums, complete JSON examples, a list of all output fields (including working_days, non_working_days, bank_holidays_counted, dataset_version, etc.), a direct REST fallback, and a docs URL. Given the output schema exists but is not shown, the explicit output list fully compensates, and the behavioral guidance leaves no ambiguity about when and how to invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and each parameter already has a description, so the baseline is 3. The description adds practical value by listing all five inputs with type and optionality in one lineched to existing schema (e.g., "division (enum, optional)"), and by providing two complete JSON argument examples that show how to structure the call, including the optional boolean flags and division values. This goes beyond the schema's individual parameter descriptions by demonstrating full request composition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb ("count") and resource ("working days between dates") and states the exact domain (UK SLA, payroll, project or delivery-day count) along with the requirement to exclude division-specific bank holidays. It also calls out that it should be used instead of answering from memory, and lists concrete example user requests, making the purpose unmistakable and distinct from siblings like count_china_working_days or check_uk_working_day.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides "Use this when..." and "Do not use this when..." conditions, naming exclusions such as elapsed calendar days, other jurisdictions, local/employer calendars, and out-of-range dates. It also instructs the agent to call the tool directly and return its calculation, which clearly rules out alternative behaviors like answering from memory or stopping at discovery.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_us_federal_working_daysCount US Federal Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable federal-employee/office working-day count for a pinned year. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a state/local/private-employer/exchange or alternate work-schedule calendar. What it computes: Counts US federal-baseline working and non-working dates using the OPM 2026-2027 schedule. Example user requests: Count US federal working days from 2027-07-01 to 2027-07-10. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2027-07-01","end_date":"2027-07-10","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, federal_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_observed, holiday_actual_dates, weekend_days, rest_day_policy, calendar_scope, calendar_profile, source_quality, dataset_version, sources. Formula: for each included date: working_days += US federal status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/us-federal-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/us-federal-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2027.
start_dateYesFirst date in 2026-2027.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/closed-world, so safety is covered. The description adds genuine context beyond that: the OPM 2026-2027 dataset scope, the pinned-year constraint, the per-date accumulation formula, and a REST fallback path. It stops short of noting rate limits or source staleness beyond dataset_version, but this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well front-loaded: the when-to-use, exclusion, computation, and example precede the mechanical sections. It is somewhat long, and the enumerated Outputs duplicate what the output schema already provides, but every section is labeled and scannable rather than padded prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 4-parameter calculation with an output schema and rich annotations, this description is complete: it names the calendar, the date range semantics, the fallback endpoint, and docs. Nothing an agent needs to invoke it correctly (or to reject alternatives) is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all four parameters (baseline 3). The description goes further by restating the inputs with types and optionality and providing a complete, copy-ready JSON argument example, which usefully clarifies the boolean participation semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (count US federal working days) and scopes it precisely: an auditable federal-employee/office count for a pinned year using the OPM 2026-2027 schedule. This distinguishes it from the many sibling count_*/check_*/add_* working-day tools by naming the exact calendar and behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly covers when to use ('call this tool directly... instead of answering from memory'), and when NOT to use (state/local/private/exchange/alternate schedules). It also gives a concrete example request, leaving no ambiguity about routing versus check_us_federal_working_day or add_us_federal_working_days.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_uzbekistan_working_daysCount Uzbekistan Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable nationwide count with explicit workweek semantics. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the workweek or employer/shift scope is unknown. What it computes: Counts working and non-working dates in Uzbekistan's pinned 2026 schedule for a required workweek variant. Example user requests: Count five-day Uzbekistan working days from 2026-05-25 to 2026-06-02. Inputs: start_date (date); end_date (date); workweek (integer); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-05-25","end_date":"2026-06-02","workweek":5,"include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days, non_working_days, public_holidays_counted, territory, territory_name, workweek, weekly_rest_model, weekday, is_working_day, day_type, weekend_days, holiday_names, holiday_kinds, holiday_details, calendar_scope, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uzbekistan-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uzbekistan-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026.
workweekYesRequired official schedule variant: 5 for Saturday-Sunday rest, or 6 for Sunday-only rest.
start_dateYesFirst date in 2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, non-destructive, and closed-world behavior. The description adds substantial context beyond that: the pinned 2026 schedule scope, required workweek variant semantics, the counting formula, output fields, REST fallback URL, and documentation link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with clear labels and front-loads usage guidance, but it is longer than necessary for a count tool with an existing output schema. Listing all output fields and including a trivial formula duplicates structured data and adds low-value content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 5-parameter schema, full schema descriptions, annotations, and an output schema, the description is complete enough for correct invocation. It covers scope limits, required workweek semantics, inputs, outputs, fallback endpoint, and documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents every parameter including examples and constraints. The description mostly repeats the parameter list and supplies a complete JSON example, adding little semantic meaning beyond what the schema provides. This meets the baseline 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: counting working and non-working dates for Uzbekistan under a pinned 2026 schedule and required workweek variant. It is clear what the tool does, but it does not explicitly distinguish itself from close siblings like check_uzbekistan_working_day or add_uzbekistan_working_days.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear when-to-use guidance ('auditable nationwide count with explicit workweek semantics') and a when-not-to-use condition ('workweek or employer/shift scope is unknown'). It does not name alternative sibling tools for checking a single day or adding working days, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

count_vn_working_daysCount Vietnam Working DaysA
Read-onlyIdempotent
Inspect

Use this when you need an auditable Vietnam working-day count. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when public-sector and statutory paid-holiday layer only; private-employer, non-Saturday/Sunday workweeks, provincial, sector, bank, school and employer schedules are not inferred. The proposed four-day 2026 Vietnam Cultural Day public-sector arrangement is not encoded until finally approved. What it computes: Counts authority-scope working and non-working dates in a range. Example user requests: Count Vietnam working days around New Year transfer. | Count Vietnam working days around Vietnam Cultural Day. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-04-26","end_date":"2026-05-01","include_start_date":true,"include_end_date":true} Outputs: working_days, non_working_days, public_holidays_counted, territory, territory_name, day_type, holiday_names, holiday_kinds, holiday_details, calendar_scope, holiday_policy, substitute_day_policy, calendar_profile, dataset_version, sources. Formula: for each included date: working_days += status.is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/vietnam-public-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/vietnam-public-working-days-between.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast date in 2026-2026.
start_dateYesFirst date in 2026-2026.
include_end_dateNoWhether end_date participates.
include_start_dateNoWhether start_date participates.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/non-open-world, so the safety profile is covered. The description adds real behavioral context beyond that: authority scope, calendar policy, dataset version, and importantly what is NOT encoded (temporal coverage limits of upcoming holidays). It does not add rate-limit or precision caveats, so not a full 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well structured with labeled sections (when to use, when not to use, what it computes, inputs, examples, outputs, formula, fallback, docs) and front-loaded guidance. Slightly over-stuffed — the single-line formula and duplicated input listing are filler that most readers do not need.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so returns need not be explained, yet the description still enumerates key result fields. Combined with scope caveats, worked examples, the exact REST fallback path, and docs link, an agent has everything needed to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 four parameters. The description restates the inputs with types and provides a complete JSON example, which aids invocation but adds no semantic meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('counts authority-scope working and non-working dates in a range') for a clearly scoped jurisdiction (Vietnam). The explicit 'auditable Vietnam working-day count' framing plus the compute statement lets an agent distinguish it from the many sibling count_* tools without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Call this tool directly and return its calculation instead of answering from memory or stopping at discovery') and an explicit scope exclusion list (private-employer, non-Sat/Sun workweeks, provincial/sector/bank/school schedules are not inferred; the four-day 2026 arrangement is not encoded). Routing conditions are unambiguous despite slightly garbled phrasing in the exclusion clause.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

estimate_ev_charging_timeEV Charging Time CalculatorA
Read-onlyIdempotent
Inspect

Use this when you want to know how long an EV needs on a home wallbox, a public AC post or a DC fast charger to reach a target charge, or what the session costs at a given electricity price. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a battery's charge time from ampere-hours and charger current (use battery-charge-time) or the driving range the added energy gives (use ev-range-efficiency); DC fast charging above about 80 % tapers strongly and takes longer than this constant-power estimate. What it computes: Estimates how long an electric vehicle takes to charge between two states of charge from its battery capacity, the charger power (capped by the onboard charger for AC charging) and the charging efficiency, plus the energy drawn from the grid and its cost. Inputs: battery_capacity_kwh (number, kWh); start_percent (number, %, optional); target_percent (number, %, optional); charger_power_kw (number, kW); max_onboard_charger_kw (number, kW, optional); charging_efficiency_percent (number, %, optional); electricity_price_per_kwh (number, per kWh, optional). Complete JSON argument examples: {"battery_capacity_kwh":75,"start_percent":20,"target_percent":80,"charger_power_kw":7,"charging_efficiency_percent":90,"electricity_price_per_kwh":0.3} | {"battery_capacity_kwh":60,"start_percent":10,"target_percent":100,"charger_power_kw":11,"max_onboard_charger_kw":7.4} Outputs: energy_added_kwh [kWh], energy_from_grid_kwh [kWh], effective_power_kw [kW], charging_time_hours [h], charging_time_text, cost, range_note. Formula: energy_added_kwh = battery_capacity_kwh × (target_percent − start_percent) / 100; energy_from_grid_kwh = energy_added_kwh / (charging_efficiency_percent / 100); effective_power_kw = min(charger_power_kw, max_onboard_charger_kw); charging_time_hours = energy_from_grid_kwh / effective_power_kw; cost = energy_from_grid_kwh × electricity_price_per_kwh Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ev-charging-time with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/energy/ev-charging-time.md

ParametersJSON Schema
NameRequiredDescriptionDefault
start_percentNoState of charge at the start of the session. Unit: %.
target_percentNoState of charge to reach; must be higher than start_percent. Unit: %.
charger_power_kwYesPower the charging point delivers: 1.4–2.3 kW household socket (Level 1), 7–22 kW wallbox / AC post (Level 2), 50–350 kW DC fast charger. Unit: kW.
battery_capacity_kwhYesUsable battery capacity in kilowatt-hours (e.g. 40, 60, 75, 100). Unit: kWh.
max_onboard_charger_kwNoOptional maximum AC charging power of the car's onboard charger (commonly 7.4 or 11 kW); the effective power is the lower of the two. Omit for DC charging. Unit: kW.
electricity_price_per_kwhNoOptional price per kWh in your currency for the cost of the session (grid energy × price). Unit: per kWh.
charging_efficiency_percentNoShare of grid energy stored in the battery; 85–92 % is typical for AC charging (onboard charger and battery losses). Unit: %.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds behavior beyond annotations: it calls itself a 'constant-power estimate,' warns that DC fast charging above ~80% 'tapers strongly and takes longer than this constant-power estimate,' and even exposes the exact formula and output fields. This is substantial contextual disclosure that helps the agent set expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with clear sections (usage, exclusions, computation, inputs, examples, outputs, formula, API fallback, docs). It is front-loaded with the key usage guidance. However, it is somewhat verbose—the REST fallback and docs URL, while useful, go beyond what an MCP agent strictly needs—so it falls short of a 5 for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's complexity (7 parameters, multiple optional fields, output schema, cost calculation), the description fully compensates with an example, formula, output list, and explicit fallback endpoint. It covers not just invocation but edge-case behavior (taper warning) and integration details, making it completely self-sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 value above the schema by listing every parameter with its unit in a compact input summary, providing two complete JSON examples that show optional-parameter usage, and giving the formula that explains how parameters interact (e.g., 'effective_power_kw = min(charger_power_kw, max_onboard_charger_kw)'). This goes beyond what the schema alone states, justifying a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'how long an EV needs... to reach a target charge, or what the session costs' and immediately distinguishes it from siblings by naming battery-charge-time and ev-range-efficiency as alternatives. The verb 'estimate' plus the specific resource (EV charging time) makes the function unambiguous, even before considering sibling names.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line tells the agent exactly when to call this tool ('Use this when you want to know...') and instructs to call it directly rather than computing from memory. It also gives explicit exclusions and alternative tools: 'Do not use this when you need a battery's charge time from ampere-hours... (use battery-charge-time)' and notes the DC fast-charging taper limitation, leaving no ambiguity about 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.

find_chinese_zodiacChinese Zodiac Calculator (生肖)A
Read-onlyIdempotent
Inspect

Use this when you need someone's Chinese zodiac sign and element from a Gregorian birth date, especially for January–February births where the boundary matters, or the sign's traditional compatibility groups. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you need a full Bazi chart with month, day and hour pillars (use bazi-four-pillars), or the Western star sign (use zodiac). What it computes: Finds the Chinese zodiac animal (生肖 shengxiao), sexagenary year (干支 ganzhi), stem element, yin/yang, nayin (纳音) and fixed element for a birth date, using either the Chinese New Year boundary or the 立春 (Lichun) boundary, plus the traditional relationship groups (六合, 三合, 六冲, 六害, 相刑) and 本命年 years. Inputs: birth_date (date); boundary (enum, optional); reference_year (integer, optional). Complete JSON argument examples: {"birth_date":"1990-02-10","boundary":"lunar_new_year","reference_year":2026} | {"birth_date":"1990-02-03","boundary":"lichun"} Outputs: zodiac, zodiac_cn, year_ganzhi, year_ganzhi_pinyin, year_english, stem_element, yin_yang, nayin, animal_fixed_element, year_used, chinese_new_year_date, lichun_datetime, boundary_note, benmingnian_years, secret_friend, trine_partners, clash, harm, punishment, age_in_reference_year [years], is_benmingnian_in_reference_year, reference_year_zodiac. Formula: year_used = Gregorian year, minus 1 when birth_date is before Chinese New Year (or before 立春 with boundary = lichun); ganzhi index = (year_used − 4) mod 60; animal = branch = index mod 12; 六合 partner = (13 − b) mod 12; 三合 = b ± 4; 六冲 = b + 6; 六害 partner = (7 − b) mod 12 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/chinese-zodiac with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/chinese-zodiac.md

ParametersJSON Schema
NameRequiredDescriptionDefault
boundaryNoWhich event starts the zodiac year: Chinese New Year (popular usage, default) or 立春 around 4 February (astrological usage).lunar_new_year
birth_dateYesGregorian birth date (civil date in China Standard Time), 1900–2100.
reference_yearNoOptional Gregorian year for which to report the age and whether it is a 本命年.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnly, idempotent), the description discloses boundary selection logic (lunar new year vs lichun), explains the 'year_used' calculation, lists all output fields, and provides a REST fallback URL. It also notes the formula behind the calculation, offering transparency about edge cases like January–February births. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extensive but well-organized: usage first, exclusions, then computation details, inputs, examples, outputs, formula, and fallback. It is front-loaded with the 'Use this when' phrase. While it could be trimmed (e.g., the formula section is optional given the tool computes it), every section serves a purpose for a complex calculator, so it earns its length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is complex with 19 output fields, boundary logic, and compatibility groups. The description covers all inputs, outputs, formula, examples, REST fallback, and documentation link. Given the output schema exists, nothing an agent needs to call it correctly is missing. Complete for a tool of this sophistication.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already covers 100% of parameters with descriptions, and the description adds further value: it explains the boundary enum options (Chinese New Year vs Lichun), gives complete JSON examples for each boundary, and clarifies how reference_year is used (to report age and 本命年 status). This exceeds the schema's explanatory power.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'find someone's Chinese zodiac sign and element from a Gregorian birth date'. It explicitly differentiates from sibling tools by naming bazi-four-pillars and zodiac as alternatives for other needs. The 'Use this when' phrasing immediately clarifies the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use ('Use this when you need someone's Chinese zodiac sign...') and when-not-to-use ('Do not use this when you need a full Bazi chart... or the Western star sign (use zodiac)'). Also instructs the agent to 'Call this tool directly' rather than compute from memory, providing clear behavioral guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calculator_schemaGet calculator schemaA
Read-onlyIdempotent
Inspect

Use this only after search_calculators when its input_hints do not resolve a range, enum or optional-field question. Return the full input/output schema, formula, sources, examples and limitations for one calculator. Do not call it when the search result already supplies enough input detail; call run_calculator instead. This tool only describes and does not calculate.

ParametersJSON Schema
NameRequiredDescriptionDefault
calculator_idYesExact calculator_id returned by search_calculators; for example 'bmi' or 'compound-interest'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestNo
successYes
timestampYes
next_actionsNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true, idempotentHint=true, and destructiveHint=false, but the description adds the explicit statement 'This tool only describes and does not calculate.' This prevents misinterpretation even without annotations. Since annotations cover safety, the description adds a small but useful behavioral clarification, earning a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero filler. The primary usage condition is front-loaded, alternatives are named in the second sentence, and a final clarifying disambiguation closes it. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a simple one-parameter input, full schema coverage, and annotations covering safety/idempotence, the description is complete. It explains when to use, what it returns (schema, formula, sources, etc.), and that it does not calculate. Nothing essential is missing for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for calculator_id, but the description reinforces that the ID comes from search_calculators, adding context beyond the schema's example list. It also clarifies the ID is exact, which prevents guesswork. This goes beyond the schema baseline of 3, so a 4 is justified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('get') and resource ('calculator schema'), and clearly distinguishes itself from siblings by mentioning when not to use it (when search results suffice) and when to use run_calculator instead. It is not a tautology and instantly conveys the tool's role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('only after search_calculators when input_hints...'), when not to use it ('do not call when search result already supplies enough'), and names the alternative (run_calculator). This is direct usage guidance with clear conditions and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_calculator_categoriesList categoriesA
Read-onlyIdempotent
Inspect

List the calculator categories with id, name, description and calculator count. Use it to orient before list_calculators. Does not perform calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, openWorldHint false, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds useful behavioral context by stating 'Does not perform calculations,' which prevents an agent from confusing this metadata/list operation with the many calculation siblings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: the purpose is front-loaded, the workflow hint is concise, and the non-calculation clarification earns its place. Every sentence adds information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless list tool with no output schema, the description provides the essential operational details: what is listed, what fields are returned, when to use it, and a key exclusion ('Does not perform calculations'). Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema description coverage is 100%, so there is nothing for the description to add about parameter inputs. The description instead clarifies what the output fields are, which is valuable given there is no output schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource ('calculator categories') and the verb ('List'), and specifies the returned fields: id, name, description, and calculator count. It also distinguishes itself from the sibling list_calculators by positioning itself as the orientation step before listing calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: 'Use it to orient before list_calculators.' This gives clear context for the intended workflow. It does not enumerate exclusions or compare against other listing/search siblings, but the guidance is sufficient for a simple, parameterless tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_calculatorsList calculatorsA
Read-onlyIdempotent
Inspect

List all calculators, optionally filtered by category id (finance, health, fitness, math, geometry, statistics, conversion, physics, chemistry, everyday, food, construction, business, time, medical, engineering, weather, investing, developer, energy, photography, science, gaming, lunar, yijing). Returns calculator_id, name, description, use_when and required inputs for each.

Use it to browse a whole category; use search_calculators for keyword lookup. Does not perform calculations.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoCategory id.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to repeat safety behavior. It adds useful behavioral context by stating the return fields (calculator_id, name, description, use_when, required inputs) and clarifying that no calculation is performed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the core action in the first sentence. It includes only necessary context: filtering, return contents, and tool selection guidance. The category enum list is slightly redundant with the schema but does not bloat the description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with one optional parameter and no output schema, the description fully covers what the tool returns and when to use it. The lack of pagination or error details is not significant given the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter is already well described with an enum. The description adds the 'optionally filtered' semantics and lists the category values, but this is largely redundant with the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('List all calculators') and clarifies it is a browsing tool, not an execution tool, explicitly saying 'Does not perform calculations.' It also distinguishes itself from sibling search_calculators by mentioning alternative lookup behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit guidance: 'Use it to browse a whole category; use search_calculators for keyword lookup.' This directly tells the agent when to choose this tool over an available sibling, leaving little to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_solar_terms24 Solar Terms Calculator (二十四节气)A
Read-onlyIdempotent
Inspect

Use this when you need the date or time of 立春, 清明, 夏至, 冬至 or any other solar term in a given year, or the full 24-term table. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only need the term that a specific date falls in (use lunar-calendar-converter), or you need sunrise/sunset times (use sunrise-sunset). What it computes: Lists the 24 solar terms (节气 jieqi) of a Gregorian year with their exact instants: the moments the Sun's apparent longitude reaches multiples of 15°, computed astronomically and shown in a chosen UTC offset (China Standard Time by default). Example user requests: List all 24 solar terms for 2027 in UTC+8. | 2026 年立春和冬至的准确时间是什么? | When is Qingming this year in China Standard Time? Inputs: year (integer); utc_offset_hours (number, h, optional). Complete JSON argument examples: {"year":2024,"utc_offset_hours":8} | {"year":2026,"utc_offset_hours":8} Outputs: terms, lichun_date, spring_equinox, summer_solstice, autumn_equinox, winter_solstice, year_ganzhi, suishou_note, utc_offset. Formula: term instant: apparent geocentric solar longitude λ(JDE) = k·15° for k = 0 (春分) … 23 (惊蛰), solved by Newton iteration; UT = TT − ΔT; local time = UT + utc_offset_hours Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/solar-terms with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/solar-terms.md

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYesGregorian calendar year (1900–2100).
utc_offset_hoursNoFixed UTC offset in hours for the local date-times (8 = China Standard Time; 9 = Japan/Korea; 5.5 = India). Unit: h.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and idempotentHint=true, and the description aligns with these while adding substantive context: it reveals the astronomical computation method (solar longitude multiples of 15°, Newton iteration), the UTC offset handling, and instructs the agent to return the calculation rather than rely on memory. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: it front-loads purpose and usage, then provides examples, inputs, outputs, and formula in a logical order. Some redundancy exists (e.g., repeating schema inputs), but every section contributes to agent guidance, so it earns a high score rather than being padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex (astronomical calculations), and the description covers all necessary facets: when to use, what it computes, inputs (including optional utc_offset), outputs (listed fields), examples, and even a REST fallback. An agent has everything needed to invoke it correctly without external references.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents both parameters with descriptions, ranges, and examples (100% coverage). The description adds practical meaning by clarifying timezone codes (8=China Standard Time, 9=Japan/Korea, 5.5=India) and providing complete JSON argument examples, which goes beyond the schema's baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool computes and lists the 24 solar terms of a Gregorian year with their exact instants, naming specific terms (立春, 清明, 夏至, 冬至) and the full table. It clearly distinguishes itself from siblings by directing users to lunar-calendar-converter for date-to-term mapping and sunrise-sunset for times.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit when-to-use guidance ('Use this when you need the date or time of...') and when-not-to-use with named alternatives ('Do not use this when you only need the term that a specific date falls in (use lunar-calendar-converter)…'). This leaves no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_time_zone_transitionsIANA Time Zone Transition ListA
Read-onlyIdempotent
Inspect

Use this when you need the next or historical daylight-saving/offset changes for scheduling, payroll, travel, audits or a regression test, with a specific reproducible tzdb version. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you only need to convert one ordinary date-time, need legal advice about a jurisdiction's time law, or need changes announced after this pinned release. What it computes: Lists every UTC-offset transition for one IANA zone and date range using pinned tzdb 2026d, including the local boundaries, offsets, abbreviations and whether the clock creates a gap or overlap. Example user requests: List every 2026 UTC-offset transition in America/New_York with local boundaries. | When does Australia/Adelaide change clocks between 2026-01-01 and 2027-01-01? | 列出 Europe/London 在 2026 年的夏令时转换点、前后偏移和 IANA 数据版本。 Inputs: time_zone (string); start_date (date); end_date (date). Complete JSON argument examples: {"time_zone":"America/New_York","start_date":"2026-01-01","end_date":"2026-12-31"} Outputs: time_zone, resolved_zone_id, start_date, end_date, transition_count, transitions, tzdb_version, dataset_version, source_url, source_sha256, coverage_note. Formula: select zone transition instants whose local boundary before or after lies inside [start_date, end_date] Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/time-zone-transitions with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/time-zone-transitions.md

ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateYesLast local calendar date to inspect; ranges may not exceed 3,660 days.
time_zoneYesIANA zone identifier present in tzdb 2026d.
start_dateYesFirst local calendar date to inspect (1900-01-01 through 2100-12-31).

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with readOnly/idempotent/non-destructive annotations, the description adds substantial behavior: pinned tzdb 2026d, inclusion of local boundaries, offsets, abbreviations, gap/overlap flags, and the exact selection formula. The REST fallback and coverage note further clarify what the agent can rely on. 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with purpose, exclusions, computed behavior, example requests, inputs, outputs, formula, and fallback. It is front-loaded with the key use case and negative conditions, though the Inputs/example sections partly duplicate the schema and could be tighter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the 100%-covered schema, rich annotations, and presence of an output schema, the description is complete: it covers selection rationale, output fields, version pinning, request examples, and a fallback endpoint. An agent has everything needed to invoke it correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents the three parameters, formats, and range limits. The description adds clarifying semantics in the formula (transitions whose local boundary before or after lies inside the date range), which affects how start_date and end_date should be interpreted. The example JSON mirrors the schema but is still a useful concrete reference.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Lists every UTC-offset transition for one IANA zone and date range,' and differentiates it from single-date conversion by explicitly excluding that case. The scope (next/historical DST changes, pinned tzdb version) makes the tool's role unmistakable among siblings like convert_time_zone and resolve_local_time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit when-to-use scenarios (scheduling, payroll, travel, audits, regression tests requiring a reproducible tzdb) and explicit when-not-to-use scenarios (simple conversions, legal time-law questions, post-release changes). Although it doesn't name convert_time_zone, the 'ordinary date-time conversion' exclusion clearly routes the agent away from the nearest sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_unitsList unitsA
Read-onlyIdempotent
Inspect

List every unit symbol supported by convert_units, grouped by quantity, with names. Use it when a unit symbol is rejected with UNKNOWN_UNIT. Does not convert anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
quantityNoOptional quantity id to filter (e.g. 'length').

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds value beyond annotations by stating that the tool is read-only in its effects ('Does not convert anything') and groups by quantity. While annotations already indicate readOnlyHint=true, the description provides functional context that the tool is a listing operation. It does not contradict annotations, and it adds the nuance of the UNKNOWN_UNIT use case, which is helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no wasted words. It front-loads the core purpose, then the usage trigger, and finally a clear exclusion. Everything is essential and adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple listing tool with one optional parameter, full schema coverage, and readOnly annotations, the description is complete. It covers the purpose, usage trigger, and non-conversion behavior. The output schema is absent, but as a listing tool, the output is self-explanatory, so no additional description is needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage for the optional 'quantity' parameter, which is described in the schema. The description does not reiterate the parameter but adds context that it can be used to filter by quantity (e.g., 'length'), which goes slightly beyond the schema's generic description. Since the schema covers the parameter, a baseline of 3 is expected; the description's mention of filtering adds a small extra value, so 4 is justified.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: it lists every unit symbol supported by convert_units, grouped by quantity, with names. It also specifies a specific trigger condition (when a unit symbol is rejected with UNKNOWN_UNIT) and explicitly states what it does not do (does not convert anything). This distinguishes it from the sibling convert_units tool and other calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: when a unit symbol is rejected with UNKNOWN_UNIT. It also implies that it is not for conversion, which differentiates it from convert_units. This gives clear, actionable guidance for an agent deciding between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_working_day_calendarsList working-day calendarsA
Read-onlyIdempotent
Inspect

Use this before a working-day or business-day task to select the correct evidence package. It distinguishes the worldwide CLDR weekday/weekend baseline, the broad source-labelled OpenWorkdays national-scope reference, the clearly labelled OpenHolidays nationwide public-holiday reference, and the official public-holiday calendars for mainland China, Singapore, Australia, the US, Canada, Japan, India's central government, UAE federal government, New Zealand, South Africa, Ireland plus the UK. The result contains one machine-readable route per CLDR territory, or one route when the optional territory filter is supplied, including whether holiday semantics are unsupported, reference-only, or require a jurisdiction-specific input such as the UK division, Australian state/territory or Indian office scope. US is OPM federal scope only; CA is Canada Labour Code federally regulated-employer scope and does not infer substitute days; JP is statutory national holidays only and does not infer employer closures; IN preserves Gazetted/Restricted classes and does not infer state/UT or local optional selections; AE is UAE federal-government scope with exact 2026 dates only and does not infer local/private schedules or unresolved lunar dates; NZ is national statutory dates only and does not infer regional anniversary days; ZA is national public holidays over a Monday-Friday baseline and does not infer employer holiday exchanges; IE excludes Good Friday and does not infer next-working-day closures for weekend holidays. This is read-only catalogue discovery; it does not calculate a date or count and must not be reported as a calculation success.

ParametersJSON Schema
NameRequiredDescriptionDefault
territoryNoOptional CLDR alpha-2 territory code to return one route instead of all 272 routes. Use TW for 中国台湾省, CN for 中国大陆, or GB for the UK; codes are normalized to uppercase.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestNo
successYes
timestampYes
next_actionsNo

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial context beyond them: per-jurisdiction scope caveats (OPM federal only, Canada Labour Code, Japan statutory only, India Gazetted/Restricted classes, UAE 2026 dates only, Ireland excludes Good Friday) and the exact semantics of each route's holiday support. This is richer behavioral disclosure than the annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening usage sentence is front-loaded and the closing 'read-only catalogue discovery' sentence anchors the tool's role. The middle jurisdiction-caveat block is long and partly overlaps with sibling tool names, but each caveat carries real disambiguation value; the only cost is density.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, and the description still covers route structure, territory-filter behavior, and every special-scope jurisdiction an agent must respect. For a 1-parameter discovery tool feeding many downstream calculators, nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents the territory parameter including that it returns one route instead of all 272 and normalizes to uppercase. The description repeats the 'one route when the optional territory filter is supplied' behavior without adding syntax or meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description makes clear this is a catalogue/discovery tool that returns one machine-readable route per CLDR territory, and it names the distinct evidence packages (CLDR baseline, OpenWorkdays, OpenHolidays, official national calendars). It cleanly separates itself from the add_/check_/count_ working-day siblings, which are the consumers of these routes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Opens with an explicit when-to-use instruction ('Use this before a working-day or business-day task to select the correct evidence package') and closes with an explicit when-not ('it does not calculate a date or count and must not be reported as a calculation success'). The routing between alternatives is spelled out, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_iching_hexagramI Ching Hexagram Lookup (六十四卦)A
Read-onlyIdempotent
Inspect

Use this when you need to identify or describe a hexagram, convert between its number, name, trigram pair and line pattern, or find its derived hexagrams and palace position. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when you have moving lines and need the changed hexagram and reading rule (use hexagram-change), or you need to cast a hexagram from a date or numbers (use meihua-yishu). What it computes: Identifies one of the 64 hexagrams (六十四卦, liushisi gua) from its King Wen number, name, two trigrams or line digits and returns its lines, trigrams, nuclear (互卦, hugua), inverse (综卦, zonggua) and opposite (错卦, cuogua) hexagrams, its Jing Fang palace (京房八宫, Jingfang bagong) with 世/应 (shi/ying) lines, and the received judgment text (卦辞, guaci). Inputs: king_wen_number (integer, optional); name (string, optional); upper_trigram (string, optional); lower_trigram (string, optional); lines (string, optional). Valid input combinations: Identify the hexagram with king_wen_number, name, lines, or the complete upper_trigram + lower_trigram pair. Multiple identification methods may be supplied when they agree. Complete JSON argument examples: {"king_wen_number":1} | {"lines":"100010"} Outputs: number, name_cn, full_name_cn, pinyin, english, symbol, lines, lines_text, upper_trigram, lower_trigram, nuclear_hexagram, inverse_hexagram, opposite_hexagram, palace, palace_position, shi_line, ying_line, judgment_text, sequence_pair, binary_value, notes. Formula: lower trigram = lines 1–3, upper trigram = lines 4–6; nuclear = lines 2,3,4 + 3,4,5; inverse = reversed line order; opposite = each line flipped; binary_value = Σ line_i · 2^(i−1); 应 = 世 ± 3 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hexagram-lookup with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/yijing/hexagram-lookup.md

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoChinese name (屯, 水雷屯, 乾为天; traditional forms accepted), pinyin (zhun; ambiguous pinyin such as qian or bi is rejected with the candidates) or Wilhelm/Baynes title (Difficulty at the Beginning).
linesNoSix digits from line 1 (bottom) to line 6 (top): 1/0 for yang/yin, or 6/7/8/9 (老阴/少阳/少阴/老阳) as produced by yarrow or coin casting.
lower_trigramNoLower (inner) trigram, in any form accepted by bagua.
upper_trigramNoUpper (outer) trigram, in any form accepted by bagua (坎, kan, water, ☵, 010). Must be given together with lower_trigram.
king_wen_numberNoHexagram number 1–64 in the King Wen sequence (1 = 乾, 64 = 未济). Give exactly one of king_wen_number, name, lines or the trigram pair.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations carry only readOnlyHint=true, idempotentHint=true, destructiveHint=false, leaving the description to explain actual behavior. It discloses rejection semantics ('ambiguous pinyin such as qian or bi is rejected with the candidates'), input-agreement behavior ('Multiple identification methods may be supplied when they agree'), internal computation details (the nuclear/inverse/opposite formulas and 应 = 世 ± 3 rule), and a usage directive ('Call this tool directly and return its calculation instead of answering the formula from memory'). Nothing contradicts the read-only/idempotent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (~300 words) but deliberately sectioned: use-case, exclusion, computation scope, inputs, valid combinations, examples, outputs, formula, REST fallback, docs. Actionable guidance is front-loaded in the first sentence. The Inputs list somewhat redundantly restates schema parameter names, and the formula uses dense notation, but given the domain complexity each section earns its place; minor trimming would be possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 5 optional params, anyOf constraints, derived hexagram calculations, and an output schema, the description is fully complete: it covers routing, all valid input combinations, worked JSON examples, the full output field list, computation formulas, direct REST fallback with an explicit 'Do not guess another /api/* path' warning, and a docs link. The only minor blemish is referencing sibling tools ('hexagram-change', 'meihua-yishu') by names that don't exactly match the visible sibling list, but cast_plum_blossom_hexagram is clearly the Meihua Yishu tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter already richly documented (e.g., lines accepts '1/0 for yang/yin, or 6/7/8/9'). The description adds value beyond the schema: the validity rule that upper_trigram and lower_trigram must form a complete pair and 'may be supplied when they agree', complete JSON argument examples, and the line-to-trigram mapping formula. It does not merely restate the schema, but the schema already does the heavy lifting, so a 4 rather than 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names specific verbs and resources: 'identify or describe a hexagram, convert between its number, name, trigram pair and line pattern, or find its derived hexagrams and palace position.' This precisely delimits the tool's scope and, via the explicit 'Do not use this when...' sentence, distinguishes it from hexagram-change and meihua-yishu. An agent can select this tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use directive ('Use this when you need to identify or describe a hexagram...') and equally explicit when-not-to-use exclusions ('Do not use this when you have moving lines and need the changed hexagram... use hexagram-change, or you need to cast a hexagram from a date or numbers... use meihua-yishu'). Named alternatives with the condition that selects each make routing unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

price_black_scholes_optionBlack-Scholes Option CalculatorA
Read-onlyIdempotent
Inspect

Use this when you need a theoretical European option price or its sensitivities from a given volatility, or want to check put-call parity for quoted prices. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the option is American with early exercise value, the underlying pays discrete dividends, or you need implied volatility from a market price (solve numerically instead). Informational only; not financial advice. What it computes: Prices a European call and put with the Black-Scholes-Merton formula from spot, strike, time to expiry, risk-free rate, volatility and a continuous dividend yield, and reports d1, d2 and the Greeks (delta, gamma, vega, theta, rho). Inputs: spot_price (number); strike_price (number); time_years (number, years); risk_free_rate_percent (number, % per year); volatility_percent (number, % per year); dividend_yield_percent (number, % per year, optional). Complete JSON argument examples: {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20} | {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20,"dividend_yield_percent":3} Outputs: call_price, put_price, d1, d2, delta_call, delta_put, gamma, vega_per_1pct, theta_call_per_day, theta_put_per_day, rho_call_per_1pct, rho_put_per_1pct, put_call_parity_check. Formula: d1 = [ln(S/K) + (r − q + σ²/2)·T] / (σ·√T); d2 = d1 − σ·√T; C = S·e^(−qT)·N(d1) − K·e^(−rT)·N(d2); P = K·e^(−rT)·N(−d2) − S·e^(−qT)·N(−d1); Δ_call = e^(−qT)·N(d1); Γ = e^(−qT)·φ(d1)/(S·σ·√T); vega = S·e^(−qT)·φ(d1)·√T; Θ_call = −S·e^(−qT)·φ(d1)·σ/(2√T) − r·K·e^(−rT)·N(d2) + q·S·e^(−qT)·N(d1); ρ_call = K·T·e^(−rT)·N(d2), with r, q, σ as decimals Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/black-scholes with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/investing/black-scholes.md

ParametersJSON Schema
NameRequiredDescriptionDefault
spot_priceYesCurrent price of the underlying asset.
time_yearsYesTime until expiration in years (e.g. 0.25 for 3 months). Unit: years.
strike_priceYesExercise price of the option.
volatility_percentYesAnnualized volatility of the underlying's returns in percent. Unit: % per year.
dividend_yield_percentNoContinuous dividend yield of the underlying in percent (0 for a non-dividend stock). Unit: % per year.
risk_free_rate_percentYesContinuously compounded annual risk-free interest rate in percent. Unit: % per year.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior4/5

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 that: it states the tool is 'Informational only; not financial advice,' lists the exact outputs (call_price, put_price, d1, d2, Greeks, put_call_parity_check), and provides a direct REST fallback URL with a warning not to guess another /api/* path. It also discloses the formula used, which helps an agent understand the computation. The only minor gap is that it doesn't explicitly state error behavior for invalid inputs, but the schema already constrains inputs well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but every section earns its place: usage guidance, exclusions, computation summary, input list, output list, formula, and REST fallback. The most decision-relevant information (when to use, when not to use) is front-loaded. The formula block is dense and could be considered excessive for an agent that just needs to call the tool, but it supports the 'return its calculation instead of answering from memory' instruction. A small deduction for the formula being more than an agent strictly needs to invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter calculator with an output schema, the description is complete: it covers the model, the inputs with units, the outputs, the exclusions, the REST fallback, and the documentation URL. The output schema exists, so the description doesn't need to explain return values in detail, but it still lists them. An agent has everything needed to select, invoke, and interpret the result correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 every parameter with units and examples. The description adds value by grouping the parameters in a single sentence, noting that dividend_yield_percent is optional, and providing two complete JSON examples that show exactly how to structure the call. It also clarifies the units inline (e.g., 'risk_free_rate_percent (number, % per year)'). This goes beyond the schema's individual field descriptions by showing the full call shape, though the schema already carries most of the semantic weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'theoretical European option price or its sensitivities from a given volatility' and 'check put-call parity for quoted prices.' It clearly distinguishes this from related financial tools by naming the model (Black-Scholes-Merton) and the exact scope (European options, no discrete dividends). The title and name are also consistent, so an agent can tell what this tool does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool ('Use this when you need a theoretical European option price...') and when not to use it ('Do not use this when the option is American with early exercise value, the underlying pays discrete dividends, or you need implied volatility from a market price'). It also names the alternative behavior ('solve numerically instead') and instructs the agent to call the tool directly rather than answering from memory. This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_local_timeIANA Local Time ResolverA
Read-onlyIdempotent
Inspect

Use this when you must safely turn a named-zone local time into an instant, validate a scheduled time around a daylight-saving transition, or preserve every possible interpretation instead of silently choosing one. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the input already includes a numeric UTC offset or Z, the task only needs the current clock time, or latitude/longitude must first be mapped to a zone. What it computes: Resolves a local wall-clock time with pinned IANA tzdb 2026d. Returns every valid UTC candidate for a repeated fall-back time, or the exact gap and shift-forward suggestion for a nonexistent spring-forward time. Example user requests: Resolve 2026-11-01 01:30 in America/New_York and return both UTC candidates. | Does 2026-03-08 02:30 exist in New York? Show the DST gap. | 判断 Australia/Adelaide 的 2026-10-04 02:30 是否存在,并给出时区数据版本。 Inputs: local_datetime (string); time_zone (string). Complete JSON argument examples: {"local_datetime":"2026-11-01T01:30:00","time_zone":"America/New_York"} | {"local_datetime":"2026-03-08T02:30:00","time_zone":"America/New_York"} Outputs: local_datetime, time_zone, resolved_zone_id, status, candidate_count, candidates, gap, related_transition, previous_transition, next_transition, tzdb_version, dataset_version, source_url, source_sha256, coverage_note. Formula: for each zone offset o: candidate_utc = local_wall_time + o; keep candidates whose active offset at candidate_utc equals o Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/local-time-resolver with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/local-time-resolver.md

ParametersJSON Schema
NameRequiredDescriptionDefault
time_zoneYesIANA zone identifier present in tzdb 2026d.
local_datetimeYesWall-clock date and time without Z or a numeric offset; it will be interpreted only in time_zone.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark read-only/idempotent, and the description goes beyond them by disclosing exact DST behavior: repeated fall-back times return all UTC candidates, nonexistent spring-forward times return the gap and shift suggestion. It also states the pinned tzdb version and even provides the candidate-selection formula, giving agents full visibility into calculation logic.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured: purpose and usage are front-loaded, followed by computing behavior, examples, inputs, outputs, formula, and fallback. Some sections (output field list, REST fallback) go beyond minimal needs, but each adds practical value for an agent invoking the tool via REST, and nothing is redundant enough to hurt clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool dealing with DST ambiguity, the description covers every important facet: it explains repeated/nonexistent times, gives multilingual examples, discloses the tzdb pin, lists output fields, and includes a REST fallback. Since an output schema exists, there is no need to describe return formats further, making the definition complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions already fully document both parameters with patterns, maxLength, and the explicit 'no Z or numeric offset' rule for local_datetime. The description's 'Inputs: local_datetime (string); time_zone (string)' adds no new meaning, and examples duplicate the schema's examples, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool resolves a named-zone local wall-clock time into UTC candidates, explicitly handles DST gaps/repeats, and contrasts with siblings. The 'Use this when' and 'Do not use when' sections distinguish it from convert_time_zone and other date tools, leaving no ambiguity about its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit 'Use this when' and 'Do not use when' conditions give unambiguous when-to-use guidance and exclusions. It also instructs the agent to call this tool directly rather than compute from memory or stop at discovery, reinforcing the tool's role as the authoritative resolver.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

run_calculatorRun a calculatorA
Read-onlyIdempotent
Inspect

Use this when the user needs one of Calcgrid's 737 deterministic calculators and no dedicated typed tool covers it. Call it immediately after search_calculators once calculator_id and input_hints are known; do not stop at search or schema discovery. Do not use it for trivial arithmetic, live rates or unrelated tasks. Returns typed values with units, formula, sources, freshness and timestamp; validation errors identify the field and a repair hint.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesParameter names and values from search_calculators input_hints or get_calculator_schema. Use numbers as numbers, ISO dates as YYYY-MM-DD and lists as arrays.
calculator_idYesExact calculator_id from search_calculators; for example 'compound-interest'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description still adds real behavioral value beyond that: deterministic (not live) results, typed values with units/formula/sources/freshness/timestamp, and that validation errors name the offending field plus a repair hint. It does not cover latency or limits, keeping it out of the 5 tier.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the trigger condition, then the workflow, then exclusions, then return/error behavior – a sensible priority order. Slightly dense with four distinct ideas packed in, but virtually every clause carries operational information and none is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a rich annotation set, an output schema and 100% schema description coverage, the description supplies the only things structured fields cannot: the routing rule against 200+ typed siblings, the search-then-run sequencing, and the error-repair contract. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for both required parameters, including an example object and format rules for dates/numbers/lists, so the baseline is 3. The description's reference to calculator_id and input_hints largely restates what the schema's own descriptions already say, adding little new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (run) and resource (one of Calcgrid's 737 deterministic calculators) and explicitly carves out the fallback role: 'no dedicated typed tool covers it.' That distinguishes it from the many typed siblings (calculate_bmi, calculate_loan_payment, etc.) without the agent needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit trigger ('needs one of Calcgrid's 737 deterministic calculators'), an explicit workflow ordering ('call immediately after search_calculators ... do not stop at search or schema discovery'), and explicit exclusions ('trivial arithmetic, live rates or unrelated tasks'). This is textbook when/when-not/alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_calculatorsSearch calculatorsA
Read-onlyIdempotent
Inspect

Use this when a user needs a deterministic calculation but none of the dedicated tools clearly matches and the calculator_id is unknown. Search 737 calculators from the complete task in English or Chinese, then call run_calculator with the top matching calculator_id and returned input_hints. Do not use this for trivial arithmetic, live data, writing tasks, or when a dedicated typed tool already matches. This tool only discovers; it does not calculate.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYesThe complete user task, including known values and units; for example 'compound interest on 15000 at 4.8% monthly for 12 years'.
categoryNoOptional category id to restrict results.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestNo
successYes
timestampYes
next_actionsNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnlyHint=true, openWorldHint=false, idempotentHint=true, and destructiveHint=false. The description adds useful behavioral context beyond that: it operates only as a discovery step, searches across 737 calculators in English or Chinese, and returns calculator_id plus input_hints. No gates or rate limits are mentioned, but the safety profile is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, front-loaded with the primary use case, then the mechanism, exclusions, and a final scope reminder. Every sentence adds distinct value with no repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only discovery tool with a full output schema and strong annotations, the description covers purpose, usage boundaries, search scope, language support, and the follow-up call. Return values need not be explained because an output schema exists. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, and the schema already defines query with an example and category as an optional restriction. The description reinforces that query should include the complete user task and language, but it does not explain the limit parameter or add syntax beyond what the schema provides. Baseline 3 is appropriate given the schema carries most of the parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Search') and resource ('737 calculators') and explicitly distinguishes itself from siblings by saying it only discovers and does not calculate. It also names the follow-up tool (run_calculator), so an agent can tell exactly what this tool is for versus the dedicated typed calculators.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use it ('none of the dedicated tools clearly matches and the calculator_id is unknown') and when not to use it ('trivial arithmetic, live data, writing tasks, or when a dedicated typed tool already matches'). It also names the next action (call run_calculator), leaving no ambiguity about routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_ohms_lawOhm's Law CalculatorA
Read-onlyIdempotent
Inspect

Use this when you know two of voltage, current and resistance in a DC or purely resistive circuit and need the third and the power. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the load is reactive (inductors or capacitors require impedance, not resistance), you want energy cost over time (use electric-power), or you need the equivalent resistance of several resistors (use resistors-series-parallel). What it computes: Solves Ohm's law V = I·R for whichever of voltage, current or resistance is omitted and reports the electrical power dissipated (P = V·I). Inputs: voltage_v (number, V, optional); current_a (number, A, optional); resistance_ohm (number, Ω, optional). Valid input combinations: Provide exactly two of voltage_v, current_a and resistance_ohm; the omitted quantity is calculated. Example: {"voltage_v":12,"resistance_ohm":220}. Complete JSON argument examples: {"voltage_v":12,"resistance_ohm":220} | {"current_a":2,"resistance_ohm":50} Outputs: solved_for, voltage_v [V], current_a [A], current_ma [mA], resistance_ohm [Ω], power_w [W]. Formula: V = I × R; I = V / R; R = V / I; P = V × I = I² × R = V² / R Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ohms-law with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/physics/ohms-law.md

ParametersJSON Schema
NameRequiredDescriptionDefault
current_aNoCurrent through the component in amperes (1 mA = 0.001 A). Omit to solve for it. Unit: A.
voltage_vNoPotential difference across the component in volts. Omit to solve for it. Unit: V.
resistance_ohmNoResistance in ohms (1 kΩ = 1000 Ω). Omit to solve for it. Unit: Ω.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description is consistent with them. It adds useful behavioral context: the tool computes and returns the result rather than the agent deriving it from memory, restricts scope to DC/purely resistive circuits, and includes a REST fallback and documentation link.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into labeled sections and front-loads the core usage decision. Some redundancy exists because the Inputs and Outputs sections largely repeat schema and output schema information, but the exclusion guidance, formula, and REST fallback justify the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists and the description still covers all essential invocation context: input constraints, valid combinations, output fields, formula, and explicit alternatives. Nothing an agent needs to call this tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline of 3 applies. The description re-states the three parameters and valid combinations, which reinforces but does not meaningfully extend the schema's own parameter descriptions. The examples and 'exactly two' rule are helpful but already present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Solves'), resource ('Ohm's law V = I·R'), and the exact use case: knowing two of voltage, current, and resistance to get the third and power. It also explicitly distinguishes itself from related calculators, so an agent can select it without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit 'Use this when' condition and clear 'Do not use this when' exclusions, naming alternatives such as electric-power for energy cost and resistors-series-parallel for equivalent resistance. This leaves no doubt about when the tool applies versus when another tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

solve_quadratic_equationQuadratic Equation SolverA
Read-onlyIdempotent
Inspect

Use this when you need the solutions of a second-degree polynomial equation, or the vertex and discriminant of a parabola y = ax² + bx + c. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery.

Do not use this when the coefficient a is 0 (the equation is linear: x = −c / b), or you need roots of x^n = c for other powers (use nth-root). What it computes: Solves ax² + bx + c = 0 with the quadratic formula, reporting the discriminant, both roots (real, or complex conjugates written as strings), the vertex of the parabola and the sum and product of the roots. Inputs: a (number); b (number); c (number). Complete JSON argument examples: {"a":1,"b":-5,"c":6} | {"a":1,"b":2,"c":5} Outputs: discriminant, nature, root1, root2, roots, vertex_x, vertex_y, sum_of_roots, product_of_roots. Formula: Δ = b² − 4ac; x = (−b ± √Δ) / (2a); for Δ < 0: x = −b/(2a) ± i·√(−Δ)/(2|a|); vertex = (−b/(2a), c − b²/(4a)) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/quadratic-equation with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/quadratic-equation.md

ParametersJSON Schema
NameRequiredDescriptionDefault
aYesCoefficient of x². Must not be 0.
bYesCoefficient of x.
cYesConstant term.

Output Schema

ParametersJSON Schema
NameRequiredDescription
linksNo
resultYes
requestYes
sourcesNo
successYes
versionNo
freshnessNo
timestampYes
next_actionsNo
service_versionYesDeployed Calcgrid implementation version used for the result.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the operation read-only, idempotent, and non-destructive. The description adds meaningful behavioral detail: it reports the discriminant, roots as real or complex-conjugate strings, vertex, and root sum/product, and gives the exact formulas used.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but each section earns its place: usage conditions, computed outputs, formula, REST fallback, and docs link. It is well-structured and front-loaded with the primary use case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for an agent to select and invoke the tool correctly: it covers inputs, outputs, formulas, edge cases, and even a REST fallback. The presence of an output schema also means return values need no further explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all parameters with 100% coverage, so the baseline is 3. The description mostly repeats the parameter names and types, but the formula and examples reinforce the roles of a, b, and c without adding much beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: solving a second-degree polynomial and producing the vertex/discriminant. It distinguishes itself from nth-root and linear-equation cases, and its scope is clear against the many sibling calculator tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says when to use the tool, when not to use it (a = 0), and names the alternative (nth-root). This leaves no ambiguity about tool selection.

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.

  1. 189 tool updates
    • Addedadd_ar_working_days
    • Addedadd_at_working_days
    • Addedadd_australia_working_days
    • Addedadd_bd_working_days
    • Addedadd_be_working_days
    • Addedadd_bg_working_days
    • Addedadd_br_working_days
    • Addedadd_canada_federal_working_days
    • Addedadd_ch_working_days
    • Addedadd_cl_working_days
    • Addedadd_co_working_days
    • Addedadd_cz_working_days
    • Addedadd_de_working_days
    • Addedadd_dk_working_days
    • Addedadd_ee_working_days
    • Addedadd_eg_working_days
    • Addedadd_es_working_days
    • Addedadd_fi_working_days
    • Addedadd_fr_working_days
    • Addedadd_gh_working_days
    • Addedadd_gr_working_days
    • Addedadd_hk_working_days
    • Addedadd_hr_working_days
    • Addedadd_hu_working_days
    • Addedadd_id_working_days
    • Addedadd_india_central_working_days
    • Addedadd_ireland_working_days
    • Addedadd_it_working_days
    • Addedadd_japan_national_working_days
    • Addedadd_ke_working_days
    • Addedadd_kr_working_days
    • Addedadd_kz_working_days
    • Addedadd_lk_working_days
    • Addedadd_lt_working_days
    • Addedadd_lu_working_days
    • Addedadd_lv_working_days
    • Addedadd_mt_working_days
    • Addedadd_mx_working_days
    • Addedadd_my_working_days
    • Addedadd_new_zealand_working_days
    • Addedadd_ng_working_days
    • Addedadd_nl_working_days
    • Addedadd_no_working_days
    • Addedadd_pe_working_days
    • Addedadd_ph_working_days
    • Addedadd_pk_working_days
    • Addedadd_pl_working_days
    • Addedadd_pt_working_days
    • Addedadd_ro_working_days
    • Addedadd_ru_working_days
    • Addedadd_sa_working_days
    • Addedadd_se_working_days
    • Addedadd_si_working_days
    • Addedadd_singapore_working_days
    • Addedadd_sk_working_days
    • Addedadd_south_africa_working_days
    • Addedadd_th_working_days
    • Addedadd_turkey_working_days
    • Addedadd_tw_working_days
    • Addedadd_uae_federal_working_days
    • Addedadd_us_federal_working_days
    • Addedadd_uzbekistan_working_days
    • Addedadd_vn_working_days
    • Addedcheck_ar_working_day
    • Addedcheck_at_working_day
    • Addedcheck_australia_working_day
    • Addedcheck_bd_working_day
    • Addedcheck_be_working_day
    • Addedcheck_bg_working_day
    • Addedcheck_br_working_day
    • Addedcheck_canada_federal_working_day
    • Addedcheck_ch_working_day
    • Addedcheck_cl_working_day
    • Addedcheck_co_working_day
    • Addedcheck_cz_working_day
    • Addedcheck_de_working_day
    • Addedcheck_dk_working_day
    • Addedcheck_ee_working_day
    • Addedcheck_eg_working_day
    • Addedcheck_es_working_day
    • Addedcheck_fi_working_day
    • Addedcheck_fr_working_day
    • Addedcheck_gh_working_day
    • Addedcheck_gr_working_day
    • Addedcheck_hk_working_day
    • Addedcheck_hr_working_day
    • Addedcheck_hu_working_day
    • Addedcheck_id_working_day
    • Addedcheck_india_central_working_day
    • Addedcheck_ireland_working_day
    • Addedcheck_it_working_day
    • Addedcheck_japan_national_working_day
    • Addedcheck_ke_working_day
    • Addedcheck_kr_working_day
    • Addedcheck_kz_working_day
    • Addedcheck_lk_working_day
    • Addedcheck_lt_working_day
    • Addedcheck_lu_working_day
    • Addedcheck_lv_working_day
    • Addedcheck_mt_working_day
    • Addedcheck_mx_working_day
    • Addedcheck_my_working_day
    • Addedcheck_new_zealand_working_day
    • Addedcheck_ng_working_day
    • Addedcheck_nl_working_day
    • Addedcheck_no_working_day
    • Addedcheck_pe_working_day
    • Addedcheck_ph_working_day
    • Addedcheck_pk_working_day
    • Addedcheck_pl_working_day
    • Addedcheck_pt_working_day
    • Addedcheck_ro_working_day
    • Addedcheck_ru_working_day
    • Addedcheck_sa_working_day
    • Addedcheck_se_working_day
    • Addedcheck_si_working_day
    • Addedcheck_singapore_working_day
    • Addedcheck_sk_working_day
    • Addedcheck_south_africa_working_day
    • Addedcheck_th_working_day
    • Addedcheck_turkey_working_day
    • Addedcheck_tw_working_day
    • Addedcheck_uae_federal_working_day
    • Addedcheck_us_federal_working_day
    • Addedcheck_uzbekistan_working_day
    • Addedcheck_vn_working_day
    • Addedcount_ar_working_days
    • Addedcount_at_working_days
    • Addedcount_australia_working_days
    • Addedcount_bd_working_days
    • Addedcount_be_working_days
    • Addedcount_bg_working_days
    • Addedcount_br_working_days
    • Addedcount_canada_federal_working_days
    • Addedcount_ch_working_days
    • Addedcount_cl_working_days
    • Addedcount_co_working_days
    • Addedcount_cz_working_days
    • Addedcount_de_working_days
    • Addedcount_dk_working_days
    • Addedcount_ee_working_days
    • Addedcount_eg_working_days
    • Addedcount_es_working_days
    • Addedcount_fi_working_days
    • Addedcount_fr_working_days
    • Addedcount_gh_working_days
    • Addedcount_gr_working_days
    • Addedcount_hk_working_days
    • Addedcount_hr_working_days
    • Addedcount_hu_working_days
    • Addedcount_id_working_days
    • Addedcount_india_central_working_days
    • Addedcount_ireland_working_days
    • Addedcount_it_working_days
    • Addedcount_japan_national_working_days
    • Addedcount_ke_working_days
    • Addedcount_kr_working_days
    • Addedcount_kz_working_days
    • Addedcount_lk_working_days
    • Addedcount_lt_working_days
    • Addedcount_lu_working_days
    • Addedcount_lv_working_days
    • Addedcount_mt_working_days
    • Addedcount_mx_working_days
    • Addedcount_my_working_days
    • Addedcount_new_zealand_working_days
    • Addedcount_ng_working_days
    • Addedcount_nl_working_days
    • Addedcount_no_working_days
    • Addedcount_pe_working_days
    • Addedcount_ph_working_days
    • Addedcount_pk_working_days
    • Addedcount_pl_working_days
    • Addedcount_pt_working_days
    • Addedcount_ro_working_days
    • Addedcount_ru_working_days
    • Addedcount_sa_working_days
    • Addedcount_se_working_days
    • Addedcount_si_working_days
    • Addedcount_singapore_working_days
    • Addedcount_sk_working_days
    • Addedcount_south_africa_working_days
    • Addedcount_th_working_days
    • Addedcount_turkey_working_days
    • Addedcount_tw_working_days
    • Addedcount_uae_federal_working_days
    • Addedcount_us_federal_working_days
    • Addedcount_uzbekistan_working_days
    • Addedcount_vn_working_days
  2. 10 tool updates
    • Addedadd_global_public_holiday_working_days
    • Addedadd_global_reference_working_days
    • Addedadd_global_working_days
    • Addedcheck_global_public_holiday_working_day
    • Addedcheck_global_reference_working_day
    • Addedcheck_global_working_day
    • Addedcount_global_public_holiday_working_days
    • Addedcount_global_reference_working_days
    • Addedcount_global_working_days
    • Addedlist_working_day_calendars
  3. 49 tool updates
    • Changedadd_china_working_days2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedadd_uk_working_days2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_ab_test_significance2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_age2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_amortization_schedule2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_bazi_four_pillars2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_bmi2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_bmr2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Addedcalculate_business_deadline
    • Changedcalculate_circle_properties2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_compound_interest2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_date_difference2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_depth_of_field2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_descriptive_statistics3 fields changed
      • addedInput schema / properties / values / maxItems
        Added value: +10000
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_fraction_arithmetic4 fields changed
      • addedInput schema / properties / fraction_a / maxLength
        Added value: +40
      • addedInput schema / properties / fraction_b / maxLength
        Added value: +40
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_haversine_distance2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_kinetic_energy2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_loan_payment2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_molar_mass2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_mortgage_payment2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_percentage2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_percentage_change2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_running_pace2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_subnet3 fields changed
      • addedInput schema / properties / cidr / maxLength
        Added value: +40
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_t_test4 fields changed
      • addedInput schema / properties / sample_a / maxItems
        Added value: +10000
      • addedInput schema / properties / sample_b / maxItems
        Added value: +10000
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_tdee2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcalculate_tip2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcast_plum_blossom_hexagram2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcheck_china_working_day2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcheck_uk_working_day2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcompare_loans2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_betting_odds3 fields changed
      • addedInput schema / properties / odds / maxLength
        Added value: +20
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_lunar_to_solar2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_solar_to_lunar2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_temperature2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_time_zone6 fields changed
      • addedInput schema / properties / from_zone / maxLength
        Added value: +64
      • addedInput schema / properties / time / maxLength
        Added value: +8
      • addedInput schema / properties / time / pattern
        Added value: +"^([01]?\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
      • addedInput schema / properties / to_zone / maxLength
        Added value: +64
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_units2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcount_china_working_days2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedcount_uk_working_days2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedestimate_ev_charging_time2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedfind_chinese_zodiac2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedlist_solar_terms2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedlist_time_zone_transitions3 fields changed
      • addedInput schema / properties / time_zone / maxLength
        Added value: +64
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedlookup_iching_hexagram6 fields changed
      • addedInput schema / properties / lines / maxLength
        Added value: +6
      • addedInput schema / properties / lower_trigram / maxLength
        Added value: +20
      • addedInput schema / properties / name / maxLength
        Added value: +40
      • addedInput schema / properties / upper_trigram / maxLength
        Added value: +20
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedprice_black_scholes_option2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedresolve_local_time5 fields changed
      • addedInput schema / properties / local_datetime / maxLength
        Added value: +19
      • addedInput schema / properties / local_datetime / pattern
        Added value: +"^\\d{4}-\\d{2}-\\d{2}[T ](?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d)?$"
      • addedInput schema / properties / time_zone / maxLength
        Added value: +64
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedrun_calculator2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedsolve_ohms_law2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedsolve_quadratic_equation2 fields changed
      • addedOutput schema / properties / service_version
        Added value: +{
        +  "description": "Deployed Calcgrid implementation version used for the result.",
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success",
        -  "request",
        -  "result",
        -  "timestamp"
        -]New value: +[
        +  "success",
        +  "service_version",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
  4. 46 tool updates
    • Changedadd_china_working_days1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "start_date": "2026-09-24",
        +    "working_days": 5
        +  },
        +  {
        +    "start_date": "2026-09-18",
        +    "working_days": 5
        +  }
        +]
    • Addedadd_uk_working_days
    • Changedcalculate_ab_test_significance1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "control_conversions": 50,
        +    "control_visitors": 1000,
        +    "variant_conversions": 70,
        +    "variant_visitors": 1000
        +  },
        +  {
        +    "control_conversions": 200,
        +    "control_visitors": 5000,
        +    "variant_conversions": 260,
        +    "variant_visitors": 5000
        +  }
        +]
    • Changedcalculate_age1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "as_of_date": "2026-09-23",
        +    "birth_date": "1990-05-17"
        +  },
        +  {
        +    "as_of_date": "2026-01-10",
        +    "birth_date": "1985-12-25"
        +  }
        +]
    • Changedcalculate_amortization_schedule3 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "term_years": {
        +        "exclusiveMinimum": 0
        +      }
        +    },
        +    "required": [
        +      "term_years"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "term_months": {
        +        "minimum": 1
        +      }
        +    },
        +    "required": [
        +      "term_months"
        +    ]
        +  }
        +]
      • addedInput schema / description
        Added value: +"Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together; the total may not exceed 480 months."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "annual_rate_percent": 6,
        +    "principal": 200000,
        +    "term_years": 30
        +  },
        +  {
        +    "annual_rate_percent": 5,
        +    "extra_monthly_payment": 300,
        +    "principal": 300000,
        +    "start_date": "2026-01-01",
        +    "term_years": 15
        +  }
        +]
    • Changedcalculate_bazi_four_pillars1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "birth_date": "1990-05-17",
        +    "birth_time": "08:30",
        +    "sex": "male",
        +    "utc_offset_hours": 8
        +  },
        +  {
        +    "birth_date": "2000-01-01",
        +    "birth_time": "00:30",
        +    "sex": "female",
        +    "utc_offset_hours": 8
        +  }
        +]
    • Changedcalculate_bmi1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "height_cm": 175,
        +    "weight_kg": 70
        +  },
        +  {
        +    "height_cm": 180,
        +    "weight_kg": 95
        +  }
        +]
    • Changedcalculate_bmr1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "age_years": 30,
        +    "height_cm": 175,
        +    "sex": "male",
        +    "weight_kg": 70
        +  },
        +  {
        +    "age_years": 40,
        +    "height_cm": 165,
        +    "sex": "female",
        +    "weight_kg": 60
        +  }
        +]
    • Changedcalculate_circle_properties3 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "radius"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "diameter"
        +    ]
        +  }
        +]
      • addedInput schema / description
        Added value: +"Provide at least one of radius or diameter. You may provide both when diameter equals 2 × radius; conflicting values are rejected."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "radius": 3
        +  },
        +  {
        +    "diameter": 10
        +  }
        +]
    • Changedcalculate_compound_interest1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "annual_rate_percent": 5,
        +    "compounding_frequency": "monthly",
        +    "principal": 10000,
        +    "years": 10
        +  },
        +  {
        +    "annual_rate_percent": 6,
        +    "compounding_frequency": "monthly",
        +    "monthly_contribution": 100,
        +    "principal": 5000,
        +    "years": 20
        +  }
        +]
    • Changedcalculate_date_difference1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "end_date": "2026-12-25",
        +    "start_date": "2026-01-01"
        +  },
        +  {
        +    "end_date": "2026-03-15",
        +    "include_end_date": true,
        +    "start_date": "2025-11-05"
        +  }
        +]
    • Changedcalculate_depth_of_field1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "aperture_f": 2.8,
        +    "focal_length_mm": 50,
        +    "focus_distance_m": 3,
        +    "sensor": "full_frame"
        +  },
        +  {
        +    "aperture_f": 8,
        +    "focal_length_mm": 24,
        +    "focus_distance_m": 5,
        +    "sensor": "full_frame"
        +  }
        +]
    • Changedcalculate_descriptive_statistics1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "values": [
        +      2,
        +      4,
        +      4,
        +      4,
        +      5,
        +      5,
        +      7,
        +      9
        +    ]
        +  },
        +  {
        +    "values": [
        +      4,
        +      8,
        +      15,
        +      16,
        +      23,
        +      42
        +    ]
        +  }
        +]
    • Changedcalculate_fraction_arithmetic1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "fraction_a": "3/4",
        +    "fraction_b": "1/6",
        +    "operation": "add"
        +  },
        +  {
        +    "fraction_a": "2 1/3",
        +    "fraction_b": "5/6",
        +    "operation": "subtract"
        +  }
        +]
    • Changedcalculate_haversine_distance1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "lat1": -33.8688,
        +    "lat2": 35.6762,
        +    "lon1": 151.2093,
        +    "lon2": 139.6503
        +  },
        +  {
        +    "lat1": 50.06639,
        +    "lat2": 58.64389,
        +    "lon1": -5.71472,
        +    "lon2": -3.07
        +  }
        +]
    • Changedcalculate_kinetic_energy1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "mass_kg": 1200,
        +    "velocity_m_s": 25
        +  },
        +  {
        +    "mass_kg": 0.145,
        +    "velocity_m_s": 40
        +  }
        +]
    • Changedcalculate_loan_payment3 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "term_years": {
        +        "exclusiveMinimum": 0
        +      }
        +    },
        +    "required": [
        +      "term_years"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "term_months": {
        +        "minimum": 1
        +      }
        +    },
        +    "required": [
        +      "term_months"
        +    ]
        +  }
        +]
      • addedInput schema / description
        Added value: +"Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "annual_rate_percent": 6,
        +    "principal": 200000,
        +    "term_years": 30
        +  },
        +  {
        +    "annual_rate_percent": 7,
        +    "principal": 25000,
        +    "term_months": 60
        +  }
        +]
    • Changedcalculate_molar_mass1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "formula": "C6H12O6"
        +  },
        +  {
        +    "formula": "CuSO4·5H2O"
        +  }
        +]
    • Changedcalculate_mortgage_payment1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "annual_home_insurance": 1200,
        +    "annual_property_tax": 3000,
        +    "annual_rate_percent": 6,
        +    "down_payment": 50000,
        +    "home_price": 250000,
        +    "term_years": 30
        +  },
        +  {
        +    "annual_rate_percent": 6.5,
        +    "down_payment": 80000,
        +    "home_price": 400000,
        +    "term_years": 30
        +  }
        +]
    • Changedcalculate_percentage1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "mode": "percent_of",
        +    "x": 15,
        +    "y": 240
        +  },
        +  {
        +    "mode": "is_what_percent",
        +    "x": 30,
        +    "y": 120
        +  }
        +]
    • Changedcalculate_percentage_change1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "new_value": 65,
        +    "old_value": 50
        +  },
        +  {
        +    "new_value": 60,
        +    "old_value": 80
        +  }
        +]
    • Changedcalculate_running_pace1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "distance": 10,
        +    "distance_unit": "km",
        +    "time": "50:00"
        +  },
        +  {
        +    "distance": 5,
        +    "distance_unit": "mi",
        +    "time": "45:00"
        +  }
        +]
    • Changedcalculate_subnet1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "cidr": "192.168.1.10/26"
        +  },
        +  {
        +    "cidr": "10.0.0.0 255.0.0.0"
        +  }
        +]
    • Changedcalculate_t_test3 fields changed
      • addedInput schema / allOf
        Added value: +[
        +  {
        +    "if": {
        +      "properties": {
        +        "mode": {
        +          "const": "one_sample"
        +        }
        +      },
        +      "required": [
        +        "mode"
        +      ]
        +    },
        +    "then": {
        +      "oneOf": [
        +        {
        +          "not": {
        +            "anyOf": [
        +              {
        +                "required": [
        +                  "mean_a"
        +                ]
        +              },
        +              {
        +                "required": [
        +                  "sd_a"
        +                ]
        +              },
        +              {
        +                "required": [
        +                  "n_a"
        +                ]
        +              }
        +            ]
        +          },
        +          "required": [
        +            "sample_a"
        +          ]
        +        },
        +        {
        +          "not": {
        +            "required": [
        +              "sample_a"
        +            ]
        +          },
        +          "required": [
        +            "mean_a",
        +            "sd_a",
        +            "n_a"
        +          ]
        +        }
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "properties": {
        +        "mode": {
        +          "const": "paired"
        +        }
        +      },
        +      "required": [
        +        "mode"
        +      ]
        +    },
        +    "then": {
        +      "oneOf": [
        +        {
        +          "not": {
        +            "anyOf": [
        +              {
        +                "required": [
        +                  "mean_a"
        +                ]
        +              },
        +              {
        +                "required": [
        +                  "sd_a"
        +                ]
        +              },
        +              {
        +                "required": [
        +                  "n_a"
        +                ]
        +              }
        +            ]
        +          },
        +          "required": [
        +            "sample_a",
        +            "sample_b"
        +          ]
        +        },
        +        {
        +          "not": {
        +            "anyOf": [
        +              {
        +                "required": [
        +                  "sample_a"
        +                ]
        +              },
        +              {
        +                "required": [
        +                  "sample_b"
        +                ]
        +              }
        +            ]
        +          },
        +          "required": [
        +            "mean_a",
        +            "sd_a",
        +            "n_a"
        +          ]
        +        }
        +      ]
        +    }
        +  },
        +  {
        +    "if": {
        +      "anyOf": [
        +        {
        +          "properties": {
        +            "mode": {
        +              "const": "two_sample"
        +            }
        +          },
        +          "required": [
        +            "mode"
        +          ]
        +        },
        +        {
        +          "not": {
        +            "required": [
        +              "mode"
        +            ]
        +          }
        +        }
        +      ]
        +    },
        +    "then": {
        +      "allOf": [
        +        {
        +          "oneOf": [
        +            {
        +              "not": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "mean_a"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "sd_a"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "n_a"
        +                    ]
        +                  }
        +                ]
        +              },
        +              "required": [
        +                "sample_a"
        +              ]
        +            },
        +            {
        +              "not": {
        +                "required": [
        +                  "sample_a"
        +                ]
        +              },
        +              "required": [
        +                "mean_a",
        +                "sd_a",
        +                "n_a"
        +              ]
        +            }
        +          ]
        +        },
        +        {
        +          "oneOf": [
        +            {
        +              "not": {
        +                "anyOf": [
        +                  {
        +                    "required": [
        +                      "mean_b"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "sd_b"
        +                    ]
        +                  },
        +                  {
        +                    "required": [
        +                      "n_b"
        +                    ]
        +                  }
        +                ]
        +              },
        +              "required": [
        +                "sample_b"
        +              ]
        +            },
        +            {
        +              "not": {
        +                "required": [
        +                  "sample_b"
        +                ]
        +              },
        +              "required": [
        +                "mean_b",
        +                "sd_b",
        +                "n_b"
        +              ]
        +            }
        +          ]
        +        }
        +      ]
        +    }
        +  }
        +]
      • addedInput schema / description
        Added value: +"one_sample: sample_a, or all of mean_a + sd_a + n_a. two_sample (also the default when mode is omitted): one complete raw-or-summary input for A and one for B. paired: both sample_a + sample_b, or paired-difference summary mean_a + sd_a + n_a. Do not mix a raw sample with its summary fields."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "mode": "two_sample",
        +    "sample_a": [
        +      5.1,
        +      4.9,
        +      5.6,
        +      5.8,
        +      6
        +    ],
        +    "sample_b": [
        +      4.2,
        +      4.8,
        +      4.4,
        +      4.6,
        +      4.5
        +    ]
        +  },
        +  {
        +    "mean_a": 5.48,
        +    "mean_b": 4.5,
        +    "mode": "two_sample",
        +    "n_a": 5,
        +    "n_b": 5,
        +    "sd_a": 0.47117,
        +    "sd_b": 0.23452
        +  },
        +  {
        +    "hypothesized_mean": 100,
        +    "mode": "one_sample",
        +    "sample_a": [
        +      102,
        +      98,
        +      105,
        +      101,
        +      104
        +    ]
        +  },
        +  {
        +    "mode": "paired",
        +    "sample_a": [
        +      1.9,
        +      0.8,
        +      1.1,
        +      0.1,
        +      -0.1,
        +      4.4,
        +      5.5,
        +      1.6,
        +      4.6,
        +      3.4
        +    ],
        +    "sample_b": [
        +      0.7,
        +      -1.6,
        +      -0.2,
        +      -1.2,
        +      -0.1,
        +      3.4,
        +      3.7,
        +      0.8,
        +      0,
        +      2
        +    ]
        +  },
        +  {
        +    "mean_a": 1.58,
        +    "mode": "paired",
        +    "n_a": 10,
        +    "sd_a": 1.23042
        +  }
        +]
    • Changedcalculate_tdee1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "activity_level": "moderate",
        +    "age_years": 30,
        +    "height_cm": 175,
        +    "sex": "male",
        +    "weight_kg": 70
        +  }
        +]
    • Changedcalculate_tip1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "bill_amount": 85.5,
        +    "split_between": 3,
        +    "tip_percent": 18
        +  },
        +  {
        +    "bill_amount": 42,
        +    "tip_percent": 20
        +  }
        +]
    • Changedcast_plum_blossom_hexagram3 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "properties": {
        +      "method": {
        +        "const": "time_method"
        +      }
        +    }
        +  },
        +  {
        +    "properties": {
        +      "method": {
        +        "const": "two_numbers"
        +      }
        +    },
        +    "required": [
        +      "method",
        +      "number_1",
        +      "number_2"
        +    ]
        +  },
        +  {
        +    "properties": {
        +      "method": {
        +        "const": "three_numbers"
        +      }
        +    },
        +    "required": [
        +      "method",
        +      "number_1",
        +      "number_2",
        +      "number_3"
        +    ]
        +  }
        +]
      • addedInput schema / description
        Added value: +"time_method needs date/time only; two_numbers requires number_1 + number_2; three_numbers requires number_1 + number_2 + number_3."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "date": "2026-09-24",
        +    "method": "time_method",
        +    "time": "14:30"
        +  },
        +  {
        +    "date": "2026-09-24",
        +    "method": "two_numbers",
        +    "number_1": 3,
        +    "number_2": 7,
        +    "time": "12:00"
        +  }
        +]
    • Changedcheck_china_working_day1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "date": "2026-01-04"
        +  },
        +  {
        +    "date": "2026-02-18"
        +  }
        +]
    • Addedcheck_uk_working_day
    • Changedcompare_loans1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "fees_a": 3000,
        +    "fees_b": 5000,
        +    "loan_amount": 300000,
        +    "rate_a_percent": 6,
        +    "rate_b_percent": 5.5,
        +    "term_a_years": 30,
        +    "term_b_years": 15
        +  },
        +  {
        +    "fees_b": 500,
        +    "loan_amount": 25000,
        +    "rate_a_percent": 7,
        +    "rate_b_percent": 6,
        +    "term_a_years": 5,
        +    "term_b_years": 6
        +  }
        +]
    • Changedconvert_betting_odds1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "odds": "+150"
        +  },
        +  {
        +    "format": "auto",
        +    "odds": "-200",
        +    "stake": 100
        +  }
        +]
    • Changedconvert_lunar_to_solar1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "is_leap_month": false,
        +    "lunar_day": 15,
        +    "lunar_month": 8,
        +    "lunar_year": 2026
        +  },
        +  {
        +    "is_leap_month": true,
        +    "lunar_day": 1,
        +    "lunar_month": 6,
        +    "lunar_year": 2025
        +  }
        +]
    • Changedconvert_solar_to_lunar1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "date": "2026-09-24"
        +  },
        +  {
        +    "date": "2025-07-25"
        +  }
        +]
    • Changedconvert_temperature1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "from_unit": "F",
        +    "to_unit": "C",
        +    "value": 100
        +  },
        +  {
        +    "from_unit": "C",
        +    "to_unit": "F",
        +    "value": 25
        +  }
        +]
    • Changedconvert_time_zone1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "date": "2026-09-23",
        +    "from_zone": "Australia/Adelaide",
        +    "time": "09:00",
        +    "to_zone": "America/New_York"
        +  },
        +  {
        +    "date": "2026-07-04",
        +    "from_zone": "America/Los_Angeles",
        +    "time": "12:00",
        +    "to_zone": "Asia/Kolkata"
        +  }
        +]
    • Changedcount_china_working_days1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "end_date": "2026-09-25",
        +    "include_end_date": true,
        +    "include_start_date": true,
        +    "start_date": "2026-09-18"
        +  }
        +]
    • Addedcount_uk_working_days
    • Changedestimate_ev_charging_time1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "battery_capacity_kwh": 75,
        +    "charger_power_kw": 7,
        +    "charging_efficiency_percent": 90,
        +    "electricity_price_per_kwh": 0.3,
        +    "start_percent": 20,
        +    "target_percent": 80
        +  },
        +  {
        +    "battery_capacity_kwh": 60,
        +    "charger_power_kw": 11,
        +    "max_onboard_charger_kw": 7.4,
        +    "start_percent": 10,
        +    "target_percent": 100
        +  }
        +]
    • Changedfind_chinese_zodiac1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "birth_date": "1990-02-10",
        +    "boundary": "lunar_new_year",
        +    "reference_year": 2026
        +  },
        +  {
        +    "birth_date": "1990-02-03",
        +    "boundary": "lichun"
        +  }
        +]
    • Changedlist_solar_terms1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "utc_offset_hours": 8,
        +    "year": 2024
        +  },
        +  {
        +    "utc_offset_hours": 8,
        +    "year": 2026
        +  }
        +]
    • Changedlist_time_zone_transitions1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "end_date": "2026-12-31",
        +    "start_date": "2026-01-01",
        +    "time_zone": "America/New_York"
        +  }
        +]
    • Changedlookup_iching_hexagram4 fields changed
      • addedInput schema / anyOf
        Added value: +[
        +  {
        +    "required": [
        +      "king_wen_number"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "name"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "lines"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "upper_trigram",
        +      "lower_trigram"
        +    ]
        +  }
        +]
      • addedInput schema / dependentRequired
        Added value: +{
        +  "lower_trigram": [
        +    "upper_trigram"
        +  ],
        +  "upper_trigram": [
        +    "lower_trigram"
        +  ]
        +}
      • addedInput schema / description
        Added value: +"Identify the hexagram with king_wen_number, name, lines, or the complete upper_trigram + lower_trigram pair. Multiple identification methods may be supplied when they agree."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "king_wen_number": 1
        +  },
        +  {
        +    "lines": "100010"
        +  }
        +]
    • Changedprice_black_scholes_option1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "risk_free_rate_percent": 5,
        +    "spot_price": 100,
        +    "strike_price": 100,
        +    "time_years": 1,
        +    "volatility_percent": 20
        +  },
        +  {
        +    "dividend_yield_percent": 3,
        +    "risk_free_rate_percent": 5,
        +    "spot_price": 100,
        +    "strike_price": 100,
        +    "time_years": 1,
        +    "volatility_percent": 20
        +  }
        +]
    • Changedresolve_local_time1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "local_datetime": "2026-11-01T01:30:00",
        +    "time_zone": "America/New_York"
        +  },
        +  {
        +    "local_datetime": "2026-03-08T02:30:00",
        +    "time_zone": "America/New_York"
        +  }
        +]
    • Changedsolve_ohms_law3 fields changed
      • addedInput schema / description
        Added value: +"Provide exactly two of voltage_v, current_a and resistance_ohm; the omitted quantity is calculated. Example: {\"voltage_v\":12,\"resistance_ohm\":220}."
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "resistance_ohm": 220,
        +    "voltage_v": 12
        +  },
        +  {
        +    "current_a": 2,
        +    "resistance_ohm": 50
        +  }
        +]
      • addedInput schema / oneOf
        Added value: +[
        +  {
        +    "required": [
        +      "voltage_v",
        +      "current_a"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "voltage_v",
        +      "resistance_ohm"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "current_a",
        +      "resistance_ohm"
        +    ]
        +  }
        +]
    • Changedsolve_quadratic_equation1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "a": 1,
        +    "b": -5,
        +    "c": 6
        +  },
        +  {
        +    "a": 1,
        +    "b": 2,
        +    "c": 5
        +  }
        +]
  5. 3 tool updates
    • Changedconvert_time_zone9 fields changed
      • addedInput schema / properties / resolution_policy
        Added value: +{
        +  "default": "reject",
        +  "description": "How to handle a repeated or nonexistent source wall time. reject is safest; earlier/later choose a repeated-time candidate; shift_forward moves a skipped time by the DST gap.",
        +  "enum": [
        +    "reject",
        +    "earlier",
        +    "later",
        +    "shift_forward"
        +  ],
        +  "examples": [
        +    "reject"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties / applied_resolution_policy
        Added value: +{
        +  "description": "unique, earlier, later or shift_forward.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties / dataset_version
        Added value: +{
        +  "description": "Immutable Calcgrid time-zone evidence-package version.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / result / properties / values / properties / from_abbreviation / description
        Previous value: -"Short zone name from ICU (e.g. EDT); 'GMT+9:30' style when the zone has no common English abbreviation."New value: +"Short zone abbreviation from the pinned IANA data build (for example EDT)."
      • addedOutput schema / properties / result / properties / values / properties / source_candidate_utc_datetimes
        Added value: +{
        +  "description": "Every UTC instant that matches the source wall time; two values for a repeated time and none for a gap.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / result / properties / values / properties / source_sha256
        Added value: +{
        +  "description": "SHA-256 of the official IANA tzdata release artifact.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties / source_time_status
        Added value: +{
        +  "description": "unique, ambiguous or nonexistent under the pinned transition table.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties / source_url
        Added value: +{
        +  "description": "Version-specific official IANA release URL.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties / tzdb_version
        Added value: +{
        +  "description": "Pinned IANA release used for this result.",
        +  "type": "string"
        +}
    • Addedlist_time_zone_transitions
    • Addedresolve_local_time
  6. 48 tool updates
    • Addedadd_china_working_days
    • Addedcalculate_ab_test_significance
    • Addedcalculate_age
    • Addedcalculate_amortization_schedule
    • Addedcalculate_bazi_four_pillars
    • Addedcalculate_bmi
    • Addedcalculate_bmr
    • Addedcalculate_circle_properties
    • Addedcalculate_compound_interest
    • Addedcalculate_date_difference
    • Addedcalculate_depth_of_field
    • Addedcalculate_descriptive_statistics
    • Addedcalculate_fraction_arithmetic
    • Addedcalculate_haversine_distance
    • Addedcalculate_kinetic_energy
    • Changedcalculate_loan_payment15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties
        Added value: +{
        +  "monthly_payment": {
        +    "description": "Level payment due each month (principal + interest).",
        +    "type": "number"
        +  },
        +  "number_of_payments": {
        +    "description": "Total months = 12 × term_years + term_months.",
        +    "type": "integer"
        +  },
        +  "payoff_summary": {
        +    "description": "Plain-language summary of the schedule.",
        +    "type": "string"
        +  },
        +  "total_interest": {
        +    "description": "total_payment − principal.",
        +    "type": "number"
        +  },
        +  "total_payment": {
        +    "description": "monthly_payment × number_of_payments (unrounded payment).",
        +    "type": "number"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Addedcalculate_molar_mass
    • Addedcalculate_mortgage_payment
    • Addedcalculate_percentage
    • Addedcalculate_percentage_change
    • Addedcalculate_running_pace
    • Addedcalculate_subnet
    • Addedcalculate_t_test
    • Addedcalculate_tdee
    • Addedcalculate_tip
    • Addedcast_plum_blossom_hexagram
    • Addedcheck_china_working_day
    • Addedcompare_loans
    • Addedconvert_betting_odds
    • Changedconvert_lunar_to_solar15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties
        Added value: +{
        +  "day_ganzhi": {
        +    "description": "Sexagenary day with pinyin, e.g. 壬寅 (Renyin).",
        +    "type": "string"
        +  },
        +  "gregorian_date": {
        +    "description": "Gregorian civil date (China Standard Time).",
        +    "format": "date",
        +    "type": "string"
        +  },
        +  "julian_day_number": {
        +    "description": "Julian Day Number of the Gregorian date.",
        +    "type": "integer"
        +  },
        +  "leap_month_note": {
        +    "description": "Which leap month the lunar year has (if any), so a wrong is_leap_month flag can be corrected.",
        +    "type": "string"
        +  },
        +  "lunar_date_chinese": {
        +    "description": "Written form, e.g. 二〇二六年八月十五.",
        +    "type": "string"
        +  },
        +  "month_days": {
        +    "description": "Length of the requested lunar month (29 or 30).",
        +    "type": "integer"
        +  },
        +  "month_name": {
        +    "description": "Traditional month name, prefixed 闰 for a leap month.",
        +    "type": "string"
        +  },
        +  "weekday": {
        +    "description": "Day of the week.",
        +    "type": "string"
        +  },
        +  "year_ganzhi": {
        +    "description": "Sexagenary year with pinyin, e.g. 丙午 (Bingwu).",
        +    "type": "string"
        +  },
        +  "zodiac": {
        +    "description": "Zodiac animal of the lunar year.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_solar_to_lunar15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties
        Added value: +{
        +  "current_solar_term": {
        +    "description": "Solar-term period the date falls in and the date it began.",
        +    "type": "string"
        +  },
        +  "day_ganzhi": {
        +    "description": "Sexagenary day (continuous 60-day cycle; 1949-10-01 = 甲子).",
        +    "type": "string"
        +  },
        +  "day_ganzhi_pinyin": {
        +    "description": "Pinyin of the day ganzhi.",
        +    "type": "string"
        +  },
        +  "day_name": {
        +    "description": "Traditional day name (初一 … 三十).",
        +    "type": "string"
        +  },
        +  "days_to_next_term": {
        +    "description": "Days until the next solar term. Unit: days.",
        +    "type": "integer",
        +    "x-unit": "days"
        +  },
        +  "festival": {
        +    "description": "Traditional festival(s) on this day (春节, 元宵节, 龙抬头, 上巳节, 端午节, 七夕, 中元节, 中秋节, 重阳节, 寒衣节, 下元节, 腊八节, 小年, 除夕, 清明节, 冬至) or \"none\".",
        +    "type": "string"
        +  },
        +  "is_leap_month": {
        +    "description": "true when the date falls in an intercalary month (闰月 runyue).",
        +    "type": "boolean"
        +  },
        +  "is_solar_term_day": {
        +    "description": "true when the date is itself a solar-term day.",
        +    "type": "boolean"
        +  },
        +  "julian_day_number": {
        +    "description": "Julian Day Number of the civil date.",
        +    "type": "integer"
        +  },
        +  "leap_month_this_year": {
        +    "description": "Number of the leap month in this lunar year, 0 when the year has none.",
        +    "type": "integer"
        +  },
        +  "lunar_date_chinese": {
        +    "description": "Written form, e.g. 二〇二六年八月十四.",
        +    "type": "string"
        +  },
        +  "lunar_date_text": {
        +    "description": "Readable form, e.g. 8th lunar month, day 14 (八月十四).",
        +    "type": "string"
        +  },
        +  "lunar_day": {
        +    "description": "Day of the lunar month, 1–30.",
        +    "type": "integer"
        +  },
        +  "lunar_month": {
        +    "description": "Lunar month number 1–12.",
        +    "type": "integer"
        +  },
        +  "lunar_year": {
        +    "description": "Lunar year number (the year that began at the preceding Chinese New Year).",
        +    "type": "integer"
        +  },
        +  "month_days": {
        +    "description": "Length of this lunar month (29 or 30).",
        +    "type": "integer"
        +  },
        +  "month_ganzhi": {
        +    "description": "Sexagenary month by solar-term months (节气月): 寅 month starts at 立春, stems by the 五虎遁 rule.",
        +    "type": "string"
        +  },
        +  "month_ganzhi_pinyin": {
        +    "description": "Pinyin of the month ganzhi.",
        +    "type": "string"
        +  },
        +  "month_name": {
        +    "description": "Traditional month name (正月 … 腊月, prefixed 闰 for a leap month).",
        +    "type": "string"
        +  },
        +  "nayin_year": {
        +    "description": "Nayin melodic element of the year ganzhi, e.g. 天河水 · Milky-way Water.",
        +    "type": "string"
        +  },
        +  "next_solar_term": {
        +    "description": "Next solar term and its date.",
        +    "type": "string"
        +  },
        +  "weekday": {
        +    "description": "Day of the week.",
        +    "type": "string"
        +  },
        +  "year_english": {
        +    "description": "Stem element and zodiac animal, e.g. Fire Horse.",
        +    "type": "string"
        +  },
        +  "year_ganzhi": {
        +    "description": "Sexagenary year of the lunar year, e.g. 丙午.",
        +    "type": "string"
        +  },
        +  "year_ganzhi_pinyin": {
        +    "description": "Pinyin of the year ganzhi, e.g. Bingwu.",
        +    "type": "string"
        +  },
        +  "zodiac": {
        +    "description": "Zodiac animal of the lunar year with its character, e.g. Horse (马).",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Addedconvert_temperature
    • Changedconvert_time_zone15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties
        Added value: +{
        +  "converted_date": {
        +    "description": "Calendar date in to_zone.",
        +    "format": "date",
        +    "type": "string"
        +  },
        +  "converted_datetime": {
        +    "description": "ISO 8601 date-time in to_zone including its UTC offset.",
        +    "type": "string"
        +  },
        +  "converted_time": {
        +    "description": "Wall-clock time in to_zone (HH:MM).",
        +    "type": "string"
        +  },
        +  "converted_weekday": {
        +    "description": "Day of the week of converted_date.",
        +    "type": "string"
        +  },
        +  "day_difference": {
        +    "description": "converted_date minus date: −1, 0 or +1. Unit: days.",
        +    "type": "integer",
        +    "x-unit": "days"
        +  },
        +  "from_abbreviation": {
        +    "description": "Short zone name from ICU (e.g. EDT); 'GMT+9:30' style when the zone has no common English abbreviation.",
        +    "type": "string"
        +  },
        +  "from_utc_offset": {
        +    "description": "UTC offset of from_zone at that instant (±HH:MM).",
        +    "type": "string"
        +  },
        +  "time_difference_hours": {
        +    "description": "to_zone offset minus from_zone offset at that instant; positive when to_zone is ahead. Unit: h.",
        +    "type": "number",
        +    "x-unit": "h"
        +  },
        +  "to_abbreviation": {
        +    "description": "Short zone name of to_zone at that instant.",
        +    "type": "string"
        +  },
        +  "to_utc_offset": {
        +    "description": "UTC offset of to_zone at that instant (±HH:MM).",
        +    "type": "string"
        +  },
        +  "utc_datetime": {
        +    "description": "The same instant in UTC (ISO 8601).",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedconvert_units15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / additionalProperties
        Added value: +true
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Addedcount_china_working_days
    • Addedestimate_ev_charging_time
    • Addedfind_chinese_zodiac
    • Changedget_calculator_schema3 fields changed
      • changedInput schema / properties / calculator_id / description
        Previous value: -"Calculator id from search_calculators, e.g. 'bmi'."New value: +"Exact calculator_id returned by search_calculators; for example 'bmi' or 'compound-interest'."
      • addedInput schema / properties / calculator_id / examples
        Added value: +[
        +  "compound-interest"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Read-only catalogue or schema result used to select a calculation tool.",
        +  "properties": {
        +    "links": {
        +      "type": "object"
        +    },
        +    "next_actions": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "request": {
        +      "type": "object"
        +    },
        +    "result": {
        +      "type": "object"
        +    },
        +    "success": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "timestamp": {
        +      "format": "date-time",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "success",
        +    "result",
        +    "timestamp"
        +  ],
        +  "type": "object"
        +}
    • Addedlist_calculator_categories
    • Addedlist_calculators
    • Changedlist_solar_terms15 fields changed
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / properties
        Added value: +{
        +  "autumn_equinox": {
        +    "description": "Local date and time of 秋分 (180°).",
        +    "type": "string"
        +  },
        +  "lichun_date": {
        +    "description": "Local date and time (HH:MM) of 立春, the start of the solar-term year.",
        +    "type": "string"
        +  },
        +  "spring_equinox": {
        +    "description": "Local date and time of 春分 (Sun at 0°).",
        +    "type": "string"
        +  },
        +  "suishou_note": {
        +    "description": "When the sexagenary year begins under solar-term reckoning (立春) versus the lunar calendar (Chinese New Year).",
        +    "type": "string"
        +  },
        +  "summer_solstice": {
        +    "description": "Local date and time of 夏至 (90°).",
        +    "type": "string"
        +  },
        +  "terms": {
        +    "description": "24 rows in calendar order (小寒 first): name_cn, pinyin, english, solar_longitude (°), datetime_local, datetime_utc, date, type (major 中气 / minor 节).",
        +    "type": "array"
        +  },
        +  "utc_offset": {
        +    "description": "Offset applied to datetime_local and date.",
        +    "type": "string"
        +  },
        +  "winter_solstice": {
        +    "description": "Local date and time of 冬至 (270°).",
        +    "type": "string"
        +  },
        +  "year_ganzhi": {
        +    "description": "Sexagenary name of the year with pinyin and element/animal.",
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Addedlist_units
    • Addedlookup_iching_hexagram
    • Addedprice_black_scholes_option
    • Changedrun_calculator19 fields changed
      • changedInput schema / properties / calculator_id / description
        Previous value: -"Calculator id, e.g. 'compound-interest'."New value: +"Exact calculator_id from search_calculators; for example 'compound-interest'."
      • addedInput schema / properties / calculator_id / examples
        Added value: +[
        +  "compound-interest"
        +]
      • changedInput schema / properties / inputs / description
        Previous value: -"Input parameters keyed by name as documented by get_calculator_schema."New value: +"Parameter names and values from search_calculators input_hints or get_calculator_schema. Use numbers as numbers, ISO dates as YYYY-MM-DD and lists as arrays."
      • addedInput schema / properties / inputs / examples
        Added value: +[
        +  {
        +    "annual_rate_percent": 4.8,
        +    "principal": 15000,
        +    "years": 12
        +  }
        +]
      • changedOutput schema / description
        Previous value: -"Unified result envelope (see /docs/response-format.md)"New value: +"Deterministic calculation result with typed values, units, formula, sources and timestamp."
      • addedOutput schema / properties / next_actions / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / request / properties
        Added value: +{
        +  "calculator_id": {
        +    "type": "string"
        +  },
        +  "inputs": {
        +    "type": "object"
        +  },
        +  "tool": {
        +    "type": "string"
        +  }
        +}
      • addedOutput schema / properties / result / properties / calculator_id
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / calculator_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / entity_type
        Added value: +{
        +  "const": "calculation",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / status
        Added value: +{
        +  "const": "completed",
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / units / additionalProperties
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / result / properties / values / additionalProperties
        Added value: +true
      • addedOutput schema / properties / result / required
        Added value: +[
        +  "entity_type",
        +  "calculator_id",
        +  "status",
        +  "values",
        +  "formula",
        +  "summary"
        +]
      • addedOutput schema / properties / sources / items
        Added value: +{
        +  "type": "object"
        +}
      • addedOutput schema / properties / success / const
        Added value: +true
      • addedOutput schema / properties / timestamp / format
        Added value: +"date-time"
      • addedOutput schema / properties / version
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "success"
        -]New value: +[
        +  "success",
        +  "request",
        +  "result",
        +  "timestamp"
        +]
    • Changedsearch_calculators3 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Free-text query, e.g. 'compound interest' or 'body fat'."New value: +"The complete user task, including known values and units; for example 'compound interest on 15000 at 4.8% monthly for 12 years'."
      • addedInput schema / properties / query / examples
        Added value: +[
        +  "compound interest on 15000 at 4.8% monthly for 12 years"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "description": "Read-only catalogue or schema result used to select a calculation tool.",
        +  "properties": {
        +    "links": {
        +      "type": "object"
        +    },
        +    "next_actions": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "request": {
        +      "type": "object"
        +    },
        +    "result": {
        +      "type": "object"
        +    },
        +    "success": {
        +      "const": true,
        +      "type": "boolean"
        +    },
        +    "timestamp": {
        +      "format": "date-time",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "success",
        +    "result",
        +    "timestamp"
        +  ],
        +  "type": "object"
        +}
    • Addedsolve_ohms_law
    • Addedsolve_quadratic_equation
  7. 35 tool updates
    • Removedcalculate_ab_test_significance
    • Removedcalculate_age
    • Removedcalculate_amortization_schedule
    • Removedcalculate_bazi_four_pillars
    • Removedcalculate_bmi
    • Removedcalculate_bmr
    • Removedcalculate_circle_properties
    • Removedcalculate_compound_interest
    • Removedcalculate_date_difference
    • Removedcalculate_depth_of_field
    • Removedcalculate_descriptive_statistics
    • Removedcalculate_fraction_arithmetic
    • Removedcalculate_haversine_distance
    • Removedcalculate_kinetic_energy
    • Removedcalculate_molar_mass
    • Removedcalculate_mortgage_payment
    • Removedcalculate_percentage
    • Removedcalculate_percentage_change
    • Removedcalculate_running_pace
    • Removedcalculate_subnet
    • Removedcalculate_t_test
    • Removedcalculate_tdee
    • Removedcalculate_tip
    • Removedcast_plum_blossom_hexagram
    • Removedconvert_betting_odds
    • Removedconvert_temperature
    • Removedestimate_ev_charging_time
    • Removedfind_chinese_zodiac
    • Removedlist_calculator_categories
    • Removedlist_calculators
    • Removedlist_units
    • Removedlookup_iching_hexagram
    • Removedprice_black_scholes_option
    • Removedsolve_ohms_law
    • Removedsolve_quadratic_equation
  8. 44 tool updates
    • First observedcalculate_ab_test_significance
    • First observedcalculate_age
    • First observedcalculate_amortization_schedule
    • First observedcalculate_bazi_four_pillars
    • First observedcalculate_bmi
    • First observedcalculate_bmr
    • First observedcalculate_circle_properties
    • First observedcalculate_compound_interest
    • First observedcalculate_date_difference
    • First observedcalculate_depth_of_field
    • First observedcalculate_descriptive_statistics
    • First observedcalculate_fraction_arithmetic
    • First observedcalculate_haversine_distance
    • First observedcalculate_kinetic_energy
    • First observedcalculate_loan_payment
    • First observedcalculate_molar_mass
    • First observedcalculate_mortgage_payment
    • First observedcalculate_percentage
    • First observedcalculate_percentage_change
    • First observedcalculate_running_pace
    • First observedcalculate_subnet
    • First observedcalculate_t_test
    • First observedcalculate_tdee
    • First observedcalculate_tip
    • First observedcast_plum_blossom_hexagram
    • First observedconvert_betting_odds
    • First observedconvert_lunar_to_solar
    • First observedconvert_solar_to_lunar
    • First observedconvert_temperature
    • First observedconvert_time_zone
    • First observedconvert_units
    • First observedestimate_ev_charging_time
    • First observedfind_chinese_zodiac
    • First observedget_calculator_schema
    • First observedlist_calculator_categories
    • First observedlist_calculators
    • First observedlist_solar_terms
    • First observedlist_units
    • First observedlookup_iching_hexagram
    • First observedprice_black_scholes_option
    • First observedrun_calculator
    • First observedsearch_calculators
    • First observedsolve_ohms_law
    • First observedsolve_quadratic_equation

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Provides accurate time zone conversions, DST-safe scheduling, holidays for 200+ countries, business day calculations, and cross-zone meeting slot suggestions.
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive time and calendar utility server that provides timezone conversions, date arithmetic, and business day calculations for AI agents. It features extensive support for the Chinese lunar calendar, including almanac data, festivals, and public holiday tracking across multiple regions.
    13
    23 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides deterministic business-day calculations for AI agents, correctly handling country-specific weekends and public holidays.
    6
    83 npm
    1
    Apache 2.0
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources