Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

time_working_days_calculator

Read-onlyIdempotent

Count business days between two dates or add/subtract working days, excluding weekends and optional holidays. Use for project timelines or date arithmetic without time dependency.

Instructions

Working Days Calculator. Pure deterministic proleptic-Gregorian working-day math over UTC, with no clock/now dependency — every date is supplied by the caller. operation "countBetween" counts Mon-Fri working days in the inclusive range [from, to], optionally excluding a holiday list, and returns the breakdown (total calendar days, weekend days, weekday holidays counted, working days, holidays that fell in range). operation "addWorkingDays" shifts a base date by a signed number of working days, skipping Saturdays, Sundays, and listed holidays, and returns the resulting date plus how many weekends/holidays were stepped over. Use this for business-day counts or weekend/holiday-skipping date arithmetic; use time_date_difference for plain calendar diffs or business-day counts without holiday exclusion, and time_date_calculator for weekend-skipping arithmetic by years/months/days. Read-only, non-destructive, idempotent, offline-capable, rate-limited (60 req/min anonymous), no auth. Result is wrapped as operation pl

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYes"countBetween": count working days between two dates (needs from* and to*). "addWorkingDays": shift a base date by working days (needs year/month/day and days).
fromYearNoStart-date year (proleptic Gregorian). Required when operation is countBetween.
fromMonthNoStart-date month 1-12. Required when operation is countBetween.
fromDayNoStart-date day 1-31; must be a real calendar date. Required when operation is countBetween.
toYearNoEnd-date year; must be on or after the from date. Required when operation is countBetween.
toMonthNoEnd-date month 1-12. Required when operation is countBetween.
toDayNoEnd-date day 1-31. Required when operation is countBetween.
yearNoBase-date year. Required when operation is addWorkingDays.
monthNoBase-date month 1-12. Required when operation is addWorkingDays.
dayNoBase-date day 1-31; must be a real calendar date. Required when operation is addWorkingDays.
daysNoSigned number of working days to add (positive) or subtract (negative); 0 returns the base date. Required when operation is addWorkingDays.
holidaysNoOptional dates to treat as non-working days, in addition to weekends. Duplicates are deduped; each must be a real calendar date.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationNoThe operation that was run, echoed back (countBetween or addWorkingDays).
dataNoResult payload; shape depends on operation.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed31 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / day
      Added value: +{
      +  "description": "Base-date day 1-31; must be a real calendar date. Required when operation is addWorkingDays.",
      +  "maximum": 31,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / days
      Added value: +{
      +  "description": "Signed number of working days to add (positive) or subtract (negative); 0 returns the base date. Required when operation is addWorkingDays.",
      +  "maximum": 100000,
      +  "minimum": -100000,
      +  "type": "integer"
      +}
    • addedInput schema / properties / fromDay / description
      Added value: +"Start-date day 1-31; must be a real calendar date. Required when operation is countBetween."
    • addedInput schema / properties / fromDay / maximum
      Added value: +31
    • addedInput schema / properties / fromDay / minimum
      Added value: +1
    • addedInput schema / properties / fromMonth / description
      Added value: +"Start-date month 1-12. Required when operation is countBetween."
    • addedInput schema / properties / fromMonth / maximum
      Added value: +12
    • addedInput schema / properties / fromMonth / minimum
      Added value: +1
    • addedInput schema / properties / fromYear / description
      Added value: +"Start-date year (proleptic Gregorian). Required when operation is countBetween."
    • addedInput schema / properties / fromYear / maximum
      Added value: +9999
    • addedInput schema / properties / fromYear / minimum
      Added value: +-9999
    • addedInput schema / properties / holidays / description
      Added value: +"Optional dates to treat as non-working days, in addition to weekends. Duplicates are deduped; each must be a real calendar date."
    • addedInput schema / properties / holidays / items / description
      Added value: +"Holiday date as YYYY-MM-DD."
    • addedInput schema / properties / holidays / items / format
      Added value: +"date"
    • addedInput schema / properties / holidays / maxItems
      Added value: +1000
    • addedInput schema / properties / month
      Added value: +{
      +  "description": "Base-date month 1-12. Required when operation is addWorkingDays.",
      +  "maximum": 12,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / operation / description
      Added value: +"\"countBetween\": count working days between two dates (needs from* and to*). \"addWorkingDays\": shift a base date by working days (needs year/month/day and days)."
    • addedInput schema / properties / operation / enum
      Added value: +[
      +  "countBetween",
      +  "addWorkingDays"
      +]
    • addedInput schema / properties / toDay / description
      Added value: +"End-date day 1-31. Required when operation is countBetween."
    • addedInput schema / properties / toDay / maximum
      Added value: +31
    • addedInput schema / properties / toDay / minimum
      Added value: +1
    • addedInput schema / properties / toMonth / description
      Added value: +"End-date month 1-12. Required when operation is countBetween."
    • addedInput schema / properties / toMonth / maximum
      Added value: +12
    • addedInput schema / properties / toMonth / minimum
      Added value: +1
    • addedInput schema / properties / toYear / description
      Added value: +"End-date year; must be on or after the from date. Required when operation is countBetween."
    • addedInput schema / properties / toYear / maximum
      Added value: +9999
    • addedInput schema / properties / toYear / minimum
      Added value: +-9999
    • addedInput schema / properties / year
      Added value: +{
      +  "description": "Base-date year. Required when operation is addWorkingDays.",
      +  "maximum": 9999,
      +  "minimum": -9999,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "operation",
      -  "fromYear",
      -  "fromMonth",
      -  "fromDay",
      -  "toYear",
      -  "toMonth",
      -  "toDay",
      -  "holidays"
      -]New value: +[
      +  "operation"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "data": {
      +      "description": "Result payload; shape depends on operation.",
      +      "properties": {
      +        "base": {
      +          "description": "Base date as year/month/day/isoDate/dayOfWeek (addWorkingDays only).",
      +          "type": "object"
      +        },
      +        "daysAdded": {
      +          "description": "Signed working-days input, echoed back (addWorkingDays only).",
      +          "type": "integer"
      +        },
      +        "from": {
      +          "description": "Start date as year/month/day/isoDate/dayOfWeek (countBetween only).",
      +          "type": "object"
      +        },
      +        "holidayDaysCounted": {
      +          "description": "Weekday holidays in range that reduced the working count (countBetween only).",
      +          "type": "integer"
      +        },
      +        "holidaysInRange": {
      +          "description": "Listed holidays (YYYY-MM-DD) that fell in the range (countBetween only).",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "holidaysSkipped": {
      +          "description": "Listed holidays stepped over (addWorkingDays only).",
      +          "type": "integer"
      +        },
      +        "result": {
      +          "description": "Resulting date as year/month/day/isoDate/dayOfWeek (addWorkingDays only).",
      +          "type": "object"
      +        },
      +        "to": {
      +          "description": "End date as year/month/day/isoDate/dayOfWeek (countBetween only).",
      +          "type": "object"
      +        },
      +        "totalCalendarDays": {
      +          "description": "Inclusive calendar-day count in the range (countBetween only).",
      +          "type": "integer"
      +        },
      +        "totalCalendarDaysShifted": {
      +          "description": "Absolute calendar-day shift from base to result (addWorkingDays only).",
      +          "type": "integer"
      +        },
      +        "weekendDays": {
      +          "description": "Saturday+Sunday days in the range (countBetween only).",
      +          "type": "integer"
      +        },
      +        "weekendsSkipped": {
      +          "description": "Saturday+Sunday days stepped over (addWorkingDays only).",
      +          "type": "integer"
      +        },
      +        "workingDays": {
      +          "description": "Working days = total - weekend - holidayDaysCounted (countBetween only).",
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "operation": {
      +      "description": "The operation that was run, echoed back (countBetween or addWorkingDays).",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations, the description adds that it's pure deterministic proleptic-Gregorian over UTC, no clock dependency, rate-limited (60 req/min anonymous), and requires no auth. It also describes the wrapped output. 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 well-structured with clear sections for each operation and usage guidance. It front-loads the purpose. While slightly lengthy, every sentence adds value, and the structure aids readability.

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 (two operations, many parameters) and the presence of an output schema and annotations, the description covers purpose, operations, parameter semantics, usage guidelines, behavioral traits, rate limits, and alternatives. It is fully adequate for correct agent 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 baseline is 3. The description adds meaning by explaining the two operations, their parameter groups, and the return values (breakdown for countBetween, resulting date and counts for addWorkingDays). It also clarifies holiday behavior (dedup, real dates). This provides 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 clearly states the tool computes working days with two operations (countBetween and addWorkingDays). It explicitly distinguishes itself from sibling tools like time_date_difference and time_date_calculator by specifying appropriate use 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 provides explicit guidance on when to use this tool versus alternatives: use this for business-day counts with holiday exclusion, use time_date_difference for plain calendar diffs, and time_date_calculator for weekend-skipping arithmetic. It also notes read-only, idempotent, and offline-capable properties.

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

Deploy Server

Other Tools