Business Days
Server Details
Public holidays and working-day maths for 200+ countries, cross-checked across three providers.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- profitpather/profitpather-tools
- GitHub Stars
- 0
TDQS
Scored across 4 tools
Each tool has a distinct primary job: arithmetic (add_business_days), single-date status (check_business_day), multi-provider comparison (cross_check_holidays), and holiday listing (list_public_holidays). There is mild overlap since check_business_day also reports source agreement and list_public_holidays can answer 'is this a holiday', but the descriptions explicitly steer the agent between them.
All four names are snake_case verb-first constructions (add_, check_, cross_check_, list_) followed by a clear object. The pattern is fully predictable and readable.
Four tools is a tight, well-scoped set for a holiday/business-day domain, and each one covers a genuinely different mode of use. Nothing is redundant or padded.
Core lifecycle is covered: list holidays, verify a date, do forward date arithmetic, and validate disputed holidays. Minor gaps remain, such as counting business days between two dates (reverse arithmetic) or checking a batch of dates rather than one.
Available Tools
4 toolsadd_business_daysAdd or subtract business days from a dateARead-onlyIdempotentInspect
Use this when the user needs a date N working days from another date: delivery and shipping estimates, payment or settlement terms, notice periods, SLA and deadline questions. Skips weekends and the public holidays of the country or region, reports exactly which days were skipped, and flags any date in the range that independent sources disagree about.
| Name | Required | Description | Default |
|---|---|---|---|
| days | Yes | Business days to move. Positive counts forward, negative counts backward. Maximum magnitude 1000. | |
| region | No | Optional ISO 3166-2 subdivision code such as AU-NSW or US-CA. | |
| country | Yes | ISO 3166-1 alpha-2 country code, for example AU, US, GB. | |
| start_date | Yes | The starting date in YYYY-MM-DD format. It is not counted itself. |
Output Schema
| Name | Required | Description |
|---|---|---|
| region | No | |
| country | Yes | |
| skipped | Yes | |
| start_date | Yes | |
| result_date | Yes | |
| result_weekday | Yes | |
| business_days_moved | Yes | |
| calendar_days_elapsed | Yes | |
| disputed_dates_in_range | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description adds real behavioral value beyond that: it skips weekends and country/region holidays, reports exactly which days were skipped, and flags dates where independent sources disagree. It stops short of stating failure modes for bad country/region codes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the trigger condition and then layers use cases and behavior. Dense but every clause carries information; the enumeration of scenarios is slightly long for the payoff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description still covers holiday handling, skipped-day reporting, and source-disagreement flags. It omits any routing guidance toward the sibling tools, which is the only meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented with format, sign convention, and magnitude limits. The description only reinforces 'N working days' and 'country or region', adding no 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.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('date N working days from another date') and immediately scopes it with holiday awareness, which separates it from siblings like check_business_day and list_public_holidays. 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opening phrase 'Use this when the user needs...' plus concrete scenarios (delivery estimates, payment terms, notice periods, SLA/deadline questions) gives clear when-to-use context. It never names or excludes the sibling tools, so the agent must infer the boundary itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_business_dayCheck whether a date is a business dayARead-onlyIdempotentInspect
Use this when the user asks whether one specific date is a working day, a public holiday, or whether businesses and banks are open. Names the holiday if there is one, and reports whether independent holiday sources agree on that date.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The date to check, in YYYY-MM-DD format. | |
| region | No | Optional ISO 3166-2 subdivision code such as AU-NSW or US-CA. | |
| country | Yes | ISO 3166-1 alpha-2 country code, for example AU, US, GB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| region | No | |
| country | Yes | |
| weekday | Yes | |
| agreement | Yes | |
| is_weekend | Yes | |
| holiday_name | No | |
| is_business_day | Yes | |
| is_public_holiday | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior, so the bar is lower. The description adds output-level context beyond annotations: it names the holiday when one exists and reports whether independent sources agree, which is useful behavioral information not implied by the hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the usage trigger and then the output behavior, with no wasted wording or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. Parameters are fully documented. The only minor gap is that the description does not clarify its scope relative to the overlapping cross_check_holidays sibling, which reports source agreement too.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents date, region, and country formats. The description adds no parameter-level detail (e.g., expected format or region/country interplay) beyond what the schema provides, so the baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('check whether a date is a business day') and scopes it to 'one specific date,' which separates it from list_public_holidays and add_business_days without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions ('when the user asks whether one specific date is a working day, a public holiday, or whether businesses and banks are open'). It implies the single-date scope but does not name the alternative siblings (e.g., cross_check_holidays, list_public_holidays) for contrast, so no exclusions or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cross_check_holidaysCross-check holidays across independent sourcesARead-onlyIdempotentInspect
Use this when accuracy matters more than speed, or when the user questions whether a holiday date is right: contracts, payroll, settlement, compliance deadlines. Compares the national holiday list for a country and year across three independent providers and reports exactly where they agree and disagree, rather than picking one.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year between 1975 and 2075. | |
| country | Yes | ISO 3166-1 alpha-2 country code, for example AU, US, GB. |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| agreed | Yes | |
| country | Yes | |
| disputed | Yes | |
| agreed_count | Yes | |
| disputed_count | Yes | |
| sources_compared | Yes | |
| sources_unavailable | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds real behavioral context beyond that: it fans out to three independent providers, returns agreement/disagreement rather than a single answer, and implicitly trades speed for accuracy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the decision trigger and followed by the mechanism. Every clause earns its place, though the dense list of use-case domains is slightly heavier than needed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-shape detail is unnecessary, and annotations cover the safety profile. The description supplies the when, the what, and the cross-provider model; only the explicit sibling reference is missing for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (year range 1975-2075, ISO alpha-2 country code), so the schema fully documents both parameters. The description only restates 'a country and year' at a high level and adds no format or edge-case detail, making 3 the correct baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (compares the national holiday list for a country and year across three independent providers) and explicitly distinguishes itself from the pick-one-source behavior implied by list_public_holidays. An agent can tell what this tool returns 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use triggers: accuracy over speed, user disputes a date, contracts/payroll/settlement/compliance deadlines. The contrast 'rather than picking one' implies the single-source alternative, but the sibling list_public_holidays is never named, so the routing is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_public_holidaysList public holidaysARead-onlyIdempotentInspect
Use this when the user asks what the public holidays are in a country or region for a given year, when a particular holiday falls, or how many holidays a year has. Covers 200+ countries with state and province detail. Do not use it for working-day arithmetic; use add_business_days for that.
| Name | Required | Description | Default |
|---|---|---|---|
| year | Yes | Calendar year between 1975 and 2075. | |
| region | No | Optional ISO 3166-2 subdivision code such as AU-NSW or US-CA. Supply it whenever the user names a state or province, otherwise only nationwide holidays are returned. | |
| country | Yes | ISO 3166-1 alpha-2 country code, for example AU, US, GB, NZ, DE. |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| region | No | |
| country | Yes | |
| holidays | Yes | |
| holiday_count | Yes | |
| regional_holidays_excluded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is carried. The description adds useful scope context (200+ countries, subdivision-level detail) that tells the agent what data granularity it will get, though it says nothing about rate limits, auth, or ordering of results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: usage triggers first, capability scope second, exclusion/alternative last. No filler, no repetition of the tool name, and the routing guidance is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is unnecessary, and annotations cover the safety profile. With a 3-param schema at full coverage plus explicit when/when-not guidance, nothing an agent needs to select or invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (country ISO code, year range, region ISO 3166-2 with the 'supply it or only nationwide holidays are returned' warning) are already fully documented. The description only restates the country/region/year dimensions without adding syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (list public holidays) and immediately bounds it by country/region and year, plus coverage breadth (200+ countries, state/province detail). It also names the sibling it is not (add_business_days), so an agent can separate it from the three related 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives three concrete trigger conditions (what holidays exist in a country/region, when a specific holiday falls, how many holidays a year has) and an explicit exclusion with a named alternative: 'Do not use it for working-day arithmetic; use add_business_days for that.'
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.
4 tool updates
- First observed
add_business_days - First observed
check_business_day - First observed
cross_check_holidays - First observed
list_public_holidays
Related MCP Connectors
Public holidays for 150+ countries, business-day maths and timezone lookup
Public holiday data for 30+ countries. Check holidays, working days and calendars via AI assistants.
Business-day and public-holiday math for 29 countries: add business days, days between, holidays.
Count working days between two dates, add business days to a date, or list public holidays.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenancePublic holiday data for 30+ countries. Check holidays, working days, and full calendars via AI assistants like Claude and Cursor.MIT
- AlicenseNot gradedqualityCmaintenanceReal public/bank/school holiday lookup for 206 countries via a rule-based calendar engine (moveable holidays like Easter computed astronomically, not guessed). Priced per call via x402/USDC on Base.MIT
- AlicenseAqualityCmaintenanceProvides real, official public holiday data for ~100 countries with tools to list holidays for a year and check if a specific date is a holiday. Free, no API key required, powered by Nager.Date.2MIT
- AlicenseAqualityCmaintenanceProvides deterministic business-day calculations for AI agents, correctly handling country-specific weekends and public holidays.683 npm1Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.