Koskamo

TeamPredict MCP

An official remote MCP server provided by TeamPredict that exposes 22 HR, payroll, and date calculation tools. It allows AI agents to compute metrics such as turnover costs, retention rates, eNPS, US take-home pay, bonus tax, overtime, severance, PTO accrual, and business days without requiring authentication or storing data.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

TeamPredict MCP logo, by TeamPredictVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by TeamPredict
MCP endpoint (Streamable HTTP)
https://www.teampredict.ai/mcp
Vendor documentation

What you can do with it

  • Calculate employee turnover costs and rates
  • Compute US take-home pay and bonus tax by state
  • Determine overtime pay and severance packages
  • Calculate business days and time zone differences

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
teampredict-hr-calculators 1.0.0
MCP protocol
2025-06-18
Tools
22 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Free HR, payroll and date calculators from TeamPredict. No account or API key is needed. Each tool runs the same formula as the matching page at teampredict.ai/tools, returns the computed numbers and a plain-English summary, and links to that page so a person can change the inputs. Pay figures follow 2026 US rules. Dates are YYYY-MM-DD and times are 24-hour HH:MM.

Tools

22 advertised

employee_turnover_cost — Employee turnover cost
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

employee_turnover_cost input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "employees",
    "average_salary_usd",
    "annual_turnover_rate_percent"
  ],
  "properties": {
    "employees": {
      "type": "integer",
      "maximum": 1000000,
      "minimum": 1,
      "description": "Number of employees (headcount), a whole number from 1 to 1,000,000."
    },
    "average_salary_usd": {
      "type": "number",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Average annual salary per employee, in US dollars. For example 70000."
    },
    "target_reduction_points": {
      "type": "number",
      "default": 3,
      "maximum": 100,
      "minimum": 0,
      "description": "Percentage points of annual turnover you want to cut, for the savings figure. Capped at the turnover rate. Default 3."
    },
    "annual_turnover_rate_percent": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Share of employees who leave in a year, as a percentage from 0 to 100. 15 means 15%."
    },
    "replacement_cost_percent_of_salary": {
      "type": "number",
      "default": 50,
      "maximum": 500,
      "minimum": 0,
      "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."
    }
  }
}
employee_turnover_cost output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
employee_turnover_cost annotations
{
  "title": "Employee turnover cost",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
employee_turnover_rate — Employee turnover rate
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

employee_turnover_rate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "starting_headcount",
    "ending_headcount",
    "separations"
  ],
  "properties": {
    "period": {
      "enum": [
        "month",
        "quarter",
        "year"
      ],
      "type": "string",
      "default": "year",
      "description": "The length of the measurement period: month, quarter or year. Default year."
    },
    "separations": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "People who left during the period, voluntarily or not."
    },
    "ending_headcount": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Employees on the payroll at the end of the period."
    },
    "starting_headcount": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Employees on the payroll at the start of the period."
    }
  }
}
employee_turnover_rate output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
employee_turnover_rate annotations
{
  "title": "Employee turnover rate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
employee_retention_rate — Employee retention rate
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

employee_retention_rate input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "starting_headcount",
    "new_hires",
    "leavers_from_starting_group",
    "leavers_from_new_hires"
  ],
  "properties": {
    "new_hires": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "People hired during the period."
    },
    "starting_headcount": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Employees on the payroll when the period opened."
    },
    "leavers_from_new_hires": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Leavers who were hired during the period. Cannot exceed new_hires."
    },
    "leavers_from_starting_group": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Leavers who were already on the payroll when the period opened. Cannot exceed starting_headcount."
    }
  }
}
employee_retention_rate output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
employee_retention_rate annotations
{
  "title": "Employee retention rate",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cost_of_a_bad_hire — Cost of a bad hire
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

cost_of_a_bad_hire input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "annual_salary_usd",
    "months_employed"
  ],
  "properties": {
    "months_employed": {
      "type": "number",
      "maximum": 120,
      "minimum": 0,
      "description": "Months the hire stayed before leaving or being let go, 0 to 120."
    },
    "rehire_cost_usd": {
      "type": "number",
      "default": 8000,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Cost of finding and hiring the replacement, in US dollars. Default 8000."
    },
    "annual_salary_usd": {
      "type": "number",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Annual salary of the role, in US dollars."
    },
    "onboarding_cost_usd": {
      "type": "number",
      "default": 3000,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Onboarding and training cost, in US dollars. Default 3000."
    },
    "recruiting_cost_usd": {
      "type": "number",
      "default": 5000,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Recruiting and agency cost, in US dollars. Default 5000."
    },
    "manager_time_cost_usd": {
      "type": "number",
      "default": 4000,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Value of manager and team time spent on the hire, in US dollars. Default 4000."
    },
    "lost_productivity_percent": {
      "type": "number",
      "default": 60,
      "maximum": 100,
      "minimum": 0,
      "description": "Share of the salary paid during the tenure that bought no useful work, 0 to 100. Default 60."
    },
    "severance_and_exit_cost_usd": {
      "type": "number",
      "default": 5000,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Severance and exit cost, in US dollars. Default 5000."
    }
  }
}
cost_of_a_bad_hire output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
cost_of_a_bad_hire annotations
{
  "title": "Cost of a bad hire",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
enps_score — Employee Net Promoter Score (eNPS)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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).

enps_score input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "promoters",
    "passives",
    "detractors"
  ],
  "properties": {
    "passives": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Number of responses scoring 7 or 8."
    },
    "promoters": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Number of responses scoring 9 or 10."
    },
    "detractors": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Number of responses scoring 0 to 6."
    }
  }
}
enps_score output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
enps_score annotations
{
  "title": "Employee Net Promoter Score (eNPS)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fte_calculator — Full-time equivalent (FTE) and ACA count
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

fte_calculator input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "full_time_employees"
  ],
  "properties": {
    "part_time_groups": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "people",
          "hours_per_week"
        ],
        "properties": {
          "people": {
            "type": "integer",
            "maximum": 10000000,
            "minimum": 0,
            "description": "People in this group."
          },
          "hours_per_week": {
            "type": "number",
            "maximum": 168,
            "minimum": 0,
            "description": "Hours each person in the group works per week."
          }
        }
      },
      "default": [],
      "maxItems": 6,
      "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."
    },
    "full_time_employees": {
      "type": "integer",
      "maximum": 10000000,
      "minimum": 0,
      "description": "Number of full-time employees."
    },
    "full_time_hours_per_week": {
      "type": "number",
      "default": 40,
      "maximum": 168,
      "minimum": 1,
      "description": "Weekly hours of one full-time schedule at your company. Default 40."
    }
  }
}
fte_calculator output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
fte_calculator annotations
{
  "title": "Full-time equivalent (FTE) and ACA count",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
pto_accrual — PTO accrual
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

pto_accrual input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "annual_pto"
  ],
  "properties": {
    "unit": {
      "enum": [
        "days",
        "hours"
      ],
      "type": "string",
      "default": "days",
      "description": "Whether annual_pto is in days or hours. Default days."
    },
    "annual_pto": {
      "type": "number",
      "maximum": 100000,
      "minimum": 0,
      "description": "Paid time off granted per year, in the unit given by unit (for example 15 days or 120 hours)."
    },
    "hours_per_day": {
      "type": "number",
      "default": 8,
      "maximum": 24,
      "minimum": 0.5,
      "description": "Hours in one working day, used to convert days to hours. Default 8."
    },
    "pay_frequency": {
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ],
      "type": "string",
      "default": "biweekly",
      "description": "How often accrual is credited: weekly (52 a year), biweekly (26), semimonthly (24) or monthly (12). Default biweekly."
    },
    "balance_cap_hours": {
      "type": "number",
      "maximum": 100000,
      "minimum": 0,
      "description": "Maximum PTO balance in hours; accrual pauses at the cap. Leave out for no cap."
    },
    "hours_used_this_year": {
      "type": "number",
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "description": "PTO hours already taken this year. Default 0."
    },
    "hours_worked_per_year": {
      "type": "number",
      "default": 2080,
      "maximum": 8784,
      "minimum": 1,
      "description": "Paid hours worked in a year, for the accrual per hour worked. Default 2080 (40 hours x 52 weeks)."
    },
    "pay_periods_completed": {
      "type": "integer",
      "default": 0,
      "maximum": 52,
      "minimum": 0,
      "description": "Pay periods already paid this year, so the balance can be shown as of today. Default 0."
    },
    "starting_balance_hours": {
      "type": "number",
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "description": "PTO balance in hours at the start of the year. Default 0."
    }
  }
}
pto_accrual output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
pto_accrual annotations
{
  "title": "PTO accrual",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
salary_increase — Salary increase (pay raise)
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

salary_increase input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "current_pay"
  ],
  "properties": {
    "new_pay": {
      "type": "number",
      "maximum": 100000000,
      "description": "The new pay in US dollars, per year or per hour according to pay_unit. Give this or raise_percent.",
      "exclusiveMinimum": 0
    },
    "pay_unit": {
      "enum": [
        "year",
        "hour"
      ],
      "type": "string",
      "default": "year",
      "description": "Whether current_pay and new_pay are per year or per hour. Default year."
    },
    "current_pay": {
      "type": "number",
      "maximum": 100000000,
      "description": "Current pay in US dollars, per year or per hour according to pay_unit.",
      "exclusiveMinimum": 0
    },
    "raise_percent": {
      "type": "number",
      "maximum": 1000,
      "minimum": 0,
      "description": "The raise as a percentage of current pay, for example 4 for 4%. Give this or new_pay."
    },
    "hours_per_week": {
      "type": "number",
      "default": 40,
      "maximum": 168,
      "minimum": 1,
      "description": "Hours worked per week, to move between hourly and yearly pay (52 weeks a year). Default 40."
    },
    "inflation_percent": {
      "type": "number",
      "default": 3.7,
      "maximum": 1000,
      "minimum": -50,
      "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)."
    }
  }
}
salary_increase output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
salary_increase annotations
{
  "title": "Salary increase (pay raise)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
severance_pay — Severance pay
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

severance_pay input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "annual_salary_usd",
    "years_of_service",
    "weeks_of_pay_per_year"
  ],
  "properties": {
    "maximum_weeks": {
      "type": "number",
      "maximum": 520,
      "minimum": 0,
      "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."
    },
    "minimum_weeks": {
      "type": "number",
      "maximum": 520,
      "minimum": 0,
      "description": "The plan's minimum severance in weeks of pay, if any. Lifts a short tenure up to this figure."
    },
    "unused_pto_days": {
      "type": "number",
      "default": 0,
      "maximum": 1000,
      "minimum": 0,
      "description": "Unused PTO days paid out, valued at salary divided by 260 working days. Default 0."
    },
    "years_of_service": {
      "type": "number",
      "maximum": 80,
      "minimum": 0,
      "description": "Years of service, decimals allowed (for example 4.5)."
    },
    "annual_salary_usd": {
      "type": "number",
      "maximum": 100000000,
      "description": "Annual salary in US dollars; weekly pay is salary divided by 52.",
      "exclusiveMinimum": 0
    },
    "other_lump_sums_usd": {
      "type": "number",
      "default": 0,
      "maximum": 1000000000,
      "minimum": 0,
      "description": "Any other lump sums, such as a pro-rated bonus, in US dollars. Default 0."
    },
    "weeks_of_pay_per_year": {
      "type": "number",
      "maximum": 52,
      "minimum": 0,
      "description": "Weeks of pay the plan gives for each year of service. Many plans use 1 or 2; there is no legal standard."
    },
    "health_coverage_months": {
      "type": "number",
      "default": 0,
      "maximum": 120,
      "minimum": 0,
      "description": "Months of health coverage the employer pays. Default 0."
    },
    "monthly_health_premium_usd": {
      "type": "number",
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "description": "Monthly cost of that coverage in US dollars. Default 0."
    }
  }
}
severance_pay output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
severance_pay annotations
{
  "title": "Severance pay",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
us_paycheck_take_home — US paycheck take-home pay
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

us_paycheck_take_home input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "state"
  ],
  "properties": {
    "state": {
      "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"
      ],
      "type": "string",
      "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": {
      "enum": [
        "salary",
        "hourly"
      ],
      "type": "string",
      "default": "salary",
      "description": "Whether the employee is paid a yearly salary or an hourly wage. Default salary."
    },
    "local_tax": {
      "type": "string",
      "maxLength": 40,
      "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."
    },
    "filing_status": {
      "enum": [
        "single",
        "married",
        "head"
      ],
      "type": "string",
      "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."
    },
    "pay_frequency": {
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ],
      "type": "string",
      "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."
    },
    "hourly_rate_usd": {
      "type": "number",
      "maximum": 100000,
      "minimum": 0,
      "description": "Hourly wage in US dollars. Required when pay_type is hourly. For example 25."
    },
    "state_allowances": {
      "type": "integer",
      "maximum": 50,
      "minimum": 0,
      "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."
    },
    "annual_salary_usd": {
      "type": "number",
      "maximum": 100000000,
      "minimum": 0,
      "description": "Yearly gross salary in US dollars. Required when pay_type is salary. For example 60000."
    },
    "w4_step2_checkbox": {
      "type": "boolean",
      "default": false,
      "description": "The 'multiple jobs or spouse works' box in Form W-4 step 2(c). Default false."
    },
    "w4_other_dependents": {
      "type": "integer",
      "default": 0,
      "maximum": 30,
      "minimum": 0,
      "description": "Other dependents for Form W-4 step 3 (a $500 credit each). Default 0."
    },
    "hsa_usd_per_paycheck": {
      "type": "number",
      "default": 0,
      "maximum": 1000000,
      "minimum": 0,
      "description": "Pre-tax HSA contribution through payroll per paycheck, in US dollars (capped at the 2026 family limit). Default 0."
    },
    "w4_children_under_17": {
      "type": "integer",
      "default": 0,
      "maximum": 30,
      "minimum": 0,
      "description": "Qualifying children under 17 for Form W-4 step 3 (a $2,200 credit each in 2026). Default 0."
    },
    "regular_hours_per_week": {
      "type": "number",
      "default": 40,
      "maximum": 168,
      "minimum": 0,
      "description": "Regular (straight-time) hours per week, hourly pay only. Default 40."
    },
    "overtime_hours_per_week": {
      "type": "number",
      "default": 0,
      "maximum": 168,
      "minimum": 0,
      "description": "Overtime hours per week paid at time and a half, hourly pay only. Default 0."
    },
    "traditional_401k_percent": {
      "type": "number",
      "default": 0,
      "maximum": 100,
      "minimum": 0,
      "description": "Pre-tax 401(k) contribution as a percentage of gross pay, 0 to 100 (capped at the 2026 IRS limit). Default 0."
    },
    "w4_deductions_usd_per_year": {
      "type": "number",
      "default": 0,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Deductions above the standard deduction, Form W-4 step 4(b), in US dollars per year. Default 0."
    },
    "w4_other_income_usd_per_year": {
      "type": "number",
      "default": 0,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Other income not from jobs, Form W-4 step 4(a), in US dollars per year. Default 0."
    },
    "health_premiums_usd_per_paycheck": {
      "type": "number",
      "default": 0,
      "maximum": 1000000,
      "minimum": 0,
      "description": "Pre-tax health, dental and vision premiums per paycheck, in US dollars. Default 0."
    },
    "w4_extra_withholding_usd_per_paycheck": {
      "type": "number",
      "default": 0,
      "maximum": 1000000,
      "minimum": 0,
      "description": "Extra federal withholding per paycheck, Form W-4 step 4(c), in US dollars. Default 0."
    }
  }
}
us_paycheck_take_home output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
us_paycheck_take_home annotations
{
  "title": "US paycheck take-home pay",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
us_bonus_tax — US bonus tax withholding
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

us_bonus_tax input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "state",
    "annual_salary_usd",
    "bonus_usd"
  ],
  "properties": {
    "state": {
      "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"
      ],
      "type": "string",
      "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)."
    },
    "bonus_usd": {
      "type": "number",
      "maximum": 1000000000,
      "description": "Gross bonus in US dollars. For example 5000.",
      "exclusiveMinimum": 0
    },
    "bonus_paid": {
      "enum": [
        "separately",
        "with_regular_paycheck"
      ],
      "type": "string",
      "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."
    },
    "filing_status": {
      "enum": [
        "single",
        "married",
        "head"
      ],
      "type": "string",
      "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."
    },
    "pay_frequency": {
      "enum": [
        "weekly",
        "biweekly",
        "semimonthly",
        "monthly"
      ],
      "type": "string",
      "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."
    },
    "federal_method": {
      "enum": [
        "flat_22_percent",
        "combined"
      ],
      "type": "string",
      "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."
    },
    "annual_salary_usd": {
      "type": "number",
      "maximum": 100000000,
      "minimum": 0,
      "description": "Regular yearly salary in US dollars, before the bonus. For example 75000."
    },
    "w4_step2_checkbox": {
      "type": "boolean",
      "default": false,
      "description": "The 'multiple jobs or spouse works' box in Form W-4 step 2(c). Default false."
    },
    "earlier_supplemental_pay_usd": {
      "type": "number",
      "default": 0,
      "maximum": 1000000000,
      "minimum": 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."
    }
  }
}
us_bonus_tax output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
us_bonus_tax annotations
{
  "title": "US bonus tax withholding",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
hourly_to_salary — Hourly to salary converter
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

hourly_to_salary input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "amount_usd"
  ],
  "properties": {
    "period": {
      "enum": [
        "hour",
        "day",
        "week",
        "biweekly",
        "semimonthly",
        "month",
        "year"
      ],
      "type": "string",
      "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."
    },
    "amount_usd": {
      "type": "number",
      "maximum": 1000000000,
      "description": "The pay you know, in US dollars for the period named by period.",
      "exclusiveMinimum": 0
    },
    "days_per_week": {
      "type": "number",
      "default": 5,
      "maximum": 7,
      "minimum": 1,
      "description": "Days worked in a week, for the per-day figure. Default 5."
    },
    "hours_per_week": {
      "type": "number",
      "default": 40,
      "maximum": 168,
      "minimum": 0.5,
      "description": "Hours worked in a paid week. Default 40."
    },
    "paid_weeks_per_year": {
      "type": "number",
      "default": 52,
      "maximum": 52,
      "minimum": 1,
      "description": "Paid weeks in a year; use 50 or 48 to leave out unpaid vacation. Default 52."
    }
  }
}
hourly_to_salary output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
hourly_to_salary annotations
{
  "title": "Hourly to salary converter",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
overtime_pay — Overtime pay
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

overtime_pay input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "hourly_rate_usd"
  ],
  "properties": {
    "rule_set": {
      "enum": [
        "federal",
        "california"
      ],
      "type": "string",
      "default": "federal",
      "description": "The overtime rules to apply: federal (weekly, over 40 hours) or california (daily, seventh day and weekly). Default federal."
    },
    "daily_hours": {
      "type": "array",
      "items": {
        "type": "number",
        "maximum": 24,
        "minimum": 0
      },
      "maxItems": 7,
      "minItems": 1,
      "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."
    },
    "hours_worked": {
      "type": "number",
      "maximum": 168,
      "description": "Total hours worked in the week (federal rule_set only), 0 to 168.",
      "exclusiveMinimum": 0
    },
    "extra_pay_usd": {
      "type": "number",
      "default": 0,
      "maximum": 10000000,
      "minimum": 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."
    },
    "hourly_rate_usd": {
      "type": "number",
      "maximum": 100000,
      "description": "Regular hourly rate in US dollars.",
      "exclusiveMinimum": 0
    }
  }
}
overtime_pay output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
overtime_pay annotations
{
  "title": "Overtime pay",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
business_days_between — Business days between two dates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

business_days_between input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date",
    "end_date"
  ],
  "properties": {
    "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."
    },
    "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."
    },
    "include_end_date": {
      "type": "boolean",
      "default": true,
      "description": "Whether the end date itself is counted when it is a business day. Default true."
    },
    "skip_us_federal_holidays": {
      "type": "boolean",
      "default": true,
      "description": "Whether US federal holidays are left out of the business-day count. Default true."
    }
  }
}
business_days_between output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
business_days_between annotations
{
  "title": "Business days between two dates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_business_days — Add or subtract business days
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

add_business_days input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date",
    "business_days"
  ],
  "properties": {
    "direction": {
      "enum": [
        "add",
        "subtract"
      ],
      "type": "string",
      "default": "add",
      "description": "add to move forward in time, subtract to move back. Default add."
    },
    "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",
      "maximum": 10000,
      "minimum": 0,
      "description": "How many business days to move, a whole number from 0 to 10,000."
    },
    "skip_us_federal_holidays": {
      "type": "boolean",
      "default": true,
      "description": "Whether US federal holidays are skipped as well as weekends. Default true."
    }
  }
}
add_business_days output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
add_business_days annotations
{
  "title": "Add or subtract business days",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_to_date — Add or subtract time from a date
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

add_to_date input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date"
  ],
  "properties": {
    "days": {
      "type": "integer",
      "default": 0,
      "maximum": 37000,
      "minimum": 0,
      "description": "Days to move, 0 to 37,000. Default 0."
    },
    "weeks": {
      "type": "integer",
      "default": 0,
      "maximum": 5300,
      "minimum": 0,
      "description": "Weeks to move, 0 to 5,300. Default 0."
    },
    "years": {
      "type": "integer",
      "default": 0,
      "maximum": 100,
      "minimum": 0,
      "description": "Years to move, 0 to 100. Default 0."
    },
    "months": {
      "type": "integer",
      "default": 0,
      "maximum": 1200,
      "minimum": 0,
      "description": "Months to move, 0 to 1,200. Default 0."
    },
    "direction": {
      "enum": [
        "add",
        "subtract"
      ],
      "type": "string",
      "default": "add",
      "description": "add to move forward, subtract to move back. Default add."
    },
    "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."
    }
  }
}
add_to_date output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
add_to_date annotations
{
  "title": "Add or subtract time from a date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
days_between_dates — Days between two dates
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

days_between_dates input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date",
    "end_date"
  ],
  "properties": {
    "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."
    },
    "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."
    },
    "include_end_date": {
      "type": "boolean",
      "default": false,
      "description": "Whether the end date itself counts as a day, which adds one to the total. Default false."
    }
  }
}
days_between_dates output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
days_between_dates annotations
{
  "title": "Days between two dates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
time_duration_between — Time duration between two date-times
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

time_duration_between input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date",
    "start_time",
    "end_date",
    "end_time"
  ],
  "properties": {
    "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": {
      "enum": [
        "none",
        "America/New_York",
        "America/Chicago",
        "America/Denver",
        "America/Phoenix",
        "America/Los_Angeles",
        "America/Anchorage",
        "Pacific/Honolulu",
        "America/Puerto_Rico",
        "UTC"
      ],
      "type": "string",
      "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."
    },
    "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."
    }
  }
}
time_duration_between output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
time_duration_between annotations
{
  "title": "Time duration between two date-times",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
add_time_to_datetime — Add or subtract days, hours and minutes from a date-time
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

add_time_to_datetime input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_date",
    "start_time"
  ],
  "properties": {
    "days": {
      "type": "integer",
      "default": 0,
      "maximum": 100000,
      "minimum": 0,
      "description": "Days to move. Default 0."
    },
    "hours": {
      "type": "integer",
      "default": 0,
      "maximum": 10000000,
      "minimum": 0,
      "description": "Hours to move. Default 0."
    },
    "minutes": {
      "type": "integer",
      "default": 0,
      "maximum": 100000000,
      "minimum": 0,
      "description": "Minutes to move. Default 0."
    },
    "direction": {
      "enum": [
        "add",
        "subtract"
      ],
      "type": "string",
      "default": "add",
      "description": "add to move forward, subtract to move back. Default add."
    },
    "time_zone": {
      "enum": [
        "none",
        "America/New_York",
        "America/Chicago",
        "America/Denver",
        "America/Phoenix",
        "America/Los_Angeles",
        "America/Anchorage",
        "Pacific/Honolulu",
        "America/Puerto_Rico",
        "UTC"
      ],
      "type": "string",
      "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."
    },
    "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."
    }
  }
}
add_time_to_datetime output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
add_time_to_datetime annotations
{
  "title": "Add or subtract days, hours and minutes from a date-time",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
convert_time_zone — Time zone converter
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

convert_time_zone input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "date",
    "time",
    "to_time_zones"
  ],
  "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."
    },
    "to_time_zones": {
      "type": "array",
      "items": {
        "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"
        ],
        "type": "string"
      },
      "maxItems": 12,
      "minItems": 1,
      "description": "IANA ids of the zones to convert to, between 1 and 12 (for example [\"America/Los_Angeles\",\"Europe/London\",\"Asia/Kolkata\"])."
    },
    "from_time_zone": {
      "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"
      ],
      "type": "string",
      "default": "America/New_York",
      "description": "IANA id of the source time zone. Default America/New_York."
    }
  }
}
convert_time_zone output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
convert_time_zone annotations
{
  "title": "Time zone converter",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
military_time_convert — Military (24-hour) time converter
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

military_time_convert input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "minute": {
      "type": "integer",
      "default": 0,
      "maximum": 59,
      "minimum": 0,
      "description": "The minute, 0 to 59, used with hour_12. Default 0."
    },
    "period": {
      "enum": [
        "AM",
        "PM"
      ],
      "type": "string",
      "description": "AM or PM, used with hour_12."
    },
    "hour_12": {
      "type": "integer",
      "maximum": 12,
      "minimum": 1,
      "description": "The hour on a 12-hour clock, 1 to 12. Use with period (and minute)."
    },
    "military_time": {
      "type": "string",
      "maxLength": 10,
      "description": "A military time such as 1345, 13:45, 945 or 2400 (end of day). Give this, or hour_12 with period."
    }
  }
}
military_time_convert output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
military_time_convert annotations
{
  "title": "Military (24-hour) time converter",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
military_shift_hours — Hours between two military times
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

military_shift_hours input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "start_military_time",
    "end_military_time"
  ],
  "properties": {
    "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."
    },
    "start_military_time": {
      "type": "string",
      "maxLength": 10,
      "description": "The start in military time, for example 2200 or 22:00."
    }
  }
}
military_shift_hours output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "summary",
    "inputs",
    "results",
    "calculator_url"
  ],
  "properties": {
    "inputs": {
      "type": "object",
      "description": "The inputs as used, with defaults filled in.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "results": {
      "type": "object",
      "description": "The computed numbers. Unavailable numbers are null.",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "summary": {
      "type": "string",
      "description": "One or two plain sentences with the headline numbers."
    },
    "calculator_url": {
      "type": "string",
      "description": "The TeamPredict calculator page that shows the same calculation, where a person can change the inputs."
    }
  },
  "additionalProperties": false
}
military_shift_hours annotations
{
  "title": "Hours between two military times",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
609 ms
95th percentile latency
609 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 609 ms · metadata changed · 22 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http teampredict-mcp https://www.teampredict.ai/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add teampredict-mcp --url https://www.teampredict.ai/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable teampredict-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "teampredict-mcp": {
      "url": "https://www.teampredict.ai/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "teampredict-mcp": {
      "type": "streamableHttp",
      "url": "https://www.teampredict.ai/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start teampredict-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "teampredict-mcp": {
      "type": "http",
      "url": "https://www.teampredict.ai/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http teampredict-mcp https://www.teampredict.ai/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "teampredict-mcp": {
      "url": "https://www.teampredict.ai/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "teampredict-mcp": {
      "serverUrl": "https://www.teampredict.ai/mcp"
    }
  }
}

Let your agent find its tools

Find servers like TeamPredict MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run TeamPredict MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing