Skip to main content
Glama
Vessark

business-days-mcp

business-days-mcp

MCP server quality

An MCP server for the date arithmetic that support, billing and operations teams actually do: is this a working day, when is this SLA due, what is the next working day after a bank holiday — plus cron and recurrence-rule parsing for the recurring side of the same job.

It runs offline. No network calls, no stored data, no model calls — every answer is computed from bundled public-holiday rules.

What it does

Business days and SLAs — holiday-aware for ~150 countries and their subdivisions (England and Scotland differ; so do US states), via the holidays package.

Tool

Answers

is_business_day

Is this a working day? If not, is it a weekend or a named holiday?

next_business_day / previous_business_day

The next/last working day around a date

add_business_days

Move ±N working days from a date

business_days_between

How many working days between two dates (half-open)

first_business_day_of_month / last_business_day_of_month

Month boundaries

sla_due_time

When does an N-business-hour SLA fall due, counting only open hours?

Cron and recurrence — parsing only. Nothing is scheduled, stored, or executed; there are no timers and no job store. If you want something run on a schedule, this is deliberately not that tool.

Tool

Answers

validate_cron_expression / explain_cron_expression

Is this cron valid, and what does it mean in English?

next_cron_occurrences

When would it next fire?

validate_recurrence_rule / explain_recurrence_rule

Same, for an RFC 5545 RRULE

next_recurrence_occurrences

Expand an RRULE to its next occurrences

Related MCP server: mcp-chrono

Install and run

The hosted endpoint needs no install at all — see Client configuration. To run it yourself, uvx fetches and runs it:

uvx --from git+https://github.com/Vessark/business-days-mcp business-days-mcp

From a clone:

git clone https://github.com/Vessark/business-days-mcp
cd business-days-mcp
uv sync && uv run business-days-mcp
uv run pytest                         # the tests are the documentation

Client configuration

Hosted — nothing to install

The quickest way in. The same tools, no install, no credentials:

{
  "mcpServers": {
    "vessark": {
      "url": "https://vessark.com/mcp"
    }
  }
}

Run it yourself

If you would rather not depend on someone else's uptime, run it locally — it is the same code, and it never touches the network:

{
  "mcpServers": {
    "business-days": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Vessark/business-days-mcp",
        "business-days-mcp"
      ]
    }
  }
}

Examples

// is_business_day — 2026-12-28, UK
{"date": "2026-12-28", "country": "GB"}
→ {"is_business_day": false, "reason": "holiday: Boxing Day (substitute day)"}

// sla_due_time — 8 business hours from Monday 16:00
{"start": "2026-07-27T16:00", "business_hours": 8}
→ {"due": "2026-07-28T16:00:00", "started_within_business_hours": true}

// explain_cron_expression
{"expression": "30 9 * * MON-FRI"}
→ {"explanation": "At 09:30, on Monday through Friday."}

Design notes

Every tool is a pure function of its arguments, which is why the test suite is mostly tables. Invalid input is an ordinary typed result, never an exception — a model that gets an argument wrong gets a readable reason and can correct itself. Every loop that a caller can influence is bounded, so no request can buy an expensive computation. Error messages never echo what you sent, so the server can't be used to relay text into someone else's agent.

Known limits, stated rather than hidden: a working week is Monday–Friday, so countries with Sunday–Thursday weeks are wrong under this assumption; holiday data covers only the years the underlying dataset knows about, and a date outside that range is refused rather than silently answered as an ordinary working day.

Prior art

fbdo/business-day-mcp covers business-day and holiday arithmetic and predates this server. If that is all you need, use it — it also exposes timezone-aware "today" and holiday listing, which this server does not.

This one was built for a different centre of gravity: SLA clocks that count only business hours, and cron / RRULE parsing for the recurring side of the same work. The overlap in the business-day tools is real and the names are conventional; both servers are MIT licensed and both build on the excellent holidays package.

Releasing

Bump the version in both pyproject.toml and server.json, then push a matching tag:

git tag v0.2.0 && git push origin v0.2.0

That runs the test suite, checks the tag agrees with both version fields, publishes to PyPI, and republishes to the MCP registry. Both use GitHub OIDC — PyPI via Trusted Publishing — so there is no API token in this repository, in a secret store, or on any machine.

About

Built and maintained by Vessark. The tools in this repository are the free tier and are open source under the MIT licence. Vessark's workspace tools — the ones that operate on a connected workspace — are the commercial product and are not open source.

Issues and pull requests welcome.

Available Tools

14 tools
add_business_daysAInspect

Move a number of working days forward or backward from a date, skipping weekends and public holidays. Use a negative number to count backwards. Zero returns the date unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesCalendar date, YYYY-MM-DD.
daysYesWorking days to move; may be negative.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description discloses key behaviors: it moves forward/backward, skips weekends and public holidays (implied by country/subdivision), allows negative numbers, and returns unchanged for zero. However, it does not mention any limitations like maximum range or holiday resolution details.

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, front-loaded with primary purpose. Each sentence adds value: main move, negative handling, zero case. No filler or redundant text.

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 no output schema, the description could clarify return format (likely date string). But it covers core logic well. Context of 4 params and no enums/nesting makes this fairly complete for a calendar calculation 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?

All 4 parameters are described in the schema (100% coverage). The description adds no extra semantics beyond the schema. For example, negative 'days' is already in schema description. 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?

Description clearly states the tool moves a date by a number of business days, using 'move a number of working days forward or backward from a date'. It explicitly mentions skipping weekends and public holidays, and distinguishes from siblings like next_business_day (single day) and business_days_between (count). The verb 'move' and resource 'working days from a date' are specific.

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?

No explicit guidance on when to use this tool versus alternatives like next_business_day or previous_business_day. The description implies general offset scenarios but does not set exclusions or prerequisites. For a tool with many date siblings, this is a missed opportunity.

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

business_days_betweenAInspect

Counts the working days between two dates, excluding weekends and public holidays. The range is half-open — the start date counts and the end date does not — so Monday to Tuesday is one working day. The result is negative when the end precedes the start.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
end_dateYesCalendar date, YYYY-MM-DD.
start_dateYesCalendar date, YYYY-MM-DD.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It explains the half-open nature and negative result behavior. However, it does not disclose the source of public holidays, potential rate limits, or whether the tool requires network access. These gaps lower transparency.

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 two sentences, front-loaded with the core purpose, and contains no redundant words. All information is pertinent and efficiently conveyed.

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 4 parameters, no annotations, and no output schema, the description is quite complete. It covers the core functionality, half-open interval, and negative results. A minor gap is the lack of mention of the holiday calendar source (e.g., defaults to US), but overall very good.

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 100% schema description coverage, the baseline is 3. The description adds context about half-open interval and negative results, which relates to start_date and end_date, but does not add new information about country or subdivision beyond the schema. Value added is marginal.

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 counts working days between two dates, excluding weekends and public holidays. It also explains the half-open interval, distinguishing it from siblings like is_business_day or next_business_day.

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 description provides basic usage context (half-open interval, negative results) but does not explicitly guide when to use this tool over siblings such as add_business_days or is_business_day. No exclusion criteria are mentioned.

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

explain_cron_expressionAInspect

Translate a five-field cron expression into plain English. Supports ranges, lists, steps, and month or weekday names. This describes the expression; it never schedules or executes anything.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesA five-field cron expression, e.g. '30 9 * * MON-FRI'.

TDQS

A4.4/5.0
Behavior4/5

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

The description explicitly states that the tool is read-only ('never schedules or executes anything'), which is crucial for behavioral safety. It also mentions supported features (ranges, lists, steps, names). Since no annotations are provided, the description carries the full burden, and it meets it well, though it could elaborate on error handling or invalid input 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 extremely concise—two sentences that efficiently state purpose, supported features, and a critical behavioral disclaimer. No unnecessary words or 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?

Given the tool's simplicity (single parameter, no output schema), the description is fairly complete. It explains input and behavior. However, it lacks explicit mention of the return format (plain English string), which could be inferred but is not stated. The sibling tools are similar, and the description provides enough differentiation.

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 with a description and example for the single parameter. The description adds meaning beyond the schema by specifying that the expression is 'five-field' and supports 'ranges, lists, steps, and month or weekday names,' which guides the agent on valid input patterns.

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 purpose: 'Translate a five-field cron expression into plain English.' It uses a specific verb ('Translate') and resource ('cron expression'), and distinguishes itself from sibling tools like 'validate_cron_expression' (validation) and 'next_cron_occurrences' (computation).

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 provides clear context: it supports ranges, lists, steps, and names, and explicitly states that it 'never schedules or executes anything.' This helps differentiate from tools that might schedule or execute. However, it does not explicitly list when not to use it or name alternatives beyond the negative scheduling statement.

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

explain_recurrence_ruleAInspect

Describes an iCalendar recurrence rule (RRULE) in plain English. Nothing is scheduled or executed.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYesAn RFC 5545 recurrence rule, e.g. 'FREQ=WEEKLY;BYDAY=MO,WE'.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly states the tool is non-destructive and read-only ('Nothing is scheduled or executed'). This is sufficient for a simple explanation tool, though details about the output format (plain English description) are missing.

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 extremely concise: two sentences that convey the purpose and key behavioral trait. No unnecessary words.

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 low complexity (single parameter, no output schema), the description covers the essential aspects: input format, action, and non-execution behavior. It differentiates from sibling tools like 'validate_recurrence_rule' and 'explain_cron_expression'. A minor gap is the lack of output description, but for a simple explanation it is acceptable.

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 a clear description of the 'rule' parameter including format and example. The tool description does not add extra meaning beyond the schema, so a 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 clearly states the tool's function: 'Describes an iCalendar recurrence rule (RRULE) in plain English.' The additional sentence 'Nothing is scheduled or executed' reinforces the scope and distinguishes it from scheduling-related siblings like 'next_recurrence_occurrences'.

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 that the tool only explains rules and does not schedule or execute anything, guiding the agent to use it for explanation purposes. It implicitly differentiates from siblings like 'explain_cron_expression' by specifying iCalendar RRULE, but does not list alternative tools for other cases.

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

first_business_day_of_monthCInspect

Returns the first working day of a given month.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
monthYes1-12.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

C2.8/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden. The description only states the basic function without disclosing behavioral traits such as whether holidays are considered, how weekends are handled, or how parameters like 'country' and 'subdivision' affect results. This lack of detail undermines safe and effective tool selection.

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 a single sentence, achieving brevity. However, it sacrifices detail; while the sentence is front-loaded and clear, it omits necessary behavioral context. It is appropriately concise but at the expense of completeness, warranting an average score.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, no output schema, many siblings), the description is insufficiently complete. It lacks explanation of how the result is computed (e.g., shifts from first of month, holiday handling) and does not clarify the role of optional parameters. The description does not adequately support correct tool 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 75% (3 of 4 parameters have descriptions). The description adds no additional parameter semantics beyond the schema. With high coverage, the baseline is 3, and no extra value is provided, so the score remains 3.

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: 'Returns the first working day of a given month.' The verb 'returns' specifies the action, and the resource 'first working day' is distinct from siblings like 'last_business_day_of_month' and 'next_business_day'. It directly conveys the purpose 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With 13 sibling tools, the agent receives no hints about context, prerequisites, or when not to use it. The usage must be inferred entirely from the tool name and description, which is insufficient.

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

is_business_dayAInspect

Returns whether a date is a working day, accounting for weekends and public holidays in the given country or subdivision.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesCalendar date, YYYY-MM-DD.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must bear the full burden. It does not disclose any behavioral traits beyond the core function, such as whether external holiday data is used, any authentication needs, rate limits, or side effects. The description is minimal.

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 a single, front-loaded sentence that conveys the essential purpose without any wasted words. It is appropriately sized for the tool's simplicity.

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 boolean-returning tool with no output schema, the description covers the main purpose. However, since no output schema exists, the agent might benefit from explicit mention of the return value (true/false). Still, the context is largely complete given the tool's straightforward nature.

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% (all three parameters have descriptions in the schema). The description adds some context by mentioning weekends and public holidays, which connects to the country parameter. However, it does not add significant new meaning beyond 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 returns a boolean indicating whether a date is a working day, accounting for weekends and public holidays. It uses a specific verb ('Returns') and resource ('working day'), and distinguishes it from sibling tools that compute next/previous business days or ranges.

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 description implies use when checking a single date's business day status, but does not explicitly provide when-not-to-use guidance or mention alternative siblings (like 'next_business_day' or 'business_days_between'). No exclusions or context on when this tool is preferred.

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

last_business_day_of_monthBInspect

Returns the last working day of a given month.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearYes
monthYes1-12.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like holiday handling via country/subdivision. It only says 'working day' without clarification, and output format is unspecified.

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?

Single sentence with no extraneous words. Front-loads the core action efficiently.

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

Completeness2/5

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

Despite 4 parameters and no output schema or annotations, the description omits return format, holiday logic, and usage examples. Incomplete for a tool with many 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 75% (3 of 4 parameters described). The description adds no extra parameter context beyond the schema, so baseline score 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 returns the last working day of a given month, with a specific verb and resource. It effectively distinguishes from siblings like 'first_business_day_of_month'.

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?

No guidance is provided on when to use this tool versus alternatives. Context such as comparing with other business day tools is absent.

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

next_business_dayBInspect

Find the first working day after a date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesCalendar date, YYYY-MM-DD.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. Description does not disclose behavior such as returning the same date if already a business day, handling of weekends/holidays, or the effect of country/subdivision parameters.

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?

Single sentence with no wasted words, but under-specified. Loses a point for missing critical context.

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

Completeness2/5

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

Given 3 parameters, localization support, and many sibling tools, the description is too brief. Lacks explanation of default holiday calendar, behavior for non-business days, and relationship to other tools.

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 baseline is 3. Description adds no extra information beyond what the schema already provides for each parameter.

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?

Description clearly states verb 'Find', resource 'first working day', and constraint 'after a date'. It effectively distinguishes from sibling tools like 'previous_business_day' and 'is_business_day'.

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?

No guidance on when to use this tool vs siblings (e.g., when to use 'next_business_day' vs 'add_business_days'). No prerequisites or edge-case handling mentioned.

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

next_cron_occurrencesAInspect

Computes when a five-field cron expression would next fire after a given start time, returning up to 60 timestamps. A pure calculation over the expression: no job is created, stored, or executed.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoHow many occurrences to return, 1-60. Defaults to 5.
startYesOccurrences are computed after this, e.g. 2026-07-27T09:00.
expressionYesA five-field cron expression, e.g. '30 9 * * MON-FRI'.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, description provides key behavioral info: pure calculation, no side effects, up to 60 timestamps. But lacks details on error handling (invalid expression, timezone) and what happens if no future occurrences exist. Adequate but not comprehensive.

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?

Two sentences, no fluff. Front-loaded with the core functionality. Every word contributes to understanding.

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 necessary aspects for a simple computation tool: purpose, input, output scope. Could mention error behavior or timezone but not critical. Given no output schema or annotations, it's reasonably 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 coverage is 100%, so the description adds little beyond the schema. It reinforces that 'start' is after which occurrences are computed and that expression is five-field. 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?

Clear verb ('computes') and resource ('five-field cron expression') specified. Distinguishes from siblings by emphasizing it's a pure calculation with no side effects. The description explicitly mentions the action, input, and output format.

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?

Implicitly states when to use via 'no job is created, stored, or executed' but doesn't explicitly list alternatives or when not to use. However, the context of sibling tools like 'validate_cron_expression' is clear, so a slight deduction.

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

next_recurrence_occurrencesAInspect

Expand an iCalendar recurrence rule (RRULE) into its next occurrences from a start date and time, honouring INTERVAL, COUNT, UNTIL, BYDAY, BYMONTHDAY, and BYMONTH. A pure calculation: it creates no schedule, stores nothing, and runs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYesAn RFC 5545 recurrence rule, e.g. 'FREQ=WEEKLY;BYDAY=MO,WE'.
countNoHow many occurrences to return, 1-60. Defaults to 5.
startYesOccurrences begin at or after this, e.g. 2026-07-27T09:00.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the tool is a pure calculation with no side effects (creates no schedule, stores nothing, runs nothing) and lists the RRULE features it honours. This provides sufficient transparency for a simple computation tool.

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 two sentences with no wasted words. The first sentence states the core purpose and supported features, while the second clarifies side-effect-free behavior. Perfectly front-loaded and efficient.

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 simplicity (no output schema, no nested objects), the description covers purpose, supported features, and behavioral transparency. It omits output format and timezone handling, but for a straightforward computation tool, this is adequate. The pure calculation statement adds valuable 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 described. The description adds minimal extra meaning: it only reiterates the RRULE features for the 'rule' parameter and does not enhance understanding of 'count' or 'start' beyond the schema. Baseline of 3 is appropriate since schema already 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 clearly states it expands an iCalendar recurrence rule into next occurrences from a start date and time, specifically naming supported RRULE parts (INTERVAL, COUNT, etc.). It distinguishes itself from sibling tools like explain_recurrence_rule (explanation) and validate_recurrence_rule (validation) by focusing on computation.

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 implies use when you need to compute future occurrences without side effects, stating 'creates no schedule, stores nothing, and runs nothing.' While it does not explicitly say when not to use or list alternatives, the context of sibling tools (e.g., explain_cron_expression, validate_recurrence_rule) helps differentiate usage.

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

previous_business_dayBInspect

Find the last working day before a date.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesCalendar date, YYYY-MM-DD.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It only says 'Find,' suggesting a read operation, but does not explain how business days are determined, whether it considers holidays, or if the operation is idempotent.

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 a single, clear sentence with no unnecessary words. It is front-loaded and easy to parse.

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 tool has 3 parameters and no output schema. The description is minimal and does not explain the return value or how holidays are handled. Acceptable for a simple tool but lacks 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?

The input schema has 100% description coverage, so the description adds no additional meaning beyond the schema. Baseline score of 3 applies as the description does not enhance parameter 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?

The description clearly states the verb 'Find' and the resource 'last working day before a date,' distinguishing it from sibling tools like next_business_day or is_business_day.

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?

No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites or comparison with similar tools.

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

sla_due_timeAInspect

Works out when a service-level agreement falls due, counting only business hours on working days. If the clock starts outside business hours it waits until the next working day opens. Business hours default to 09:00-17:00 and times are wall-clock in the calendar's own locality.

ParametersJSON Schema
NameRequiredDescriptionDefault
opensNoOpening time, HH:MM. Defaults to 09:00.
startYesWhen the clock starts, e.g. 2026-07-27T09:00.
closesNoClosing time, HH:MM. Defaults to 17:00.
countryNoISO 3166-1 alpha-2 country code. Defaults to US.
subdivisionNoOptional subdivision code, e.g. SCT.
business_hoursYesHow many business hours are allowed.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description covers key behaviors: counting only business hours, waiting outside hours, default hours, and locality. However, it fails to specify the return format (e.g., a datetime string).

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?

Two sentences, front-loaded with purpose, no redundancy. Every sentence adds value.

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

Completeness2/5

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

Missing output schema and no description of return value or error conditions. For a tool with 6 parameters and no annotation support, more detail 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?

Schema coverage is 100% (baseline 3). The description adds context about default behavior (09:00-17:00, wall-clock locality), enriching understanding beyond schema definitions.

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 it computes SLA due time using business hours and working days, distinguishing it from sibling tools like next_business_day or add_business_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 describes when to use (SLA due time), but does not explicitly exclude alternatives or mention when not to use it, though implied by its specific function.

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

validate_cron_expressionAInspect

Checks whether a five-field cron expression is syntactically valid. Parsing only; nothing is scheduled or run.

ParametersJSON Schema
NameRequiredDescriptionDefault
expressionYesA five-field cron expression, e.g. '30 9 * * MON-FRI'.

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It confirms no side effects ('nothing is scheduled or run') and that it is only syntactic validation. Could add detail on return format, but is sufficient for a simple check.

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?

Two concise sentences that front-load the core purpose and immediately clarify the limitation. No wasted words.

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 validation tool with one parameter and no output schema, the description is complete. It covers what it does, what it doesn't do, and the expected input format.

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?

The parameter 'expression' is fully described in the schema with an example. The description adds the context of 'five-field' cron expression, which complements the schema perfectly.

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 five-field cron expression is syntactically valid, using a specific verb and resource. It distinguishes itself from sibling tools that explain or compute occurrences.

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 'Parsing only; nothing is scheduled or run,' which tells when to use it (for validation only) and when not to (for actual scheduling or execution).

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

validate_recurrence_ruleAInspect

Check whether an iCalendar recurrence rule (RRULE) is valid and supported. Parsing only; nothing is scheduled.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYesAn RFC 5545 recurrence rule, e.g. 'FREQ=WEEKLY;BYDAY=MO,WE'.

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description must carry the burden. It states 'Parsing only; nothing is scheduled,' indicating no side effects. However, it does not disclose the return format (e.g., boolean vs errors) or what 'supported' entails.

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 two sentences, front-loaded with the primary purpose, and contains no superfluous information. Every word contributes 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 simple validation tool with one parameter, the description is nearly complete. The missing output schema is a gap, but the context signal of 'no output schema' is noted. The 'nothing is scheduled' detail adds important 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?

The schema covers the single parameter 'rule' with 100% description coverage. The tool description adds no additional semantic info beyond the schema's example and format specification.

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 validates iCalendar recurrence rules (RRULE) for validity and support, and emphasizes it is parsing-only with no scheduling. This distinguishes it from sibling tools like 'explain_recurrence_rule' and 'next_recurrence_occurrences'.

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 description implies the tool is for validation via 'Check whether ... is valid', but does not explicitly state when to use it over siblings or when not to use it. No alternatives or exclusions are provided.

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. Dates show when Glama detected each change.

  1. 14 tool updatesv0.1.0
    • First observedadd_business_days
    • First observedbusiness_days_between
    • First observedexplain_cron_expression
    • First observedexplain_recurrence_rule
    • First observedfirst_business_day_of_month
    • First observedis_business_day
    • First observedlast_business_day_of_month
    • First observednext_business_day
    • First observednext_cron_occurrences
    • First observednext_recurrence_occurrences
    • First observedprevious_business_day
    • First observedsla_due_time
    • First observedvalidate_cron_expression
    • First observedvalidate_recurrence_rule

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct function: cron vs. recurrence rule vs. business day queries. Tools like next_cron_occurrences and next_recurrence_occurrences are clearly differentiated by input type, and no two tools have overlapping purposes.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., explain_cron_expression, next_business_day, validate_cron_expression). No mixed conventions or vague verbs.

Tool Count5/5

14 tools is well-scoped for the domain, covering both calendar recurrence patterns and business day arithmetic without bloat. Each tool earns its place.

Completeness5/5

The tool surface covers all key operations: validation, explanation, occurrence calculation for cron and RRULE; and full business day functions (is, next, previous, add, count, first/last of month, SLA due time). No obvious gaps.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    A lightweight MCP server providing comprehensive date, time, and day-of-week information. It supports relative time calculations, timezone conversions, and detailed calendar metadata like week numbers and quarters.
    5
    1
    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
    11
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for business-day arithmetic with country-aware holiday calendars. It offers tools to check, calculate, and list business days and holidays for over 60 countries.
    9
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Provides deterministic business-day calculations for AI agents, correctly handling country-specific weekends and public holidays.
    6
    90
    1
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vessark/business-days-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server