Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

time_time_duration

Read-onlyIdempotent

Calculate, add, subtract, multiply, or divide time durations in HH:MM:SS or total seconds. Compute the difference between two clock times, including midnight-crossing spans.

Instructions

Time Duration Calculator. Pure clock-time/duration arithmetic on time spans expressed as hours/minutes/seconds (HH:MM:SS or total seconds) — no wall-clock, calendar, or "now" dependency. operation "compute" normalizes one duration; "add" sums 2-100 durations; "subtract" returns a-b (negative allowed); "multiply" scales a duration by a numeric factor; "divide" divides by a non-zero numeric divisor; "between" returns end-start for two clock times (hour 0-23, minute 0-59, second 0-<60), adding 24h when crossesMidnight is set and end<=start. This is HH:MM:SS clock-time math; use time_date_difference for calendar years/months/days and business-day counts, time_age_calculator for age/birthday spans, and convert_timestamp for Unix-epoch to human-date conversion. Runs locally via the same JS the page uses: read-only, deterministic, offline-capable, rate-limited (60 req/min anonymous), no auth. Result is wrapped as operation plus a data object (totalSeconds, hhmmss, hms, iso8601, signed component breakdown).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationYes"compute": normalize one duration (hours/minutes/seconds). "add": sum items. "subtract": a-b. "multiply": duration*factor. "divide": duration/divisor. "between": end-start of two clock times.
hoursNoHours component for compute/multiply/divide (used when duration object is omitted). Defaults to 0; may be fractional or negative.
minutesNoMinutes component for compute/multiply/divide (used when duration object is omitted). Defaults to 0.
secondsNoSeconds component for compute/multiply/divide (used when duration object is omitted). Defaults to 0; may be fractional.
durationNoDuration operand for multiply/divide; if omitted the top-level hours/minutes/seconds are used instead.
itemsNoDurations to sum. Required when operation is add; 2-100 entries.
aNoMinuend duration. Required when operation is subtract.
bNoSubtrahend duration. Required when operation is subtract.
factorNoFinite multiplier. Required when operation is multiply; may be negative or fractional.
divisorNoFinite non-zero divisor. Required when operation is divide; must not be 0.
startNoStart clock time. Required when operation is between.
endNoEnd clock time. Required when operation is between.
crossesMidnightNoFor between only: when true and end<=start, add 24h to end so the span wraps past midnight.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
operationNoThe operation that was run, echoed back.
dataNoNormalized duration result.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / a
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Minuend duration. Required when operation is subtract.",
      +  "properties": {
      +    "hours": {
      +      "default": 0,
      +      "description": "Hours component of a.",
      +      "type": "number"
      +    },
      +    "minutes": {
      +      "default": 0,
      +      "description": "Minutes component of a.",
      +      "type": "number"
      +    },
      +    "seconds": {
      +      "default": 0,
      +      "description": "Seconds component of a.",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / b
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Subtrahend duration. Required when operation is subtract.",
      +  "properties": {
      +    "hours": {
      +      "default": 0,
      +      "description": "Hours component of b.",
      +      "type": "number"
      +    },
      +    "minutes": {
      +      "default": 0,
      +      "description": "Minutes component of b.",
      +      "type": "number"
      +    },
      +    "seconds": {
      +      "default": 0,
      +      "description": "Seconds component of b.",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / crossesMidnight
      Added value: +{
      +  "default": false,
      +  "description": "For between only: when true and end<=start, add 24h to end so the span wraps past midnight.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / divisor
      Added value: +{
      +  "description": "Finite non-zero divisor. Required when operation is divide; must not be 0.",
      +  "type": "number"
      +}
    • addedInput schema / properties / duration
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Duration operand for multiply/divide; if omitted the top-level hours/minutes/seconds are used instead.",
      +  "properties": {
      +    "hours": {
      +      "default": 0,
      +      "description": "Hours component (signed, may be fractional).",
      +      "type": "number"
      +    },
      +    "minutes": {
      +      "default": 0,
      +      "description": "Minutes component (signed).",
      +      "type": "number"
      +    },
      +    "seconds": {
      +      "default": 0,
      +      "description": "Seconds component (signed, may be fractional).",
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / end
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "End clock time. Required when operation is between.",
      +  "properties": {
      +    "hour": {
      +      "default": 0,
      +      "description": "Hour of day 0-23.",
      +      "maximum": 23,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "minute": {
      +      "default": 0,
      +      "description": "Minute 0-59.",
      +      "maximum": 59,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "second": {
      +      "default": 0,
      +      "description": "Second 0 to under 60; may be fractional.",
      +      "maximum": 59.999999,
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / factor
      Added value: +{
      +  "description": "Finite multiplier. Required when operation is multiply; may be negative or fractional.",
      +  "type": "number"
      +}
    • addedInput schema / properties / hours / default
      Added value: +0
    • addedInput schema / properties / hours / description
      Added value: +"Hours component for compute/multiply/divide (used when duration object is omitted). Defaults to 0; may be fractional or negative."
    • changedInput schema / properties / hours / type
      Previous value: -"integer"New value: +"number"
    • addedInput schema / properties / items
      Added value: +{
      +  "description": "Durations to sum. Required when operation is add; 2-100 entries.",
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "hours": {
      +        "default": 0,
      +        "description": "Hours component of this duration.",
      +        "type": "number"
      +      },
      +      "minutes": {
      +        "default": 0,
      +        "description": "Minutes component of this duration.",
      +        "type": "number"
      +      },
      +      "seconds": {
      +        "default": 0,
      +        "description": "Seconds component of this duration.",
      +        "type": "number"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "maxItems": 100,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • addedInput schema / properties / minutes / default
      Added value: +0
    • addedInput schema / properties / minutes / description
      Added value: +"Minutes component for compute/multiply/divide (used when duration object is omitted). Defaults to 0."
    • changedInput schema / properties / minutes / type
      Previous value: -"integer"New value: +"number"
    • addedInput schema / properties / operation / description
      Added value: +"\"compute\": normalize one duration (hours/minutes/seconds). \"add\": sum items. \"subtract\": a-b. \"multiply\": duration*factor. \"divide\": duration/divisor. \"between\": end-start of two clock times."
    • addedInput schema / properties / operation / enum
      Added value: +[
      +  "compute",
      +  "add",
      +  "subtract",
      +  "multiply",
      +  "divide",
      +  "between"
      +]
    • addedInput schema / properties / seconds / default
      Added value: +0
    • addedInput schema / properties / seconds / description
      Added value: +"Seconds component for compute/multiply/divide (used when duration object is omitted). Defaults to 0; may be fractional."
    • changedInput schema / properties / seconds / type
      Previous value: -"integer"New value: +"number"
    • addedInput schema / properties / start
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Start clock time. Required when operation is between.",
      +  "properties": {
      +    "hour": {
      +      "default": 0,
      +      "description": "Hour of day 0-23.",
      +      "maximum": 23,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "minute": {
      +      "default": 0,
      +      "description": "Minute 0-59.",
      +      "maximum": 59,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "second": {
      +      "default": 0,
      +      "description": "Second 0 to under 60; may be fractional.",
      +      "maximum": 59.999999,
      +      "minimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "type": "object"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "operation",
      -  "hours",
      -  "minutes",
      -  "seconds"
      -]New value: +[
      +  "operation"
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "data": {
      +      "description": "Normalized duration result.",
      +      "properties": {
      +        "hhmmss": {
      +          "description": "HH:MM:SS string from the unsigned magnitude; hours may exceed 99; prefixed with - when negative.",
      +          "type": "string"
      +        },
      +        "hms": {
      +          "description": "Human-readable d/h/m/s form, sign-prefixed when negative.",
      +          "type": "string"
      +        },
      +        "iso8601": {
      +          "description": "ISO 8601 duration PT[H][M][S]; PT0S for zero; prefixed with - when negative.",
      +          "type": "string"
      +        },
      +        "negative": {
      +          "description": "True when the duration is less than zero.",
      +          "type": "boolean"
      +        },
      +        "normalized": {
      +          "description": "Signed component breakdown of the duration.",
      +          "properties": {
      +            "days": {
      +              "description": "Whole days (signed if duration is negative).",
      +              "type": "integer"
      +            },
      +            "hours": {
      +              "description": "Whole hours after days (signed).",
      +              "type": "integer"
      +            },
      +            "minutes": {
      +              "description": "Whole minutes after hours (signed).",
      +              "type": "integer"
      +            },
      +            "seconds": {
      +              "description": "Seconds after minutes; may be fractional (signed).",
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "totalDays": {
      +          "description": "Whole duration in days (totalSeconds/86400).",
      +          "type": "number"
      +        },
      +        "totalHours": {
      +          "description": "Whole duration in hours (totalSeconds/3600).",
      +          "type": "number"
      +        },
      +        "totalMinutes": {
      +          "description": "Whole duration in minutes (totalSeconds/60).",
      +          "type": "number"
      +        },
      +        "totalSeconds": {
      +          "description": "Whole duration in seconds (signed; may be fractional).",
      +          "type": "number"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "operation": {
      +      "description": "The operation that was run, echoed back.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds context: runs locally, read-only, deterministic, offline-capable, rate-limited, no auth, and describes return format. 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.

Conciseness5/5

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

Description is concise (under 200 words) and well-structured: front-loaded with purpose, then operation details, then sibling tool comparisons, then behavioral notes and return format. Every sentence provides essential 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 the tool's complexity (13 parameters, 6 operations, nested objects) and that it has an output schema, the description covers everything: purpose, when to use, operation semantics, behavioral traits, and return structure. It leaves no significant gaps.

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?

Input schema has 100% description coverage. The description explains each operation's semantics (e.g., 'compute normalizes one duration; add sums 2-100 durations; subtract returns a-b (negative allowed); multiply scales; divide divides; between returns end-start'). This adds value 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 does pure clock-time/duration arithmetic on HH:MM:SS or total seconds, and explicitly distinguishes it from sibling tools like time_date_difference, time_age_calculator, and convert_timestamp.

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 instructions on when to use this tool and when to use alternatives, e.g., 'use time_date_difference for calendar years/months/days and business-day counts, time_age_calculator for age/birthday spans, and convert_timestamp for Unix-epoch to human-date conversion.'

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