TeamPredict HR Calculators

HR, payroll and date calculators: turnover, eNPS, US take-home pay, bonus tax, overtime. No key.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
100%
Naming quality
84%
Poisoning risk
100%
Permission match
90%
Protocol compliance
100%

Findings (1)

  • LOWTool 'hourly_to_salary' suggests web access but openWorldHint=falsein hourly_to_salary

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~14,037Tokens (tool definitions)
~5.7 KBTypical response size
Significant attention impact (10.97% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "hr-calculators": {
      "url": "https://www.teampredict.ai/mcp"
    }
  }
}

Remote endpoints

https://www.teampredict.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (22)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢employee_turnover_cost(employees, average_salary_usd, annual_turnover_rate_percent, replacement_cost_percent_of_salary, target_reduction_points)

Estimate what employee turnover costs a company per year, and how much cutting turnover would save. Use it when you know headcount, average salary and the annual turnover rate and want the dollar cost of people leaving. Use employee_turnover_rate instead to work out the turnover rate itself from headcounts and leavers, and cost_of_a_bad_hire for the cost of one specific failed hire. Returns departures per year, cost per departure, total annual cost and the yearly saving from a given cut in turnover. Same formula as the TeamPredict turnover cost calculator.

Input Schema

{
  "type": "object",
  "properties": {
    "employees": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000000,
      "description": "Number of employees (headcount), a whole number from 1 to 1,000,000."
    },
    "average_salary_usd": {
      "type": "number",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Average annual salary per employee, in US dollars. For example 70000."
    },
    "annual_turnover_rate_percent": {
      "type": "number",
      "minimum": 0,
      "maximum": 100,
      "description": "Share of employees who leave in a year, as a percentage from 0 to 100. 15 means 15%."
    },
    "replacement_cost_percent_of_salary": {
      "default": 50,
      "description": "What replacing one person costs, as a percentage of their annual salary. 50 means half a year of pay, which is the calculator's default; published estimates range from about 30 to 200.",
      "type": "number",
      "minimum": 0,
      "maximum": 500
    },
    "target_reduction_points": {
      "default": 3,
      "description": "Percentage points of annual turnover you want to cut, for the savings figure. Capped at the turnover rate. Default 3.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    }
  },
  "required": [
    "employees",
    "average_salary_usd",
    "annual_turnover_rate_percent"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢employee_turnover_rate(period, starting_headcount, ending_headcount, separations)

Calculate the employee turnover (attrition) rate for a month, quarter or year from starting headcount, ending headcount and the number of people who left. Use it when you have headcounts and separations and need the rate; it also annualizes a monthly or quarterly rate. Use employee_retention_rate instead when you can split leavers into people who were there at the start and people hired during the period, and employee_turnover_cost to price the turnover in dollars. Returns the turnover rate for the period, the annualized rate, average headcount and a simple retention rate.

Input Schema

{
  "type": "object",
  "properties": {
    "period": {
      "default": "year",
      "description": "The length of the measurement period: month, quarter or year. Default year.",
      "type": "string",
      "enum": [
        "month",
        "quarter",
        "year"
      ]
    },
    "starting_headcount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Employees on the payroll at the start of the period."
    },
    "ending_headcount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Employees on the payroll at the end of the period."
    },
    "separations": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "People who left during the period, voluntarily or not."
    }
  },
  "required": [
    "starting_headcount",
    "ending_headcount",
    "separations"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢employee_retention_rate(starting_headcount, new_hires, leavers_from_starting_group, leavers_from_new_hires)

Calculate the employee retention rate exactly, by separating leavers who were on the payroll at the start of the period from leavers who were hired during it. Use it when you can tell those two groups of leavers apart; it returns the standard retention rate, the new-hire retention rate, the turnover rate and the ending headcount, and shows why retention and turnover do not add up to 100%. Use employee_turnover_rate instead when you only have one total for people who left.

Input Schema

{
  "type": "object",
  "properties": {
    "starting_headcount": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Employees on the payroll when the period opened."
    },
    "new_hires": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "People hired during the period."
    },
    "leavers_from_starting_group": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Leavers who were already on the payroll when the period opened. Cannot exceed starting_headcount."
    },
    "leavers_from_new_hires": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Leavers who were hired during the period. Cannot exceed new_hires."
    }
  },
  "required": [
    "starting_headcount",
    "new_hires",
    "leavers_from_starting_group",
    "leavers_from_new_hires"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢cost_of_a_bad_hire(annual_salary_usd, months_employed, lost_productivity_percent, recruiting_cost_usd, onboarding_cost_usd, ...)

Estimate the total cost of one bad hire: the salary paid for lost productivity plus recruiting, onboarding, manager time, severance and the cost of hiring a replacement. Use it for a single failed hire with a known salary and tenure. Use employee_turnover_cost instead for the company-wide cost of turnover across many employees, and severance_pay for the pay owed to a departing employee. Every cost line is optional and defaults to the TeamPredict calculator's default; set a line to 0 to leave it out.

Input Schema

{
  "type": "object",
  "properties": {
    "annual_salary_usd": {
      "type": "number",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Annual salary of the role, in US dollars."
    },
    "months_employed": {
      "type": "number",
      "minimum": 0,
      "maximum": 120,
      "description": "Months the hire stayed before leaving or being let go, 0 to 120."
    },
    "lost_productivity_percent": {
      "default": 60,
      "description": "Share of the salary paid during the tenure that bought no useful work, 0 to 100. Default 60.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "recruiting_cost_usd": {
      "default": 5000,
      "description": "Recruiting and agency cost, in US dollars. Default 5000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "onboarding_cost_usd": {
      "default": 3000,
      "description": "Onboarding and training cost, in US dollars. Default 3000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "manager_time_cost_usd": {
      "default": 4000,
      "description": "Value of manager and team time spent on the hire, in US dollars. Default 4000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "severance_and_exit_cost_usd": {
      "default": 5000,
      "description": "Severance and exit cost, in US dollars. Default 5000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "rehire_cost_usd": {
      "default": 8000,
      "description": "Cost of finding and hiring the replacement, in US dollars. Default 8000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    }
  },
  "required": [
    "annual_salary_usd",
    "months_employed"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢enps_score(promoters, passives, detractors)

Calculate an employee Net Promoter Score (eNPS) from survey response counts: the percentage of promoters minus the percentage of detractors, from -100 to +100. Use it when you have the count of people who answered 9-10 (promoters), 7-8 (passives) and 0-6 (detractors) to the question 'How likely are you to recommend working here?'. Returns the score, both percentages and a rule-of-thumb reading (not a universal benchmark).

Input Schema

{
  "type": "object",
  "properties": {
    "promoters": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Number of responses scoring 9 or 10."
    },
    "passives": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Number of responses scoring 7 or 8."
    },
    "detractors": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Number of responses scoring 0 to 6."
    }
  },
  "required": [
    "promoters",
    "passives",
    "detractors"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢fte_calculator(full_time_employees, full_time_hours_per_week, part_time_groups)

Count full-time equivalent employees (FTE) from full-time staff and groups of part-time staff, and run the Affordable Care Act count that decides whether an employer has 50 or more full-time equivalents. Use it for workforce planning, headcount reporting or checking applicable-large-employer status. FTE is total weekly hours divided by the hours of one full-time schedule; the ACA count uses the IRS rule (30 hours a week is full-time, other employees count their monthly hours up to 120 each, divided by 120). Returns both counts; assumes every month looks like the one entered.

Input Schema

{
  "type": "object",
  "properties": {
    "full_time_employees": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000,
      "description": "Number of full-time employees."
    },
    "full_time_hours_per_week": {
      "default": 40,
      "description": "Weekly hours of one full-time schedule at your company. Default 40.",
      "type": "number",
      "minimum": 1,
      "maximum": 168
    },
    "part_time_groups": {
      "default": [],
      "description": "Up to 6 groups of part-time staff, each with a head count and weekly hours per person. Leave empty if there are none.",
      "maxItems": 6,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "people": {
            "type": "integer",
            "minimum": 0,
            "maximum": 10000000,
            "description": "People in this group."
          },
          "hours_per_week": {
            "type": "number",
            "minimum": 0,
            "maximum": 168,
            "description": "Hours each person in the group works per week."
          }
        },
        "required": [
          "people",
          "hours_per_week"
        ]
      }
    }
  },
  "required": [
    "full_time_employees"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢pto_accrual(annual_pto, unit, hours_per_day, pay_frequency, hours_worked_per_year, ...)

Work out how paid time off accrues: hours earned per pay period, per month and per hour worked, plus the balance after each pay period, with an optional balance cap and hours already used. Use it to design or explain a PTO policy, or to project an employee's balance by year end. Accrual pauses while the balance sits at the cap and resumes once time is used. Use hourly_to_salary or salary_increase for pay questions, not this tool.

Input Schema

{
  "type": "object",
  "properties": {
    "annual_pto": {
      "type": "number",
      "minimum": 0,
      "maximum": 100000,
      "description": "Paid time off granted per year, in the unit given by unit (for example 15 days or 120 hours)."
    },
    "unit": {
      "default": "days",
      "description": "Whether annual_pto is in days or hours. Default days.",
      "type": "string",
      "enum": [
        "days",
        "hours"
      ]
    },
    "hours_per_day": {
      "default": 8,
      "description": "Hours in one working day, used to convert days to hours. Default 8.",
      "type": "number",
      "minimum": 0.5,
      "maximum": 24
    },
    "pay_frequency": {
      "default": "biweekly",
      "description": "How often accrual is credited: weekly (52 a year), biweekly (26), semimonthly (24) or monthly (12). Default biweekly.",
      "type": "string",
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ]
    },
    "hours_worked_per_year": {
      "default": 2080,
      "description": "Paid hours worked in a year, for the accrual per hour worked. Default 2080 (40 hours x 52 weeks).",
      "type": "number",
      "minimum": 1,
      "maximum": 8784
    },
    "starting_balance_hours": {
      "default": 0,
      "description": "PTO balance in hours at the start of the year. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    },
    "hours_used_this_year": {
      "default": 0,
      "description": "PTO hours already taken this year. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    },
    "pay_periods_completed": {
      "default": 0,
      "description": "Pay periods already paid this year, so the balance can be shown as of today. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 52
    },
    "balance_cap_hours": {
      "description": "Maximum PTO balance in hours; accrual pauses at the cap. Leave out for no cap.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    }
  },
  "required": [
    "annual_pto"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢salary_increase(pay_unit, current_pay, raise_percent, new_pay, hours_per_week, ...)

Calculate a pay raise: the new annual and hourly pay, the raise per year, month and biweekly paycheck, the raise as a percentage, and whether it keeps up with inflation. Give either raise_percent (a percentage raise on current pay) or new_pay (the new pay, from which the percentage is worked out), and the pay as per year or per hour. Use hourly_to_salary instead to convert between pay periods without a raise, and us_paycheck_take_home for take-home pay after tax. All amounts are before tax.

Input Schema

{
  "type": "object",
  "properties": {
    "pay_unit": {
      "default": "year",
      "description": "Whether current_pay and new_pay are per year or per hour. Default year.",
      "type": "string",
      "enum": [
        "year",
        "hour"
      ]
    },
    "current_pay": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000000,
      "description": "Current pay in US dollars, per year or per hour according to pay_unit."
    },
    "raise_percent": {
      "description": "The raise as a percentage of current pay, for example 4 for 4%. Give this or new_pay.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000
    },
    "new_pay": {
      "description": "The new pay in US dollars, per year or per hour according to pay_unit. Give this or raise_percent.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000000
    },
    "hours_per_week": {
      "default": 40,
      "description": "Hours worked per week, to move between hourly and yearly pay (52 weeks a year). Default 40.",
      "type": "number",
      "minimum": 1,
      "maximum": 168
    },
    "inflation_percent": {
      "default": 3.7,
      "description": "Expected yearly inflation as a percentage, to show the raise in real terms. Default 3.7 (US CPI-U, 12 months to September 2026).",
      "type": "number",
      "minimum": -50,
      "maximum": 1000
    }
  },
  "required": [
    "current_pay"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢severance_pay(annual_salary_usd, years_of_service, weeks_of_pay_per_year, minimum_weeks, maximum_weeks, ...)

Estimate a severance package: weeks of pay per year of service times years of service times weekly pay, with an optional plan minimum and maximum, plus unused PTO paid out, employer-paid health coverage and other lump sums. Use it for an employer budgeting an exit or an employee checking an offer; every input is the plan's own terms, because US federal law sets no severance formula. Use cost_of_a_bad_hire for the all-in cost of a failed hire instead. Amounts are before tax.

Input Schema

{
  "type": "object",
  "properties": {
    "annual_salary_usd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000000,
      "description": "Annual salary in US dollars; weekly pay is salary divided by 52."
    },
    "years_of_service": {
      "type": "number",
      "minimum": 0,
      "maximum": 80,
      "description": "Years of service, decimals allowed (for example 4.5)."
    },
    "weeks_of_pay_per_year": {
      "type": "number",
      "minimum": 0,
      "maximum": 52,
      "description": "Weeks of pay the plan gives for each year of service. Many plans use 1 or 2; there is no legal standard."
    },
    "minimum_weeks": {
      "description": "The plan's minimum severance in weeks of pay, if any. Lifts a short tenure up to this figure.",
      "type": "number",
      "minimum": 0,
      "maximum": 520
    },
    "maximum_weeks": {
      "description": "The plan's cap in weeks of pay, if any. Trims a long tenure down to this figure; if below the minimum, the cap wins.",
      "type": "number",
      "minimum": 0,
      "maximum": 520
    },
    "unused_pto_days": {
      "default": 0,
      "description": "Unused PTO days paid out, valued at salary divided by 260 working days. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000
    },
    "health_coverage_months": {
      "default": 0,
      "description": "Months of health coverage the employer pays. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 120
    },
    "monthly_health_premium_usd": {
      "default": 0,
      "description": "Monthly cost of that coverage in US dollars. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    },
    "other_lump_sums_usd": {
      "default": 0,
      "description": "Any other lump sums, such as a pro-rated bonus, in US dollars. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    }
  },
  "required": [
    "annual_salary_usd",
    "years_of_service",
    "weeks_of_pay_per_year"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢us_paycheck_take_home(state, pay_type, annual_salary_usd, hourly_rate_usd, regular_hours_per_week, ...)

Calculate US take-home (net) pay from a salary or an hourly wage for 2026, after federal income tax (from the Form W-4), Social Security, Medicare and the state's own income tax and payroll contributions, in any of the 50 states or DC. Use it for 'how much will I take home on $X in <state>?', for comparing states, or to price an offer; it also returns the full-year totals and what the employer pays on top. Use us_bonus_tax instead for tax withheld from a bonus, overtime_pay for the extra pay for overtime hours before tax, and hourly_to_salary for converting pay between hour, week, month and year without tax. Assumes the 2026 federal withholding method and the state's published employer withholding formula, one job, and a W-4 filed in the standard way.

Input Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "TX",
        "FL",
        "CA",
        "NY",
        "IL",
        "NC",
        "GA",
        "PA",
        "OH",
        "NJ",
        "MI",
        "VA",
        "CO",
        "MA",
        "OR",
        "AK",
        "NV",
        "SD",
        "WA",
        "WY",
        "NH",
        "TN",
        "AZ",
        "IN",
        "KY",
        "UT",
        "IA",
        "ID",
        "MS",
        "LA",
        "AR",
        "KS",
        "MT",
        "NE",
        "ND",
        "OK",
        "SC",
        "VT",
        "WV",
        "WI",
        "AL",
        "CT",
        "DE",
        "DC",
        "HI",
        "ME",
        "MD",
        "MN",
        "MO",
        "NM",
        "RI"
      ],
      "description": "Two-letter postal code of the state where the employee works and lives: all 50 states and DC (for example CA, NY, TX, DC)."
    },
    "pay_type": {
      "default": "salary",
      "description": "Whether the employee is paid a yearly salary or an hourly wage. Default salary.",
      "type": "string",
      "enum": [
        "salary",
        "hourly"
      ]
    },
    "annual_salary_usd": {
      "description": "Yearly gross salary in US dollars. Required when pay_type is salary. For example 60000.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "hourly_rate_usd": {
      "description": "Hourly wage in US dollars. Required when pay_type is hourly. For example 25.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000
    },
    "regular_hours_per_week": {
      "default": 40,
      "description": "Regular (straight-time) hours per week, hourly pay only. Default 40.",
      "type": "number",
      "minimum": 0,
      "maximum": 168
    },
    "overtime_hours_per_week": {
      "default": 0,
      "description": "Overtime hours per week paid at time and a half, hourly pay only. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 168
    },
    "pay_frequency": {
      "default": "biweekly",
      "description": "How often the employee is paid: weekly (52 paychecks a year), biweekly (26), semimonthly (24, twice a month) or monthly (12). Default biweekly.",
      "type": "string",
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ]
    },
    "filing_status": {
      "default": "single",
      "description": "Filing status on the federal Form W-4, step 1(c): single (or married filing separately), married (filing jointly) or head (head of household). Default single.",
      "type": "string",
      "enum": [
        "single",
        "married",
        "head"
      ]
    },
    "w4_step2_checkbox": {
      "default": false,
      "description": "The 'multiple jobs or spouse works' box in Form W-4 step 2(c). Default false.",
      "type": "boolean"
    },
    "w4_children_under_17": {
      "default": 0,
      "description": "Qualifying children under 17 for Form W-4 step 3 (a $2,200 credit each in 2026). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 30
    },
    "w4_other_dependents": {
      "default": 0,
      "description": "Other dependents for Form W-4 step 3 (a $500 credit each). Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 30
    },
    "w4_other_income_usd_per_year": {
      "default": 0,
      "description": "Other income not from jobs, Form W-4 step 4(a), in US dollars per year. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "w4_deductions_usd_per_year": {
      "default": 0,
      "description": "Deductions above the standard deduction, Form W-4 step 4(b), in US dollars per year. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100000000
    },
    "w4_extra_withholding_usd_per_paycheck": {
      "default": 0,
      "description": "Extra federal withholding per paycheck, Form W-4 step 4(c), in US dollars. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "traditional_401k_percent": {
      "default": 0,
      "description": "Pre-tax 401(k) contribution as a percentage of gross pay, 0 to 100 (capped at the 2026 IRS limit). Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 100
    },
    "health_premiums_usd_per_paycheck": {
      "default": 0,
      "description": "Pre-tax health, dental and vision premiums per paycheck, in US dollars. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "hsa_usd_per_paycheck": {
      "default": 0,
      "description": "Pre-tax HSA contribution through payroll per paycheck, in US dollars (capped at the 2026 family limit). Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000
    },
    "state_allowances": {
      "description": "Allowances or exemptions on the state's own withholding form, for states that have one. Leave out to use the typical single worker's number for that state.",
      "type": "integer",
      "minimum": 0,
      "maximum": 50
    },
    "local_tax": {
      "description": "Id of a city or county income tax to include (for example 'nyc' or 'yonkers' for New York). Leave out for none; an unknown id returns the ids that state accepts.",
      "type": "string",
      "maxLength": 40
    }
  },
  "required": [
    "state"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢us_bonus_tax(state, annual_salary_usd, bonus_usd, pay_frequency, filing_status, ...)

Calculate how much tax is withheld from a US bonus in 2026 and what is left: federal income tax (the 22% flat rate or the combined method, 37% above $1 million), Social Security, Medicare, and the state's own bonus withholding rule, for all 50 states and DC. Use it for 'how much of my $X bonus will I keep in <state>?'. Withholding is not the final tax: the bonus is taxed at your normal rate on your return. Use us_paycheck_take_home instead for regular pay, and salary_increase for a raise. When the bonus is paid on its own it also returns the result under the other federal method so the two can be compared.

Input Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "TX",
        "FL",
        "CA",
        "NY",
        "IL",
        "NC",
        "GA",
        "PA",
        "OH",
        "NJ",
        "MI",
        "VA",
        "CO",
        "MA",
        "OR",
        "AK",
        "NV",
        "SD",
        "WA",
        "WY",
        "NH",
        "TN",
        "AZ",
        "IN",
        "KY",
        "UT",
        "IA",
        "ID",
        "MS",
        "LA",
        "AR",
        "KS",
        "MT",
        "NE",
        "ND",
        "OK",
        "SC",
        "VT",
        "WV",
        "WI",
        "AL",
        "CT",
        "DE",
        "DC",
        "HI",
        "ME",
        "MD",
        "MN",
        "MO",
        "NM",
        "RI"
      ],
      "description": "Two-letter postal code of the state where the employee works and lives: all 50 states and DC (for example CA, NY, TX, DC)."
    },
    "annual_salary_usd": {
      "type": "number",
      "minimum": 0,
      "maximum": 100000000,
      "description": "Regular yearly salary in US dollars, before the bonus. For example 75000."
    },
    "bonus_usd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000,
      "description": "Gross bonus in US dollars. For example 5000."
    },
    "pay_frequency": {
      "default": "biweekly",
      "description": "How often the employee is paid: weekly (52 paychecks a year), biweekly (26), semimonthly (24, twice a month) or monthly (12). Default biweekly.",
      "type": "string",
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ]
    },
    "filing_status": {
      "default": "single",
      "description": "Filing status on the federal Form W-4, step 1(c): single (or married filing separately), married (filing jointly) or head (head of household). Default single.",
      "type": "string",
      "enum": [
        "single",
        "married",
        "head"
      ]
    },
    "w4_step2_checkbox": {
      "default": false,
      "description": "The 'multiple jobs or spouse works' box in Form W-4 step 2(c). Default false.",
      "type": "boolean"
    },
    "bonus_paid": {
      "default": "separately",
      "description": "Whether the employer pays the bonus as a separate payment (the usual case) or adds it to a regular paycheck. Default separately.",
      "type": "string",
      "enum": [
        "separately",
        "with_regular_paycheck"
      ]
    },
    "federal_method": {
      "default": "flat_22_percent",
      "description": "How the employer withholds federal income tax on a bonus paid separately: the flat 22% rate (the common choice) or the combined (aggregate) method. Ignored when the bonus is paid with a regular paycheck. Default flat_22_percent.",
      "type": "string",
      "enum": [
        "flat_22_percent",
        "combined"
      ]
    },
    "earlier_supplemental_pay_usd": {
      "default": 0,
      "description": "Bonuses and other supplemental pay already paid this calendar year, before this one, in US dollars. Total supplemental pay above $1 million in a year is withheld at 37%. Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 1000000000
    }
  },
  "required": [
    "state",
    "annual_salary_usd",
    "bonus_usd"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢hourly_to_salary(amount_usd, period, hours_per_week, days_per_week, paid_weeks_per_year)

Convert pay between hourly, daily, weekly, biweekly, semimonthly, monthly and yearly, in either direction, from one amount. Use it for 'what is $25 an hour per year?' or 'what is $90,000 a year per hour?'. It uses hours per week and paid weeks per year (default 40 hours and 52 weeks), so a 2,080-hour year is the default. Amounts are gross, before tax. Use us_paycheck_take_home for take-home pay after tax and overtime_pay for pay that includes overtime hours.

Input Schema

{
  "type": "object",
  "properties": {
    "amount_usd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 1000000000,
      "description": "The pay you know, in US dollars for the period named by period."
    },
    "period": {
      "default": "hour",
      "description": "The period that amount_usd is paid per: hour, day, week, biweekly (every two weeks, 26 a year), semimonthly (twice a month, 24 a year), month or year. Default hour.",
      "type": "string",
      "enum": [
        "hour",
        "day",
        "week",
        "biweekly",
        "semimonthly",
        "month",
        "year"
      ]
    },
    "hours_per_week": {
      "default": 40,
      "description": "Hours worked in a paid week. Default 40.",
      "type": "number",
      "minimum": 0.5,
      "maximum": 168
    },
    "days_per_week": {
      "default": 5,
      "description": "Days worked in a week, for the per-day figure. Default 5.",
      "type": "number",
      "minimum": 1,
      "maximum": 7
    },
    "paid_weeks_per_year": {
      "default": 52,
      "description": "Paid weeks in a year; use 50 or 48 to leave out unpaid vacation. Default 52.",
      "type": "number",
      "minimum": 1,
      "maximum": 52
    }
  },
  "required": [
    "amount_usd"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢overtime_pay(rule_set, hourly_rate_usd, hours_worked, extra_pay_usd, daily_hours)

Calculate a week of overtime pay at time and a half under the federal FLSA rule (hours over 40 in the week) or California's rules (daily overtime over 8 hours, double time over 12, the seventh consecutive day, and the weekly 40). Use rule_set federal with total hours worked in the week and any extra pay that counts toward the regular rate, such as a nondiscretionary bonus; use rule_set california with the hours worked on each of the seven days. Returns regular and overtime hours and pay and the week's total, gross before tax. Use us_paycheck_take_home with overtime_hours_per_week for take-home pay including overtime, and hourly_to_salary for converting pay without overtime.

Input Schema

{
  "type": "object",
  "properties": {
    "rule_set": {
      "default": "federal",
      "description": "The overtime rules to apply: federal (weekly, over 40 hours) or california (daily, seventh day and weekly). Default federal.",
      "type": "string",
      "enum": [
        "federal",
        "california"
      ]
    },
    "hourly_rate_usd": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100000,
      "description": "Regular hourly rate in US dollars."
    },
    "hours_worked": {
      "description": "Total hours worked in the week (federal rule_set only), 0 to 168.",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 168
    },
    "extra_pay_usd": {
      "default": 0,
      "description": "Extra pay for the week that counts toward the regular rate, such as a nondiscretionary bonus, in US dollars (federal rule_set only). Default 0.",
      "type": "number",
      "minimum": 0,
      "maximum": 10000000
    },
    "daily_hours": {
      "description": "Hours worked on each day of the workweek, in order, up to 7 entries (california rule_set only). The seventh day counts as the seventh consecutive day only when all seven days have hours.",
      "minItems": 1,
      "maxItems": 7,
      "type": "array",
      "items": {
        "type": "number",
        "minimum": 0,
        "maximum": 24
      }
    }
  },
  "required": [
    "hourly_rate_usd"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢business_days_between(start_date, end_date, include_end_date, skip_us_federal_holidays)

Count the business days (Monday to Friday, optionally skipping US federal holidays) between two dates. Use it for working-day questions such as notice periods, delivery windows, payroll runs and project lead times. Use add_business_days instead to find the date that is N business days from a start date, and days_between_dates for plain calendar days. Holidays are the 11 US federal holidays with their observed dates when one falls on a weekend; company and state holidays are not included. Valid for years 2000 to 2100.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The first date as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The second date; if it is before start_date the two are swapped as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "include_end_date": {
      "default": true,
      "description": "Whether the end date itself is counted when it is a business day. Default true.",
      "type": "boolean"
    },
    "skip_us_federal_holidays": {
      "default": true,
      "description": "Whether US federal holidays are left out of the business-day count. Default true.",
      "type": "boolean"
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢add_business_days(start_date, business_days, direction, skip_us_federal_holidays)

Find the date that is a given number of business days after (or before) a start date, skipping weekends and optionally US federal holidays. Use it to answer 'what is the due date 10 business days from now?', delivery dates, response deadlines and notice periods. Use business_days_between instead to count the working days between two known dates, and add_to_date to move by calendar years, months, weeks or days. The start date itself is not counted; day 1 is the next business day. Holidays are the 11 US federal holidays with observed dates. Valid for years 2000 to 2100.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date to count from as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "business_days": {
      "type": "integer",
      "minimum": 0,
      "maximum": 10000,
      "description": "How many business days to move, a whole number from 0 to 10,000."
    },
    "direction": {
      "default": "add",
      "description": "add to move forward in time, subtract to move back. Default add.",
      "type": "string",
      "enum": [
        "add",
        "subtract"
      ]
    },
    "skip_us_federal_holidays": {
      "default": true,
      "description": "Whether US federal holidays are skipped as well as weekends. Default true.",
      "type": "boolean"
    }
  },
  "required": [
    "start_date",
    "business_days"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢add_to_date(start_date, direction, years, months, weeks, ...)

Add or subtract years, months, weeks and days to or from a calendar date and get the resulting date with its weekday, ISO week and day of the year. Use it for 'what is the date 90 days from today?', contract end dates, probation periods and anniversaries. Years and months move by the calendar first (Jan 31 plus one month is the last day of February), then weeks and days. Use add_business_days to skip weekends and holidays and days_between_dates to measure the gap between two dates. Valid for years 2000 to 2100.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date to start from as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "direction": {
      "default": "add",
      "description": "add to move forward, subtract to move back. Default add.",
      "type": "string",
      "enum": [
        "add",
        "subtract"
      ]
    },
    "years": {
      "default": 0,
      "description": "Years to move, 0 to 100. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100
    },
    "months": {
      "default": 0,
      "description": "Months to move, 0 to 1,200. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 1200
    },
    "weeks": {
      "default": 0,
      "description": "Weeks to move, 0 to 5,300. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 5300
    },
    "days": {
      "default": 0,
      "description": "Days to move, 0 to 37,000. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 37000
    }
  },
  "required": [
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢days_between_dates(start_date, end_date, include_end_date)

Count the calendar days between two dates and break the gap into weeks, months and years, with the weekdays and weekend days inside it. Use it for 'how many days until X', tenure, age of a record, notice periods in calendar days and countdowns. Use business_days_between instead to leave out weekends and federal holidays, and time_duration_between when clock times matter. Valid for years 2000 to 2100.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The first date as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The second date; if it is before start_date the two are swapped as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "include_end_date": {
      "default": false,
      "description": "Whether the end date itself counts as a day, which adds one to the total. Default false.",
      "type": "boolean"
    }
  },
  "required": [
    "start_date",
    "end_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢time_duration_between(start_date, start_time, end_date, end_time, time_zone)

Work out how much time passes between a start and an end date and time, in days, hours and minutes, accounting for daylight saving changes in the chosen US time zone. Use it for shift lengths that cross midnight, elapsed time on a ticket, on-call windows and billing time. Use days_between_dates for whole calendar days, add_time_to_datetime to move a date-time forward or back by a known amount, and military_shift_hours for a shift written in 24-hour times only.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The start date as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "start_time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "The start time as a 24-hour clock time in the form HH:MM, for example 22:30."
    },
    "end_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The end date as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "end_time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "The end time as a 24-hour clock time in the form HH:MM, for example 22:30."
    },
    "time_zone": {
      "default": "America/New_York",
      "description": "The time zone the clock times are read in, so a span across a daylight saving change counts the hour that really passes. Use 'none' for plain 24-hour days with no zone. Default America/New_York.",
      "type": "string",
      "enum": [
        "none",
        "America/New_York",
        "America/Chicago",
        "America/Denver",
        "America/Phoenix",
        "America/Los_Angeles",
        "America/Anchorage",
        "Pacific/Honolulu",
        "America/Puerto_Rico",
        "UTC"
      ]
    }
  },
  "required": [
    "start_date",
    "start_time",
    "end_date",
    "end_time"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢add_time_to_datetime(start_date, start_time, time_zone, direction, days, ...)

Move a date and clock time forward or back by days, hours and minutes in a US time zone and get the resulting date and time. Days move the calendar date and keep the clock time (the way a phone calendar does); hours and minutes are counted as they really pass, so a daylight saving change inside the span is handled. Use time_duration_between instead to measure the gap between two known date-times, add_to_date for calendar years, months and weeks, and convert_time_zone to show a moment in other zones.

Input Schema

{
  "type": "object",
  "properties": {
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date to start from as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "start_time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "The time to start from as a 24-hour clock time in the form HH:MM, for example 22:30."
    },
    "time_zone": {
      "default": "America/New_York",
      "description": "The time zone the clock times are read in, so a span across a daylight saving change counts the hour that really passes. Use 'none' for plain 24-hour days with no zone. Default America/New_York.",
      "type": "string",
      "enum": [
        "none",
        "America/New_York",
        "America/Chicago",
        "America/Denver",
        "America/Phoenix",
        "America/Los_Angeles",
        "America/Anchorage",
        "Pacific/Honolulu",
        "America/Puerto_Rico",
        "UTC"
      ]
    },
    "direction": {
      "default": "add",
      "description": "add to move forward, subtract to move back. Default add.",
      "type": "string",
      "enum": [
        "add",
        "subtract"
      ]
    },
    "days": {
      "default": 0,
      "description": "Days to move. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000
    },
    "hours": {
      "default": 0,
      "description": "Hours to move. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 10000000
    },
    "minutes": {
      "default": 0,
      "description": "Minutes to move. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 100000000
    }
  },
  "required": [
    "start_date",
    "start_time"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢convert_time_zone(date, time, from_time_zone, to_time_zones)

Convert one date and clock time from a source time zone to other time zones, with daylight saving applied for that date, and find the stretch of the day when it is 9 AM to 5 PM in every zone at once. Use it to schedule across offices, pick a meeting time for a distributed team, or answer 'what is 3 PM Eastern in London?'. Supports 24 zones (US zones, UTC and major world zones); the valid zone ids are listed in the schema. Use time_duration_between for the length of time between two moments.

Input Schema

{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date in the source time zone as a calendar date in the form YYYY-MM-DD, for example 2026-11-02."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "The clock time in the source time zone as a 24-hour clock time in the form HH:MM, for example 22:30."
    },
    "from_time_zone": {
      "default": "America/New_York",
      "description": "IANA id of the source time zone. Default America/New_York.",
      "type": "string",
      "enum": [
        "America/New_York",
        "America/Chicago",
        "America/Denver",
        "America/Phoenix",
        "America/Los_Angeles",
        "America/Anchorage",
        "Pacific/Honolulu",
        "America/Puerto_Rico",
        "UTC",
        "Europe/London",
        "Europe/Dublin",
        "Europe/Paris",
        "Europe/Athens",
        "Africa/Lagos",
        "Asia/Dubai",
        "Asia/Kolkata",
        "Asia/Manila",
        "Asia/Singapore",
        "Asia/Tokyo",
        "Australia/Sydney",
        "America/Mexico_City",
        "America/Toronto",
        "America/Bogota",
        "America/Sao_Paulo"
      ]
    },
    "to_time_zones": {
      "minItems": 1,
      "maxItems": 12,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "America/New_York",
          "America/Chicago",
          "America/Denver",
          "America/Phoenix",
          "America/Los_Angeles",
          "America/Anchorage",
          "Pacific/Honolulu",
          "America/Puerto_Rico",
          "UTC",
          "Europe/London",
          "Europe/Dublin",
          "Europe/Paris",
          "Europe/Athens",
          "Africa/Lagos",
          "Asia/Dubai",
          "Asia/Kolkata",
          "Asia/Manila",
          "Asia/Singapore",
          "Asia/Tokyo",
          "Australia/Sydney",
          "America/Mexico_City",
          "America/Toronto",
          "America/Bogota",
          "America/Sao_Paulo"
        ]
      },
      "description": "IANA ids of the zones to convert to, between 1 and 12 (for example [\"America/Los_Angeles\",\"Europe/London\",\"Asia/Kolkata\"])."
    }
  },
  "required": [
    "date",
    "time",
    "to_time_zones"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢military_time_convert(military_time, hour_12, minute, period)

Convert between military (24-hour) time and standard 12-hour AM/PM time, in either direction. Give military_time (for example 1345, 13:45 or 0800) to get the standard time, or hour_12, minute and period to get the military time. Returns the converted time in every common written form, the plain-English name for special times (midnight, noon) and the hour of the military-time chart it sits in. Use military_shift_hours instead to find how many hours run between two military times.

Input Schema

{
  "type": "object",
  "properties": {
    "military_time": {
      "description": "A military time such as 1345, 13:45, 945 or 2400 (end of day). Give this, or hour_12 with period.",
      "type": "string",
      "maxLength": 10
    },
    "hour_12": {
      "description": "The hour on a 12-hour clock, 1 to 12. Use with period (and minute).",
      "type": "integer",
      "minimum": 1,
      "maximum": 12
    },
    "minute": {
      "default": 0,
      "description": "The minute, 0 to 59, used with hour_12. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 59
    },
    "period": {
      "description": "AM or PM, used with hour_12.",
      "type": "string",
      "enum": [
        "AM",
        "PM"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
🟢military_shift_hours(start_military_time, end_military_time)

Find how long a shift or interval lasts between a start and an end written in military (24-hour) time, including shifts that run past midnight (2200 to 0630 is 8 hours 30 minutes). An end at or before the start counts as the next day. Returns hours and minutes and decimal hours for timesheets. Use military_time_convert to translate a single time between 24-hour and AM/PM, and time_duration_between when the two moments have different dates or a time zone with daylight saving.

Input Schema

{
  "type": "object",
  "properties": {
    "start_military_time": {
      "type": "string",
      "maxLength": 10,
      "description": "The start in military time, for example 2200 or 22:00."
    },
    "end_military_time": {
      "type": "string",
      "maxLength": 10,
      "description": "The end in military time, for example 0630 or 06:30. At or before the start means the next day."
    }
  },
  "required": [
    "start_military_time",
    "end_military_time"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Output Schema

{
  "type": "object",
  "properties": {
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "inputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The inputs as used, with defaults filled in."
    },
    "results": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The computed numbers. Unavailable numbers are null."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded22 tools