mcpbeat Sign in

Calcgrid MCP Server

answering

Calcgrid is answering right now. Last checked 10 min ago. It exposes 64 tools.

China working-day data, UK bank holidays, IANA time zones and deterministic business deadlines.

Uptime history 16 days of history
16 days agonow
100.0%
Uptime 24h
92 of 92 checks
64
Tools
read from the server
342 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 124

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 26 September 2026. No other catalogue keeps this.

28 Sep 10 tools appeared add_global_public_holiday_working_days, add_global_reference_working_days, add_global_working_days and 7 more
28 Sep 2 tool descriptions were rewritten run_calculator, search_calculators
27 Sep 9 tools changed the parameters they ask for calculate_descriptive_statistics, calculate_fraction_arithmetic, calculate_subnet and 6 more
27 Sep 2 tool descriptions were rewritten run_calculator, search_calculators
27 Sep a tool changed version
27 Sep a tool appeared calculate_business_deadline
26 Sep 45 tool descriptions were rewritten48 times that day add_china_working_days, calculate_ab_test_significance, calculate_age and 42 more
26 Sep 43 tools changed the parameters they ask for44 times that day add_china_working_days, calculate_ab_test_significance, calculate_age and 40 more
26 Sep 5 tools appeared add_uk_working_days, check_uk_working_day, count_uk_working_days and 2 more
26 Sep a tool changed version2 times that day
and 5 more, back to 26 September 2026

Nothing serious here today

Today is the operative word: we check Calcgrid every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 10 min ago.

run in your terminal
claude mcp add calcgrid --transport http https://tttkmbb.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "calcgrid": {
      "url": "https://tttkmbb.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.calcgrid]
url = "https://tttkmbb.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "calcgrid": {
      "url": "https://tttkmbb.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "calcgrid": {
      "url": "https://tttkmbb.com/mcp"
    }
  }
}

Available tools 64

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

calculate
calculate_ab_test_significance
Use this when you have visitors and conversions for a control and a variant (A/B test, split test, email test) and need to know whether the difference is statistically significant. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the metric is a mean (revenue per user, time on page) rather than a conversion proportion, or there are more than two variants (use a chi-square or multiple-comparison procedure). What it computes: Tests whether a variant's conversion rate differs from the control's using the pooled two-proportion z-test, and reports both rates, absolute and relative lift, z-score, two-sided p-value, a confidence interval for the difference and the sample size needed per variant to detect the observed lift with 80 % power. Inputs: control_visitors (integer); control_conversions (integer); variant_visitors (integer); variant_conversions (integer); confidence_level_percent (number, %, optional). Complete JSON argument examples: {"control_visitors":1000,"control_conversions":50,"variant_visitors":1000,"variant_conversions":70} | {"control_visitors":5000,"control_conversions":200,"variant_visitors":5000,"variant_conversions":260} Outputs: control_rate_percent [%], variant_rate_percent [%], absolute_lift_percentage_points [pp], relative_lift_percent [%], standard_error_percentage_points [pp], z_score, p_value, significant, ci_lower_percentage_points [pp], ci_upper_percentage_points [pp], required_visitors_per_variant, verdict. Formula: p1 = x1/n1, p2 = x2/n2, p̄ = (x1 + x2)/(n1 + n2); z = (p2 − p1) / √(p̄(1 − p̄)(1/n1 + 1/n2)); p_value = 2·(1 − Φ(|z|)); CI = (p2 − p1) ± z_crit·√(p1(1 − p1)/n1 + p2(1 − p2)/n2); n per variant = (z_crit·√(2·p̄(1 − p̄)) + z_0.80·√(p1(1 − p1) + p2(1 − p2)))² / (p2 − p1)² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ab-test-significance with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/business/ab-test-significance.md
calculate_age
Use this when you need someone's exact age on a date, the total number of days lived, the weekday they were born on, or how many days remain until their next birthday. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need the difference between two arbitrary dates with a business-day count (use date-difference) or a countdown to an event (use days-until). What it computes: Computes the exact age on a given date as years, months and days by Gregorian calendar arithmetic, plus total days and weeks, the weekday of birth, and the date of and days until the next birthday. Inputs: birth_date (date); as_of_date (date, optional). Complete JSON argument examples: {"birth_date":"1990-05-17","as_of_date":"2026-09-23"} | {"birth_date":"1985-12-25","as_of_date":"2026-01-10"} Outputs: years, months, days, age_text, total_days [days], total_weeks [weeks], age_decimal_years [years], next_birthday_date, days_until_next_birthday [days], day_of_week_born. Formula: years, months, days = calendar difference birth_date → as_of_date (when the day-of-month is smaller, days are borrowed from the month before as_of_date); total_days = as_of_date − birth_date; total_weeks = total_days / 7; age_decimal_years = total_days / 365.2425; next_birthday = first (month, day) of birth on or after as_of_date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/age with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/age.md
calculate_amortization_schedule
Use this when you need to see how each payment splits into principal and interest over the life of a mortgage or loan, the balance at the end of each year, or the effect of paying extra every month. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only need the payment amount (use loan-payment or mortgage-payment), or you know the payment and want the payoff time of a revolving balance (use debt-payoff). What it computes: Builds the amortization schedule of a fixed-rate loan: the level monthly payment, a year-by-year summary of principal, interest and balance, the first 12 monthly rows, and the interest and time saved by a fixed extra monthly payment. Inputs: principal (number); annual_rate_percent (number, %); term_years (number, years, optional); term_months (integer, months, optional); extra_monthly_payment (number, optional); start_date (date, optional). Valid input combinations: Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together; the total may not exceed 480 months. Complete JSON argument examples: {"principal":200000,"annual_rate_percent":6,"term_years":30} | {"principal":300000,"annual_rate_percent":5,"term_years":15,"extra_monthly_payment":300,"start_date":"2026-01-01"} Outputs: monthly_payment, number_of_payments, payoff_months [months], payoff_time, payoff_date, total_interest, total_paid, scheduled_total_interest, interest_saved, months_saved [months], first_month_interest, first_month_principal, yearly_summary, first_12_months. Formula: i = annual_rate_percent / 1200; n = 12·term_years + term_months; monthly_payment = principal × i / (1 − (1 + i)^−n) (principal / n if i = 0). Each month: interest = balance × i; principal_paid = monthly_payment + extra_monthly_payment − interest (capped at the balance); balance −= principal_paid, until the balance is 0. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/amortization-schedule with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/amortization-schedule.md
calculate_bazi_four_pillars
Use this when you need the four stem-branch pillars (年柱 月柱 日柱 时柱) of a birth moment, the day master and its ten-god relations, element balance, or the start age and sequence of the 大运 luck pillars. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only need the lunar date or zodiac of a date (use lunar-calendar-converter or chinese-zodiac), the stem-branch of a single date without an hour (use sexagenary-cycle), or an interpretation of the chart — this tool computes the traditional chart only and gives no predictions. What it computes: Builds the Bazi (八字, Bāzì) / Four Pillars (四柱) chart of a birth date and time: year pillar by 立春 (Lìchūn), month pillar by the 节 (jié) solar terms, day pillar from the sexagenary day count, hour pillar by the 五鼠遁 (Wǔshǔdùn) rule, plus day master, five-element counts, ten gods (十神), hidden stems (藏干), 纳音 (nàyīn), void branches (空亡) and the ten-year luck pillars (大运). Inputs: birth_date (date); birth_time (string); sex (enum); utc_offset_hours (number, h, optional); longitude_degrees (number, °, optional); late_zi_next_day (boolean, optional); include_hidden_stems (boolean, optional). Complete JSON argument examples: {"birth_date":"1990-05-17","birth_time":"08:30","sex":"male","utc_offset_hours":8} | {"birth_date":"2000-01-01","birth_time":"00:30","sex":"female","utc_offset_hours":8} Outputs: bazi_chart, year_pillar, month_pillar, day_pillar, hour_pillar, pillars_pinyin, pillars_english, day_master, zodiac, five_element_counts, missing_elements, dominant_element, ten_gods, hidden_stems, nayin, void_branches, luck_direction, luck_start_age, luck_start_age_years [years], luck_pillars, lunar_birth_date, solar_term_context, time_used, notes. Formula: year = solarYearAtLichun(birth instant); month stem = ((year stem mod 5) × 2 + 2 + months since 寅) mod 10; day index = (JDN + 49) mod 60; hour stem = ((day stem mod 5) × 2 + hour branch) mod 10; hour branch = floor(((hour + 1) mod 24) / 2); true solar time = clock + (longitude − 15 × utc_offset) × 4 min + equation of time; 起运 years = days to 节 / 3 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bazi-four-pillars with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/bazi-four-pillars.md
calculate_bmi
Use this when you need an adult's BMI, its WHO/CDC weight category, or the weight range that corresponds to a normal BMI (18.5–24.9) for a given height. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the person is under 20 years old (children need age- and sex-specific BMI percentiles), or you need body-fat percentage (use body-fat) or calorie needs (use bmr / tdee). What it computes: Computes body mass index (BMI) from weight and height and classifies it with the WHO adult categories, plus the healthy weight range for that height. Inputs: weight_kg (number, kg); height_cm (number, cm). Complete JSON argument examples: {"weight_kg":70,"height_cm":175} | {"weight_kg":95,"height_cm":180} Outputs: bmi [kg/m²], category, healthy_weight_min_kg [kg], healthy_weight_max_kg [kg], prime. Formula: BMI = weight_kg / (height_cm / 100)² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bmi with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/bmi.md
calculate_bmr
Use this when you need resting daily calorie needs for an adult from sex, weight, height and age, as a base for diet or TDEE calculations. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need total daily calories including activity (use tdee), the person is a child, pregnant, or has very high muscle mass (use a body-fat based equation such as Katch-McArdle instead). What it computes: Estimates basal metabolic rate (calories burned at complete rest per day) with the Mifflin-St Jeor equation, and also reports the revised Harris-Benedict estimate. Inputs: sex (enum); weight_kg (number, kg); height_cm (number, cm); age_years (number, years). Complete JSON argument examples: {"sex":"male","weight_kg":70,"height_cm":175,"age_years":30} | {"sex":"female","weight_kg":60,"height_cm":165,"age_years":40} Outputs: bmr_kcal_per_day [kcal/day], harris_benedict_kcal_per_day [kcal/day], bmr_kj_per_day [kJ/day]. Formula: Mifflin-St Jeor: BMR = 10·weight_kg + 6.25·height_cm − 5·age_years + 5 (male) or − 161 (female). Harris-Benedict (1984): male 88.362 + 13.397·W + 4.799·H − 5.677·A; female 447.593 + 9.247·W + 3.098·H − 4.330·A. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/bmr with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/bmr.md
calculate_business_deadline
Use this when you need an SLA, support, procurement or order deadline measured in business hours under the published mainland China or UK calendar, and must express the result in another team's IANA time zone with reproducible holiday and DST evidence. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need calendar hours, an overnight or split shift, lunch breaks, an employer/local/market calendar, a legal filing deadline, actual delivery/arrival prediction, private calendar availability, or a date outside the selected evidence package's coverage. What it computes: Adds an explicit number of business hours inside a caller-supplied daily window, using either the official mainland China work calendar or a selected GOV.UK division, then returns the deadline in UTC, the calendar zone and a target IANA zone with a complete segment/skip audit trail. Example user requests: A Shanghai support ticket opened at 2026-09-24 15:00 has a 16-business-hour SLA, counted from that day during 09:00-17:00 China official working time. When is it due in London? | Starting 24 December 2026 at 15:00 London time, add 8 England-and-Wales business hours between 09:00 and 17:00 and show the deadline in Shanghai. | 按中国官方工作日,从 2026-09-24 15:00(上海)起计算 16 个营业小时,每天 09:00-17:00,起始日计入;给出伦敦时间和跳过日期。 Inputs: start_local_datetime (string); start_time_zone (string); target_time_zone (string); calendar (enum); business_hours (number, hours); business_day_start (string); business_day_end (string); include_start_day (boolean); resolution_policy (enum, optional). Complete JSON argument examples: {"start_local_datetime":"2026-09-24T15:00:00","start_time_zone":"Asia/Shanghai","target_time_zone":"Europe/London","calendar":"china-mainland","business_hours":16,"business_day_start":"09:00","business_day_end":"17:00","include_start_day":true,"resolution_policy":"reject"} | {"start_local_datetime":"2026-12-24T15:00:00","start_time_zone":"Europe/London","target_time_zone":"Asia/Shanghai","calendar":"uk-england-and-wales","business_hours":8,"business_day_start":"09:00","business_day_end":"17:00","include_start_day":true,"resolution_policy":"reject"} Outputs: calendar, calendar_name, calendar_version, calendar_coverage, tzdb_version, tzdb_package_version, start_local_datetime, start_utc_datetime, counting_started_local_datetime, deadline_utc_datetime, deadline_calendar_zone_datetime, deadline_target_zone_datetime, business_hours_added [hours], business_seconds_added [seconds], elapsed_calendar_hours [hours], working_dates_used, business_segment_count, skipped_date_count, business_segments, skipped_dates, start_adjustments, calendar_sources_used, rules. Formula: deadline = consume business_hours only inside [business_day_start, business_day_end) on dates where the selected versioned calendar reports is_working_day=true; convert each local boundary with pinned IANA tzdb Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/business-hours-deadline with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/business/business-hours-deadline.md
calculate_circle_properties
Use this when you know a circle's radius or diameter and need its area, circumference or the other dimension. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the shape is an ellipse (use ellipse), a solid ball (use sphere) or a disc with thickness (use cylinder). What it computes: Computes the area, circumference, diameter and radius of a circle from either its radius or its diameter. Lengths are unit-agnostic: the area is in the square of the input unit. Example user requests: Calculate the area and circumference of a circle with radius 3. | A circle has diameter 10; return its radius, circumference and area. Inputs: radius (number, units, optional); diameter (number, units, optional). Valid input combinations: Provide at least one of radius or diameter. You may provide both when diameter equals 2 × radius; conflicting values are rejected. Complete JSON argument examples: {"radius":3} | {"diameter":10} Outputs: radius [units], diameter [units], circumference [units], area [units²]. Formula: r = radius (or diameter / 2); diameter = 2·r; circumference = 2·π·r; area = π·r² Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/circle with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/geometry/circle.md
calculate_compound_interest
Use this when you need to project a savings account, certificate of deposit or investment balance from a starting amount, an annual rate, a term and optional monthly deposits. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when interest is not reinvested (use simple-interest), you need the deposit required to hit a target (use savings-goal), or you are repaying a loan (use loan-payment). What it computes: Computes the future balance of a principal earning compound interest at a chosen compounding frequency, optionally with a fixed deposit at the end of every month, and splits the result into contributions and interest. Inputs: principal (number); annual_rate_percent (number, %); years (number, years); compounding_frequency (enum, optional); monthly_contribution (number, optional). Complete JSON argument examples: {"principal":10000,"annual_rate_percent":5,"years":10,"compounding_frequency":"monthly"} | {"principal":5000,"annual_rate_percent":6,"years":20,"compounding_frequency":"monthly","monthly_contribution":100} Outputs: final_balance, total_contributions, total_interest, effective_annual_rate_percent [%], growth_multiple. Formula: A = principal × (1 + r/n)^(n·years) with r = annual_rate_percent/100 and n periods per year. Contributions: i_m = (1 + r/n)^(n/12) − 1, m = 12·years, FV_contrib = monthly_contribution × ((1 + i_m)^m − 1) / i_m (m × contribution when r = 0). final_balance = A + FV_contrib. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/compound-interest with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/compound-interest.md
calculate_date_difference
Use this when you need the number of days, weeks or working days between two dates, or a calendar-style 'x years y months z days' difference. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you want to add or subtract a number of days from a date (use add-days), or you need an age with the next birthday (use age). What it computes: Counts the days between two ISO dates and expresses the gap as weeks and days, as a calendar breakdown in years, months and days, and as business days (Monday–Friday, public holidays not excluded). Inputs: start_date (date); end_date (date); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-01-01","end_date":"2026-12-25"} | {"start_date":"2025-11-05","end_date":"2026-03-15","include_end_date":true} Outputs: days [days], weeks [weeks], remaining_days [days], weeks_and_days, calendar_years, calendar_months, calendar_days, calendar_text, business_days [days]. Formula: days = end_date − start_date (+1 if include_end_date); weeks = floor(days / 7); remaining_days = days mod 7; business_days = number of Mon–Fri dates in [start_date, end_date) or [start_date, end_date] when inclusive; calendar breakdown = whole years, months, then days borrowed from the month before end_date Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/date-difference with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/date-difference.md
calculate_depth_of_field
Use this when you need to know how much of a scene is acceptably sharp for given camera settings, or how far sharpness extends in front of and behind the focused subject. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only need the focus distance that maximises depth of field (use hyperfocal-distance), or you shoot macro above about 0.2× magnification where lens extension and pupil magnification make the thin-lens equations inaccurate. What it computes: Computes the near and far limits of acceptable sharpness, the total depth of field and the hyperfocal distance from focal length, f-number, focus distance and the sensor's circle of confusion, using the standard thin-lens depth-of-field equations. Inputs: focal_length_mm (number, mm); aperture_f (number); focus_distance_m (number, m); sensor (enum, optional); coc_mm (number, mm, optional). Complete JSON argument examples: {"focal_length_mm":50,"aperture_f":2.8,"focus_distance_m":3,"sensor":"full_frame"} | {"focal_length_mm":24,"aperture_f":8,"focus_distance_m":5,"sensor":"full_frame"} Outputs: hyperfocal_m [m], near_limit_m [m], far_limit_m [m], far_limit_text, total_dof_m [m], in_front_of_subject_m [m], behind_subject_m [m], coc_used_mm [mm]. Formula: H = f² / (N·c) + f; near = s·(H − f) / (H + s − 2f); far = s·(H − f) / (H − s) when s < H, otherwise infinity (f = focal_length_mm, N = aperture_f, c = coc_mm, s = focus_distance_m × 1000, all in mm) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/depth-of-field with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/photography/depth-of-field.md
calculate_descriptive_statistics
Use this when you have a set of numeric observations and need its central tendency, spread or quartiles, e.g. the standard deviation of a data set. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a single percentile or the percentile rank of one value (use percentile), a standardised score (use z-score), or statistics of two paired variables (use correlation or linear-regression). What it computes: Computes summary statistics for a list of numbers: count, sum, mean, median, mode, range, sample and population variance and standard deviation, standard error, coefficient of variation, quartiles (linear interpolation) and skewness. Inputs: values (number_list). Complete JSON argument examples: {"values":[2,4,4,4,5,5,7,9]} | {"values":[4,8,15,16,23,42]} Outputs: count, sum, mean, median, mode, mode_count, min, max, range, sample_variance, sample_std_dev, population_variance, population_std_dev, standard_error, coefficient_of_variation_percent [%], q1, q3, iqr, skewness. Formula: mean = Σx / n; sample_variance = Σ(x − mean)² / (n − 1); population_variance = Σ(x − mean)² / n; standard_error = s / √n; CV% = 100·s / mean; quartile at p: rank = p·(n − 1), value = x(⌊rank⌋) + (rank − ⌊rank⌋)·(x(⌊rank⌋+1) − x(⌊rank⌋)) on sorted data; skewness G1 = n / ((n − 1)(n − 2)) · Σ((x − mean) / s)³ Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/descriptive-statistics with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/statistics/descriptive-statistics.md
calculate_fraction_arithmetic
Use this when you need an exact result of an operation on two fractions (e.g. 3/4 + 1/6), including mixed numbers such as 1 1/2, rather than a rounded decimal. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only want to reduce a single fraction or convert it to a decimal or percent (use fraction-simplifier), or you need the least common denominator of several denominators (use gcd-lcm). What it computes: Adds, subtracts, multiplies or divides two fractions, mixed numbers, whole numbers or decimals with exact integer arithmetic, returning the result in lowest terms, as a mixed number and as a decimal, with the intermediate steps. Inputs: fraction_a (string); fraction_b (string); operation (enum, optional). Complete JSON argument examples: {"fraction_a":"3/4","fraction_b":"1/6","operation":"add"} | {"fraction_a":"2 1/3","fraction_b":"5/6","operation":"subtract"} Outputs: result, mixed_number, numerator, denominator, decimal, working. Formula: a/b + c/d = (a·(L/b) + c·(L/d)) / L with L = lcm(b, d), a/b − c/d likewise; a/b × c/d = (a·c) / (b·d); a/b ÷ c/d = (a·d) / (b·c); the result is divided by gcd(numerator, denominator) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/fraction-arithmetic with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/fraction-arithmetic.md
calculate_haversine_distance
Use this when you need the straight-line distance between two GPS coordinates or cities, e.g. for flight distance, range checks or geofencing. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need road distance, or ellipsoidal accuracy better than about 0.5 % (use a geodesic method such as Vincenty or Karney on WGS-84); for bearings and compass points use compass-bearing. What it computes: Computes the great-circle (as-the-crow-flies) distance between two points on a spherical Earth with the haversine formula, in kilometres, miles and nautical miles, together with the initial bearing, compass direction and the midpoint of the route. Inputs: lat1 (number, °); lon1 (number, °); lat2 (number, °); lon2 (number, °). Complete JSON argument examples: {"lat1":-33.8688,"lon1":151.2093,"lat2":35.6762,"lon2":139.6503} | {"lat1":50.06639,"lon1":-5.71472,"lat2":58.64389,"lon2":-3.07} Outputs: distance_km [km], distance_miles [mi], distance_nautical_miles [nmi], central_angle_degrees [°], initial_bearing_degrees [°], compass_direction, midpoint_lat [°], midpoint_lon [°]. Formula: a = sin²(Δφ/2) + cos φ1 · cos φ2 · sin²(Δλ/2); c = 2 · atan2(√a, √(1−a)); d = R · c with R = 6371.0088 km; θ = atan2(sin Δλ · cos φ2, cos φ1 · sin φ2 − sin φ1 · cos φ2 · cos Δλ) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/haversine-distance with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/haversine-distance.md
calculate_kinetic_energy
Use this when you need the energy of motion of an object of known mass and speed (vehicle, projectile, ball), for example to compare impact or braking energies. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when rotation contributes significantly (rotational energy ½·I·ω² is not included), speeds approach the speed of light (relativistic formula needed), or you need energy from height (use potential-energy). What it computes: Computes the translational kinetic energy of a moving mass from KE = ½·m·v², reported in joules, kilojoules, kilowatt-hours and kilocalories. Inputs: mass_kg (number, kg); velocity_m_s (number, m/s). Complete JSON argument examples: {"mass_kg":1200,"velocity_m_s":25} | {"mass_kg":0.145,"velocity_m_s":40} Outputs: kinetic_energy_j [J], kinetic_energy_kj [kJ], kinetic_energy_kwh [kWh], kinetic_energy_kcal [kcal], velocity_km_h [km/h]. Formula: KE = ½ × mass_kg × velocity_m_s²; kJ = J / 1000; kWh = J / 3,600,000; kcal = J / 4184 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/kinetic-energy with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/physics/kinetic-energy.md
calculate_loan_payment
Use this when you need the monthly payment or total interest cost of an auto, personal, student or other fixed-rate installment loan given its amount, APR and term. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need property tax, insurance and HOA in the payment (use mortgage-payment), or you know the payment and want the payoff time (use debt-payoff). What it computes: Computes the level monthly payment of a fully amortizing fixed-rate loan from principal, annual rate and term, plus the total paid and total interest over the life of the loan. Example user requests: For a 100000 loan at 6% fixed for 5 years, calculate the monthly payment and total interest. | What will I pay each month on a 420000 loan at 6.15% for 25 years? | 6000 元零利率分 12 个月偿还,每月和总计是多少? Inputs: principal (number); annual_rate_percent (number, %); term_years (number, years, optional); term_months (integer, months, optional). Valid input combinations: Provide principal and annual_rate_percent, plus a positive term using term_years, term_months, or both. When both term fields are present they are added together. Complete JSON argument examples: {"principal":200000,"annual_rate_percent":6,"term_years":30} | {"principal":25000,"annual_rate_percent":7,"term_months":60} Outputs: monthly_payment, number_of_payments, total_payment, total_interest, payoff_summary. Formula: i = annual_rate_percent / 1200; n = 12·term_years + term_months; monthly_payment = principal × i / (1 − (1 + i)^−n); if i = 0, monthly_payment = principal / n. total_payment = monthly_payment × n; total_interest = total_payment − principal. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/loan-payment with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/loan-payment.md
calculate_molar_mass
Use this when you have a chemical formula and need its molar mass (molecular weight), the number of atoms of each element, or its elemental mass-percent composition. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you already know the molar mass and want to convert between grams and moles (use moles-mass) or need a solution concentration (use molarity). What it computes: Parses a chemical formula (including brackets, nested groups and hydrates) and sums IUPAC 2021 standard atomic weights to give the molar mass in g/mol, plus the atom count and mass-percent composition of each element. Inputs: formula (string). Complete JSON argument examples: {"formula":"C6H12O6"} | {"formula":"CuSO4·5H2O"} Outputs: molar_mass_g_mol [g/mol], molecular_mass_da [Da], atom_count, element_count, composition. Formula: molar_mass = Σ (atomic_weight_i × count_i); mass_fraction_percent_i = 100 × atomic_weight_i × count_i / molar_mass Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/molar-mass with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/chemistry/molar-mass.md
calculate_mortgage_payment
Use this when you want the monthly cost of buying a home with a fixed-rate mortgage, including escrowed taxes and insurance, or the total interest over the loan. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the loan is adjustable-rate or interest-only, or you only need the payment on a plain loan amount (use loan-payment). What it computes: Computes the monthly principal-and-interest payment of a fixed-rate mortgage from home price, down payment, rate and term, then adds property tax, home insurance and HOA dues to give the full monthly housing payment and lifetime interest. Inputs: home_price (number); down_payment (number, optional); annual_rate_percent (number, %); term_years (number, years, optional); annual_property_tax (number, optional); annual_home_insurance (number, optional); monthly_hoa (number, optional). Complete JSON argument examples: {"home_price":250000,"down_payment":50000,"annual_rate_percent":6,"term_years":30,"annual_property_tax":3000,"annual_home_insurance":1200} | {"home_price":400000,"down_payment":80000,"annual_rate_percent":6.5,"term_years":30} Outputs: loan_amount, loan_to_value_percent [%], monthly_principal_and_interest, monthly_property_tax, monthly_insurance, monthly_hoa_fee, total_monthly_payment, number_of_payments, total_interest, total_of_payments, payoff_summary. Formula: loan_amount = home_price − down_payment; i = annual_rate_percent / 1200; n = 12·term_years; P&I = loan_amount × i / (1 − (1 + i)^−n) (loan_amount / n if i = 0); total_monthly_payment = P&I + annual_property_tax/12 + annual_home_insurance/12 + monthly_hoa. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/mortgage-payment with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/mortgage-payment.md
calculate_percentage
Use this when you need a percentage of a value, the percentage one value represents of another, or the base value that a part and its percentage imply. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need the percentage change between two values (use percentage-change), a price after a percentage discount (use discount) or a tax amount (use sales-tax). What it computes: Solves the three basic percentage questions (a percentage of a number, what percentage one number is of another, and the whole behind a known part and percentage). Always returns the part, the whole and the percent. Inputs: mode (enum, optional); x (number); y (number). Complete JSON argument examples: {"mode":"percent_of","x":15,"y":240} | {"mode":"is_what_percent","x":30,"y":120} Outputs: result, sentence, part, whole, percent [%]. Formula: percent_of: result = x / 100 × y. is_what_percent: result = x / y × 100. percent_of_what: result = x / (y / 100). In every mode part = percent × whole / 100. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/percentage with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/percentage.md
calculate_percentage_change
Use this when you have a starting and an ending value and need the percentage increase or decrease, or a symmetric percent difference between two comparable values. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a percentage of a number (use percentage), an annualised growth rate over several years (use cagr) or an investment return (use roi). What it computes: Computes the relative change from an old value to a new value as a percentage, the signed absolute change, the new/old ratio and the symmetric percent difference. Inputs: old_value (number); new_value (number). Complete JSON argument examples: {"old_value":50,"new_value":65} | {"old_value":80,"new_value":60} Outputs: change_percent [%], absolute_change, direction, ratio, percent_difference [%]. Formula: change_percent = (new_value − old_value) / |old_value| × 100; percent_difference = |new_value − old_value| / ((|new_value| + |old_value|) / 2) × 100 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/percentage-change with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/percentage-change.md
calculate_running_pace
Use this when you know a distance and the time it took (or a target time) and need the pace, the equivalent speed, or the time that pace gives over standard race distances. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you want a realistic prediction of a longer race from a shorter one (pace slows with distance; use race-time-predictor), or you only need to convert between pace and speed units (use pace-converter). What it computes: Computes running pace in min/km and min/mile and speed in km/h and mph from a distance and elapsed time, and projects the finish time for 5 km, 10 km, half marathon and marathon at that constant pace. Inputs: distance (number); distance_unit (enum, optional); time (string). Complete JSON argument examples: {"distance":10,"distance_unit":"km","time":"50:00"} | {"distance":5,"distance_unit":"mi","time":"45:00"} Outputs: pace_min_per_km [min:sec/km], pace_min_per_mile [min:sec/mi], pace_seconds_per_km [s/km], speed_kmh [km/h], speed_mph [mph], distance_km [km], time_5k [h:mm:ss], time_10k [h:mm:ss], time_half_marathon [h:mm:ss], time_marathon [h:mm:ss]. Formula: pace_s_per_km = time_seconds / distance_km; pace_s_per_mile = pace_s_per_km × 1.609344; speed_kmh = 3600 / pace_s_per_km; speed_mph = speed_kmh / 1.609344; time(D) = pace_s_per_km × D for D = 5, 10, 21.0975, 42.195 km Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/running-pace with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/fitness/running-pace.md
calculate_subnet
Use this when you need to know which subnet an IPv4 address belongs to, the host range and count of a /prefix, or the mask equivalent of a prefix length. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the address is IPv6, you want to split a block into several subnets (VLSM planning), or you only need a number in binary or hex (use base-converter). What it computes: Computes the network and broadcast addresses, subnet and wildcard masks, first and last host, usable and total addresses, address class and RFC 1918 private status for an IPv4 address in CIDR notation or with a dotted subnet mask, using 32-bit unsigned arithmetic. Inputs: cidr (string). Complete JSON argument examples: {"cidr":"192.168.1.10/26"} | {"cidr":"10.0.0.0 255.0.0.0"} Outputs: ip_address, cidr_notation, network_address, broadcast_address, subnet_mask, wildcard_mask, prefix_length [bits], host_bits [bits], first_host, last_host, usable_hosts, total_addresses, ip_class, is_private, address_scope, binary_mask, binary_address, ip_integer. Formula: mask = 2^32 − 2^(32 − prefix); network = ip AND mask; broadcast = network OR NOT mask; total = 2^(32 − prefix); usable = total − 2 (prefix ≤ 30), 2 (prefix 31), 1 (prefix 32) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/subnet-calculator with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/developer/subnet-calculator.md
calculate_t_test
Use this when you want to test whether a sample mean differs from a hypothesised value, whether two independent groups have different means, or whether paired before/after measurements changed. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the data are proportions or counts (use proportion-z-test or chi-square-test), you have three or more groups (ANOVA), or you already have t and df and only need the p-value (use p-value). What it computes: Runs a one-sample, Welch two-sample (unequal variances) or paired Student t-test from raw samples or summary statistics (mean, SD, n), returning t, degrees of freedom, two- and one-sided p-values, the confidence interval and the decision at the chosen alpha. Example user requests: Run a one-sample t-test for [102, 98, 105, 101, 104] against a mean of 100. | Compare two independent samples with Welch's t-test from their means, sample SDs and sample sizes. | Run a paired t-test on these before and after measurements in matching order. Inputs: mode (enum, optional); sample_a (number_list, optional); sample_b (number_list, optional); mean_a (number, optional); sd_a (number, optional); n_a (integer, optional); mean_b (number, optional); sd_b (number, optional); n_b (integer, optional); hypothesized_mean (number, optional); alpha (number, optional). Valid input combinations: one_sample: sample_a, or all of mean_a + sd_a + n_a. two_sample (also the default when mode is omitted): one complete raw-or-summary input for A and one for B. paired: both sample_a + sample_b, or paired-difference summary mean_a + sd_a + n_a. Do not mix a raw sample with its summary fields. Complete JSON argument examples: {"mode":"two_sample","sample_a":[5.1,4.9,5.6,5.8,6],"sample_b":[4.2,4.8,4.4,4.6,4.5]} | {"mode":"two_sample","mean_a":5.48,"sd_a":0.47117,"n_a":5,"mean_b":4.5,"sd_b":0.23452,"n_b":5} | {"mode":"one_sample","sample_a":[102,98,105,101,104],"hypothesized_mean":100} | {"mode":"paired","sample_a":[1.9,0.8,1.1,0.1,-0.1,4.4,5.5,1.6,4.6,3.4],"sample_b":[0.7,-1.6,-0.2,-1.2,-0.1,3.4,3.7,0.8,0,2]} | {"mode":"paired","mean_a":1.58,"sd_a":1.23042,"n_a":10} Outputs: test, mean_a, mean_b, mean_difference, standard_error, t_statistic, degrees_of_freedom, p_value_two_sided, p_value_one_sided, t_critical, ci_lower, ci_upper, significant, decision. Formula: one_sample: t = (x̄ − μ0) / (s / √n), df = n − 1. paired: same on the differences d = a − b. two_sample (Welch): t = (x̄a − x̄b − μ0) / √(sa²/na + sb²/nb), df = (sa²/na + sb²/nb)² / ((sa²/na)²/(na − 1) + (sb²/nb)²/(nb − 1)). p = P(|T_df| ≥ |t|); CI = estimate ± t(1 − alpha/2, df) × SE Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/t-test with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/statistics/t-test.md
calculate_tdee
Use this when you need daily maintenance calories for an adult, or calorie targets for a mild/standard deficit or surplus. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the person is a child, pregnant or breastfeeding, or you only need the resting rate (use bmr). What it computes: Estimates total daily energy expenditure from Mifflin-St Jeor BMR and an activity level, and derives calorie targets for maintaining, losing or gaining weight. Inputs: sex (enum); weight_kg (number, kg); height_cm (number, cm); age_years (number, years); activity_level (enum, optional). Complete JSON argument examples: {"sex":"male","weight_kg":70,"height_cm":175,"age_years":30,"activity_level":"moderate"} Outputs: bmr_kcal_per_day [kcal/day], activity_multiplier, tdee_kcal_per_day [kcal/day], mild_loss_kcal_per_day [kcal/day], loss_kcal_per_day [kcal/day], mild_gain_kcal_per_day [kcal/day], gain_kcal_per_day [kcal/day]. Formula: TDEE = BMR(Mifflin-St Jeor) × activity_multiplier; targets = TDEE ± 250 or ± 500 kcal/day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/tdee with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/health/tdee.md
calculate_tip
Use this when you need to add a gratuity to a restaurant, delivery or service bill and optionally divide the total among several people. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when people pay for different items or unequal shares (use bill-split), or you need to add sales tax rather than a tip (use sales-tax). What it computes: Computes the tip from a bill amount and tip percentage, the total including tip, and the per-person share when the bill is split evenly. Inputs: bill_amount (number); tip_percent (number, %, optional); split_between (integer, optional). Complete JSON argument examples: {"bill_amount":85.5,"tip_percent":18,"split_between":3} | {"bill_amount":42,"tip_percent":20} Outputs: tip_amount, total_amount, total_per_person, tip_per_person, bill_per_person. Formula: tip_amount = bill_amount × tip_percent / 100; total_amount = bill_amount + tip_amount; per person = value / split_between Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/tip with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/tip.md
convert
convert_betting_odds
Use this when you have odds in one format and need the other two, the implied probability of a price, or the payout of a stake at those odds. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need the combined price of several selections (use parlay-odds), the value of a bet given your own probability estimate (use bet-expected-value), or a bookmaker's margin across a whole market (use arbitrage-bet). Mathematics only; not gambling advice. What it computes: Converts betting odds between American (moneyline), decimal (European) and fractional (UK) formats, auto-detecting the input format, and reports the implied probability, profit and total return for a stake. Inputs: odds (string); format (enum, optional); stake (number, optional). Complete JSON argument examples: {"odds":"+150"} | {"odds":"-200","format":"auto","stake":100} Outputs: american, decimal, fractional, implied_probability_percent [%], profit_on_stake, total_return, detected_format. Formula: decimal = 1 + american/100 (american > 0) or 1 + 100/|american| (american < 0); decimal = 1 + a/b (fractional a/b); american = +100·(decimal − 1) if decimal ≥ 2, else −100/(decimal − 1); fractional = (decimal − 1) reduced with the GCD; implied_probability_percent = 100/decimal; total_return = stake × decimal Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/odds-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/gaming/odds-converter.md
convert_lunar_to_solar
Use this when you know a lunar date such as 八月十五 or 闰六月初一 of a given lunar year and need the Gregorian date (e.g. for a lunar birthday or festival). Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you start from a Gregorian date (use lunar-calendar-converter), or you want every festival of a year at once (use chinese-festivals). What it computes: Converts a Chinese lunar calendar date (year, month, leap-month flag, day) to the Gregorian date, reporting the weekday, the day's ganzhi (干支) and the length of that lunar month, and validating that the leap month and day exist in that year. Example user requests: What Gregorian date is lunar 2026 month 8 day 15? | 2025 年农历闰六月初一对应公历哪一天? | Convert a Chinese lunar birthday to its Gregorian date and verify the leap-month flag. Inputs: lunar_year (integer); lunar_month (integer); is_leap_month (boolean, optional); lunar_day (integer). Complete JSON argument examples: {"lunar_year":2026,"lunar_month":8,"is_leap_month":false,"lunar_day":15} | {"lunar_year":2025,"lunar_month":6,"is_leap_month":true,"lunar_day":1} Outputs: gregorian_date, weekday, day_ganzhi, month_days, lunar_date_chinese, month_name, year_ganzhi, zodiac, julian_day_number, leap_month_note. Formula: JDN = start of the lunar month (new-moon day at UTC+8) + lunar_day − 1; month numbering per GB/T 33661-2017 (month 11 contains the winter solstice; leap month = first month without a 中气) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lunar-to-solar with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/lunar-to-solar.md
convert_solar_to_lunar
Use this when you need the Chinese lunar date, ganzhi day/month/year, zodiac year or current solar term for a given Gregorian date (defaults to today). Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you start from a lunar date and need the Gregorian date (use lunar-to-solar), need a person's zodiac with the 立春 boundary option (use chinese-zodiac), or need the astronomical moon phase (use moon-phase). What it computes: Converts a Gregorian date to the Chinese lunisolar calendar (农历 nongli): lunar year, month (with leap-month flag), day, the sexagenary stems and branches (干支 ganzhi) of year, month and day, zodiac animal, nayin (纳音), the current 24-solar-term period and any traditional festival on that day. Example user requests: Convert 2026-09-25 to the Chinese lunar calendar and say whether it is a leap month. | 把 2025-07-25 换成农历,并给出干支和节气。 | Which Chinese lunar festival falls on this Gregorian date? Inputs: date (date, optional). Complete JSON argument examples: {"date":"2026-09-24"} | {"date":"2025-07-25"} Outputs: lunar_year, lunar_month, is_leap_month, lunar_day, lunar_date_chinese, lunar_date_text, month_name, day_name, month_days, leap_month_this_year, year_ganzhi, year_ganzhi_pinyin, year_english, zodiac, nayin_year, month_ganzhi, month_ganzhi_pinyin, day_ganzhi, day_ganzhi_pinyin, weekday, current_solar_term, next_solar_term, days_to_next_term [days], is_solar_term_day, festival, julian_day_number. Formula: lunar month = interval between successive new moons (instants at 120° E, UTC+8); month 11 contains the winter solstice; a leap month is the first month without a major solar term (中气) in a 13-month solstice-to-solstice suite; year_ganzhi index = (lunar_year − 4) mod 60; day_ganzhi index = (JDN + 49) mod 60; month branch = 寅 from 立春, one branch per odd solar term Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/lunar-calendar-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/lunar-calendar-converter.md
convert_temperature
Use this when you need a weather, cooking, body or laboratory temperature in another scale, e.g. Fahrenheit to Celsius or Celsius to Kelvin. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need to convert a temperature difference (a change of 10 °C is 18 °F, not 50 °F: multiply by 9/5 without the offset) or heat energy (use energy). What it computes: Converts temperatures between Celsius, Fahrenheit, Kelvin and Rankine with the exact defining relations (°F = °C × 9/5 + 32, K = °C + 273.15, °R = °F + 459.67) and rejects values below absolute zero. Inputs: value (number); from_unit (enum); to_unit (enum). Complete JSON argument examples: {"value":100,"from_unit":"F","to_unit":"C"} | {"value":25,"from_unit":"C","to_unit":"F"} Outputs: result, result_text, formula, factor, conversion_table. Formula: °F = °C × 9/5 + 32; °C = (°F − 32) × 5/9; K = °C + 273.15; °R = °F + 459.67 = K × 9/5 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/temperature with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/conversion/temperature.md
convert_time_zone
Use this when you need to know what time an event scheduled in one city corresponds to in another city or in UTC on a specific date. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need the same instant in many zones at once (use world-clock), an epoch value (use unix-timestamp), or the elapsed time between two clock times (use time-duration). What it computes: Converts a wall-clock date and time between IANA zones using pinned tzdb 2026d. It reports both offsets, the UTC instant, date changes, the source-time status and every candidate UTC instant when the input falls in a repeated hour. Example user requests: Convert 2027-01-15 09:00 America/New_York to Australia/Adelaide and show both dates. | 把 2026-07-15 09:00 纽约时间换成阿德莱德时间。 | What UTC instant corresponds to 2026-10-04 01:45 in Australia/Adelaide? Inputs: date (date, optional); time (string); from_zone (string); to_zone (string); resolution_policy (enum, optional). Complete JSON argument examples: {"date":"2026-09-23","time":"09:00","from_zone":"Australia/Adelaide","to_zone":"America/New_York"} | {"date":"2026-07-04","time":"12:00","from_zone":"America/Los_Angeles","to_zone":"Asia/Kolkata"} Outputs: converted_date, converted_time, converted_datetime, converted_weekday, from_utc_offset, to_utc_offset, from_abbreviation, to_abbreviation, utc_datetime, day_difference [days], time_difference_hours [h], source_time_status, source_candidate_utc_datetimes, applied_resolution_policy, tzdb_version, dataset_version, source_url, source_sha256. Formula: utc = date + time − offset_from(date, time); converted = utc + offset_to(utc); time_difference_hours = (offset_to − offset_from) / 60 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/time-zone-converter with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/time-zone-converter.md
convert_units
Use this when the user asks to convert a numeric value between units of the same physical quantity: length, mass, temperature, area, volume, speed, time, data, energy, pressure, power, angle, fuel economy, force, frequency, density or torque. Unit symbols and common names are accepted. Do not use this for currency, live exchange rates or cross-quantity conversions that require density. Returns the converted value, detected quantity, exact factor and a conversion table.
global
add_global_public_holiday_working_days
Use this when you need a 2026-2028 date offset and accept the OpenHolidays nationwide-only, no-inferred-substitute-day reference semantics. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the task requires a direct official authority, regional/local or employer calendar, substitute-day rules, or dates outside the published coverage. What it computes: Adds or subtracts working days using the pinned OpenHolidays nationwide public-holiday reference and CLDR weekend rule for a supported country. Example user requests: Add five reference working days to 2026-10-23 in Austria. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-23","territory":"AT","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], non_working_weekend_days_skipped [days], public_holidays_skipped, territory, territory_name, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: move one Gregorian day at a time; decrement remaining only when the reference status is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-add-working-days.md
add_global_reference_working_days
Use this when you need a broad 2026-2028 date offset and accept OpenWorkdays reference semantics, including its source observed/estimated flags. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the task requires a direct official authority, regional/local or employer calendar, or dates outside published coverage. What it computes: Adds or subtracts working days using the pinned OpenWorkdays national-scope reference for 246 country/territory codes. Example user requests: Add five broad-reference working days to 2026-10-23 in Australia. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-23","territory":"AU","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], non_working_weekend_days_skipped [days], public_holidays_skipped, territory, territory_name, source_territory_name, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: move one Gregorian day at a time; decrement remaining only when the source reference status is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-add-working-days.md
add_global_working_days
Use this when you need a weekday-based date offset for a territory and explicitly want public holidays excluded from the calculation. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when a public-holiday, employer, bank, exchange, school, religious or emergency-closure calendar is required. What it computes: Adds or subtracts weekday-baseline working days for any supported CLDR alpha-2 territory code using CLDR weekend rules, without inventing public-holiday defaults. Example user requests: Add 5 weekday working days to 2026-10-02 in AU. | Subtract 3 Saudi weekday-baseline working days from 2026-06-15. Inputs: start_date (date); territory (enum); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-10-02","territory":"AU","working_days":5} Outputs: start_date, result_date, working_days_added [working days], calendar_days_elapsed [days], territory, territory_display_name, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: move one Gregorian day at a time and decrement remaining only when globalWorkingDayStatus(date, territory).is_working_day is true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-add-working-days.md
check_global_public_holiday_working_day
Use this when you need a source-labelled 2026-2028 public-holiday reference for one of the supported OpenHolidays countries and nationwide-only semantics are acceptable. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need an official direct authority result, regional/local holidays, substitute-day rules, employer/bank/exchange closures, or a date outside 2026-2028; use the verified China/UK package or the CLDR baseline as appropriate. What it computes: Checks a date for a supported country using CLDR weekend rules plus nationwide public-holiday events from a pinned OpenHolidays open-data snapshot, with explicit non-authority and substitute-day limits. Example user requests: Is 2026-10-26 a working day in Austria after nationwide public holidays are excluded? | Check 2027-05-01 in France using the OpenHolidays nationwide reference. Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-26","territory":"AT"} Outputs: territory, territory_name, weekday, is_working_day, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: is_working_day = CLDR weekday(date) and no included nationwide public-holiday event(date, territory) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-working-day.md
check_global_reference_working_day
Use this when you need broad 2026-2028 working-day reference coverage and accept national-scope open-derived semantics rather than a direct authority calendar. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need an official direct authority, a regional/employer/bank/exchange calendar, a legal determination, or a date outside 2026-2028; use the official China/UK package or the CLDR baseline as appropriate. What it computes: Checks a date across 246 country/territory codes using a pinned OpenWorkdays national-scope public-holiday reference, country weekend rules and explicit working-weekend dates, with estimated/observed flags and non-authority limits. Example user requests: Is 2026-10-26 a working day in Australia using the broad national reference? | Check 2027-02-25 in Saudi Arabia and show whether the holiday date is estimated. Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-26","territory":"AU"} Outputs: territory, territory_name, source_territory_name, weekday, is_working_day, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: is_working_day = not source_weekend(date) and not source_public_holiday(date, country); explicit source working-weekend dates override the weekend classification Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-working-day.md
check_global_working_day
Use this when you need a worldwide weekday/weekend check and have a CLDR alpha-2 territory code, but do not need public-holiday exclusions. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need public holidays, substitute holidays, employer closures, bank settlement, stock exchange, school, religious or emergency closure rules; use a jurisdiction-specific evidence package instead. What it computes: Checks a Gregorian date for any supported CLDR alpha-2 territory code using the pinned Unicode CLDR weekend convention, with explicit holiday exclusions and provenance. Example user requests: Is 2026-10-05 a working day in Australia under the territory weekend rule? | Check whether Friday 2026-06-12 is a weekday in Saudi Arabia. | 判断 2026-10-01 在印度按周末规则是否为工作日。 Inputs: date (date); territory (enum). Complete JSON argument examples: {"date":"2026-10-05","territory":"AU"} Outputs: date, territory, territory_display_name, weekday, is_working_day, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: is_working_day = weekday(date) not in CLDR(territory).weekendStart..weekendEnd Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-working-day.md
count
count_china_working_days
Use this when you need the number of official mainland China working days in a 2024-2026 date range for an SLA, payroll, project or delivery estimate. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need only elapsed calendar days, another jurisdiction, an industry-specific settlement calendar, or dates outside 2024-2026. What it computes: Counts official mainland China working and non-working days in a date range using State Council holiday periods and weekend makeup workdays rather than a simple Monday-Friday rule. Example user requests: How many official China working days are there from 2026-09-18 through 2026-09-25, inclusive? | 计算2026年国庆节前后这段日期中实际需要上班的天数,要包含调休周末。 | Count mainland China business days between 2025-01-24 and 2025-02-10. Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-09-18","end_date":"2026-09-25","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], adjusted_workdays_counted, holiday_dates_counted [days], source_document_ids, dataset_version, coverage_start, coverage_end. Formula: for each included date: working_days += is_working_day(date); non_working_days += not is_working_day(date) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-working-days-between.md
count_global_public_holiday_working_days
Use this when you need a source-labelled nationwide public-holiday reference count for a supported country and regional or substitute-day semantics are not required. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the range needs a direct official authority, regional/local or employer calendar, substitute-day rules, or dates outside 2026-2028. What it computes: Counts working and non-working dates in a 2026-2028 range using CLDR weekends plus included nationwide OpenHolidays public events. Example user requests: Count reference working days in France from 2026-05-01 through 2026-05-15. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-05-01","end_date":"2026-05-15","territory":"FR","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], public_holidays_counted, territory, territory_name, weekend_days, holiday_names, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_commit. Formula: for each included date: working_days += reference status.is_working_day; non_working_days += not is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-public-holiday-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-public-holiday-working-days-between.md
count_global_reference_working_days
Use this when you need a broad national-scope reference count and regional or employer semantics are not required. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the range needs a direct official authority, regional/local or employer calendar, or dates outside 2026-2028. What it computes: Counts working and non-working dates in a 2026-2028 range using OpenWorkdays national-scope public-holiday data and country weekend rules. Example user requests: Count broad-reference working days in Australia from 2026-10-01 through 2026-10-15. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-10-01","end_date":"2026-10-15","territory":"AU","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], public_holidays_counted, territory, territory_name, source_territory_name, weekend_days, working_weekend_day, holiday_names, holiday_observed, holiday_estimated, holiday_policy, calendar_scope, calendar_profile, substitute_day_policy, source_quality, dataset_version, coverage_start, coverage_end, source_url. Formula: for each included date: working_days += reference status.is_working_day; non_working_days += not is_working_day Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-reference-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-reference-working-days-between.md
count_global_working_days
Use this when you need a worldwide weekday-based count for a stated territory and public holidays are intentionally outside scope. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the count must reflect public holidays, substitute days, employer closures, bank settlement, exchange, school or religious calendars. What it computes: Counts weekday-baseline working days in a date range for any supported CLDR alpha-2 territory code, with explicit endpoint rules and no hidden holiday assumptions. Example user requests: How many weekday-baseline working days are between 2026-10-01 and 2026-10-15 in AE? | Count Saudi weekday working days from 2026-06-01 through 2026-06-30. Inputs: start_date (date); end_date (date); territory (enum); include_start_date (boolean, optional); include_end_date (boolean, optional). Complete JSON argument examples: {"start_date":"2026-10-01","end_date":"2026-10-15","territory":"AU","include_start_date":true,"include_end_date":true} Outputs: normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], territory, territory_display_name, weekend_days, calendar_scope, holiday_policy, calendar_profile, calendar_selection_catalog_url, dataset_version, source_url. Formula: for each included date: working_days += not is_weekend; non_working_days += is_weekend Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/global-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/global-working-days-between.md
count_uk_working_days
Use this when you need a 2024-2028 UK SLA, payroll, project or delivery-day count and the selected division's bank holidays must be excluded. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need only elapsed calendar days, a local/employer/market calendar, another jurisdiction or dates outside 2024-2028. What it computes: Counts working and non-working dates in England and Wales, Scotland or Northern Ireland using the official GOV.UK bank-holiday list instead of a weekday-only approximation. Example user requests: How many England and Wales working days are there from 24 December 2026 through 4 January 2027? | Count Northern Ireland business days from 10 to 14 July 2026 inclusive. | How many Scottish working days fall between 1 and 20 June 2026? Inputs: start_date (date); end_date (date); include_start_date (boolean, optional); include_end_date (boolean, optional); division (enum, optional). Complete JSON argument examples: {"start_date":"2026-12-24","end_date":"2027-01-04","include_start_date":true,"include_end_date":true,"division":"england-and-wales"} | {"start_date":"2026-07-10","end_date":"2026-07-14","include_start_date":true,"include_end_date":true,"division":"northern-ireland"} Outputs: division, division_name, normalized_start_date, normalized_end_date, working_days [working days], non_working_days [days], calendar_days_counted [days], bank_holidays_counted, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: for each included date: working_days += is_working_day(date); non_working_days += not is_working_day(date) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-working-days-between with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-working-days-between.md
calculator
get_calculator_schema
Use this only after search_calculators when its input_hints do not resolve a range, enum or optional-field question. Return the full input/output schema, formula, sources, examples and limitations for one calculator. Do not call it when the search result already supplies enough input detail; call run_calculator instead. This tool only describes and does not calculate.
list_calculator_categories
List the calculator categories with id, name, description and calculator count. Use it to orient before list_calculators. Does not perform calculations.
run_calculator
Use this when the user needs one of Calcgrid's 548 deterministic calculators and no dedicated typed tool covers it. Call it immediately after search_calculators once calculator_id and input_hints are known; do not stop at search or schema discovery. Do not use it for trivial arithmetic, live rates or unrelated tasks. Returns typed values with units, formula, sources, freshness and timestamp; validation errors identify the field and a repair hint.
working
add_uk_working_days
Use this when you need a deadline a stated number of UK working days before or after a 2024-2028 date and the correct division's bank holidays matter. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need calendar days, a local/employer/market calendar, a non-UK jurisdiction or a result outside 2024-2028. What it computes: Adds or subtracts working days for England and Wales, Scotland or Northern Ireland, skipping weekends and the selected division's official bank holidays. Example user requests: What date is five England and Wales working days after 23 December 2026? | Add two Scottish working days to 12 June 2026, accounting for the official bank holiday. | Subtract ten Northern Ireland business days from 20 July 2027. Inputs: start_date (date); working_days (integer, working days); division (enum, optional). Complete JSON argument examples: {"start_date":"2026-12-23","working_days":5,"division":"england-and-wales"} | {"start_date":"2026-06-12","working_days":2,"division":"scotland"} Outputs: division, division_name, start_date, result_date, result_weekday, result_is_working_day, working_days_added [working days], calendar_days_elapsed [days], non_working_days_skipped [days], bank_holidays_skipped, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: move one calendar day at a time in sign(working_days); decrement only when the selected UK division reports is_working_day=true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-add-working-days.md
check_uk_working_day
Use this when you need to know whether a 2024-2028 UK date is a Monday-Friday working day after applying the official bank holidays for the selected division. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a local council, school, employer, financial-market, emergency-closure or non-UK calendar, or a date outside 2024-2028. What it computes: Checks whether a date is a normal working day in England and Wales, Scotland or Northern Ireland using a pinned snapshot of the official GOV.UK bank-holiday feed. Example user requests: Is 28 December 2026 a working day in England and Wales, or the Boxing Day substitute holiday? | Is Scotland working on 15 June 2026? | Check whether 13 July 2026 is a working day in Northern Ireland. Inputs: date (date); division (enum, optional). Complete JSON argument examples: {"date":"2026-12-28","division":"england-and-wales"} | {"date":"2026-06-15","division":"scotland"} Outputs: date, weekday, division, division_name, is_working_day, day_type, bank_holiday_name, bank_holiday_notes, status_basis, source_url, licence, dataset_version, coverage_start, coverage_end, source_snapshot_sha256. Formula: official bank-holiday event → non-working; else Saturday/Sunday → non-working; else Monday-Friday → working Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/uk-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/uk-working-day.md
list_working_day_calendars
Use this before a working-day or business-day task to select the correct evidence package. It distinguishes the worldwide CLDR weekday/weekend baseline, the broad source-labelled OpenWorkdays national-scope reference, the clearly labelled OpenHolidays nationwide public-holiday reference, and the official public-holiday calendars for mainland China and the UK. The result contains one machine-readable route per CLDR territory, or one route when the optional territory filter is supplied, including whether holiday semantics are unsupported, reference-only, or require a jurisdiction-specific input such as the UK division. This is read-only catalogue discovery; it does not calculate a date or count and must not be reported as a calculation success.
calculators
list_calculators
List all calculators, optionally filtered by category id (finance, health, fitness, math, geometry, statistics, conversion, physics, chemistry, everyday, food, construction, business, time, medical, engineering, weather, investing, developer, energy, photography, science, gaming, lunar, yijing). Returns calculator_id, name, description, use_when and required inputs for each. Use it to browse a whole category; use search_calculators for keyword lookup. Does not perform calculations.
search_calculators
Use this when a user needs a deterministic calculation but none of the dedicated tools clearly matches and the calculator_id is unknown. Search 548 calculators from the complete task in English or Chinese, then call run_calculator with the top matching calculator_id and returned input_hints. Do not use this for trivial arithmetic, live data, writing tasks, or when a dedicated typed tool already matches. This tool only discovers; it does not calculate.
china
add_china_working_days
Use this when you need a deadline or settlement date a stated number of mainland China national working days before or after a 2024-2026 date. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need calendar days, a sector-specific settlement calendar, a local holiday calendar, or a result outside the 2024-2026 coverage. What it computes: Adds or subtracts official mainland China working days, skipping holiday periods and ordinary weekends while counting State Council-designated weekend makeup workdays. Example user requests: What date is 5 China working days after 2026-09-24, accounting for Mid-Autumn and National Day? | 从2026年9月18日起往后数5个中国工作日是哪天? | Subtract 10 official mainland China business days from 2026-03-02. Inputs: start_date (date); working_days (integer, working days). Complete JSON argument examples: {"start_date":"2026-09-24","working_days":5} | {"start_date":"2026-09-18","working_days":5} Outputs: start_date, result_date, result_weekday, result_is_working_day, working_days_added [working days], calendar_days_elapsed [days], non_working_days_skipped [days], adjusted_workdays_counted, source_document_ids, dataset_version, coverage_start, coverage_end. Formula: move one calendar day at a time in sign(working_days); decrement the remaining count only when is_working_day(date) is true Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-add-working-days with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-add-working-days.md
check_china_working_day
Use this when you need to know whether a specific 2024-2026 date is a working day in mainland China, especially around Spring Festival, National Day or another adjusted holiday. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a Hong Kong, Macao, Taiwan, local minority, school, employer, bank-settlement or stock-exchange calendar, or a year outside 2024-2026. What it computes: Checks whether a date is an official national working day in mainland China, including weekend makeup workdays (调休上班) and multi-day holiday periods from State Council notices. Example user requests: Is Sunday 2026-01-04 an official working day in mainland China? | 2026年9月20日是休息日还是调休上班? | Will mainland China offices normally work on 2026-02-18? Inputs: date (date). Complete JSON argument examples: {"date":"2026-01-04"} | {"date":"2026-02-18"} Outputs: date, weekday, is_working_day, day_type, holiday_name, holiday_name_zh, status_basis, jurisdiction, source_document_id, source_published_at, source_url, dataset_version, coverage_start, coverage_end. Formula: adjusted weekend workday override → working; else official holiday-period override → non-working; else Monday-Friday → working; Saturday-Sunday → non-working Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/china-working-day with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/everyday/china-working-day.md
solve
solve_ohms_law
Use this when you know two of voltage, current and resistance in a DC or purely resistive circuit and need the third and the power. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the load is reactive (inductors or capacitors require impedance, not resistance), you want energy cost over time (use electric-power), or you need the equivalent resistance of several resistors (use resistors-series-parallel). What it computes: Solves Ohm's law V = I·R for whichever of voltage, current or resistance is omitted and reports the electrical power dissipated (P = V·I). Inputs: voltage_v (number, V, optional); current_a (number, A, optional); resistance_ohm (number, Ω, optional). Valid input combinations: Provide exactly two of voltage_v, current_a and resistance_ohm; the omitted quantity is calculated. Example: {"voltage_v":12,"resistance_ohm":220}. Complete JSON argument examples: {"voltage_v":12,"resistance_ohm":220} | {"current_a":2,"resistance_ohm":50} Outputs: solved_for, voltage_v [V], current_a [A], current_ma [mA], resistance_ohm [Ω], power_w [W]. Formula: V = I × R; I = V / R; R = V / I; P = V × I = I² × R = V² / R Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ohms-law with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/physics/ohms-law.md
solve_quadratic_equation
Use this when you need the solutions of a second-degree polynomial equation, or the vertex and discriminant of a parabola y = ax² + bx + c. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the coefficient a is 0 (the equation is linear: x = −c / b), or you need roots of x^n = c for other powers (use nth-root). What it computes: Solves ax² + bx + c = 0 with the quadratic formula, reporting the discriminant, both roots (real, or complex conjugates written as strings), the vertex of the parabola and the sum and product of the roots. Inputs: a (number); b (number); c (number). Complete JSON argument examples: {"a":1,"b":-5,"c":6} | {"a":1,"b":2,"c":5} Outputs: discriminant, nature, root1, root2, roots, vertex_x, vertex_y, sum_of_roots, product_of_roots. Formula: Δ = b² − 4ac; x = (−b ± √Δ) / (2a); for Δ < 0: x = −b/(2a) ± i·√(−Δ)/(2|a|); vertex = (−b/(2a), c − b²/(4a)) Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/quadratic-equation with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/math/quadratic-equation.md
cast
cast_plum_blossom_hexagram
Use this when you need a Plum Blossom hexagram cast for a moment or from numbers, with the upper/lower trigram arithmetic, the moving line and the 体/用 five-element reading laid out step by step. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you already have six lines from coins or yarrow (use liuyao for a 六爻 chart or hexagram-change for plain line changes), or you only want a hexagram's text and structure (use hexagram-lookup). What it computes: Casts an I Ching hexagram by the Plum Blossom (Meihua Yishu) method of Shao Yong from the lunar year, month, day and hour (年月日时起卦) or from two or three given numbers, then derives the moving line, changed hexagram (之卦), nuclear hexagram (互卦), the 体 (Ti, self) and 用 (Yong, matter) trigrams and their five-element relations. Inputs: method (enum, optional); date (date, optional); time (string, optional); number_1 (integer, optional); number_2 (integer, optional); number_3 (integer, optional); add_hour_to_moving_line (boolean, optional). Valid input combinations: time_method needs date/time only; two_numbers requires number_1 + number_2; three_numbers requires number_1 + number_2 + number_3. Complete JSON argument examples: {"method":"time_method","date":"2026-09-24","time":"14:30"} | {"method":"two_numbers","number_1":3,"number_2":7,"date":"2026-09-24","time":"12:00"} Outputs: method_used, lunar_date, upper_trigram, lower_trigram, original_hexagram, original_lines, moving_line, moving_line_name, changed_hexagram, nuclear_hexagram, ti_trigram, yong_trigram, ti_element, yong_element, yong_ti_relation, nuclear_relations, changed_relation, ti_seasonal_strength, calculation_trace, reading_hint, disclaimer. Formula: Time method: year = branch number of the lunar year (子 = 1 … 亥 = 12), month = lunar month, day = lunar day, hour = 时辰 number (子 = 1 … 亥 = 12); upper = (year + month + day) mod 8, lower = (year + month + day + hour) mod 8, moving line = (year + month + day + hour) mod 6 (remainder 0 → 8 or 6); trigram numbers in earlier-heaven order 乾1 兑2 离3 震4 巽5 坎6 艮7 坤8. Two numbers: upper = number_1 mod 8, lower = number_2 mod 8, moving = (number_1 + number_2 [+ hour]) mod 6. Three numbers: moving = number_3 mod 6. 体 = trigram without the moving line, 用 = trigram with it; relations by the five-element generating (木→火→土→金→水) and controlling (木→土→水→火→金) cycles. Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/meihua-yishu with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/yijing/meihua-yishu.md
chinese
find_chinese_zodiac
Use this when you need someone's Chinese zodiac sign and element from a Gregorian birth date, especially for January–February births where the boundary matters, or the sign's traditional compatibility groups. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a full Bazi chart with month, day and hour pillars (use bazi-four-pillars), or the Western star sign (use zodiac). What it computes: Finds the Chinese zodiac animal (生肖 shengxiao), sexagenary year (干支 ganzhi), stem element, yin/yang, nayin (纳音) and fixed element for a birth date, using either the Chinese New Year boundary or the 立春 (Lichun) boundary, plus the traditional relationship groups (六合, 三合, 六冲, 六害, 相刑) and 本命年 years. Inputs: birth_date (date); boundary (enum, optional); reference_year (integer, optional). Complete JSON argument examples: {"birth_date":"1990-02-10","boundary":"lunar_new_year","reference_year":2026} | {"birth_date":"1990-02-03","boundary":"lichun"} Outputs: zodiac, zodiac_cn, year_ganzhi, year_ganzhi_pinyin, year_english, stem_element, yin_yang, nayin, animal_fixed_element, year_used, chinese_new_year_date, lichun_datetime, boundary_note, benmingnian_years, secret_friend, trine_partners, clash, harm, punishment, age_in_reference_year [years], is_benmingnian_in_reference_year, reference_year_zodiac. Formula: year_used = Gregorian year, minus 1 when birth_date is before Chinese New Year (or before 立春 with boundary = lichun); ganzhi index = (year_used − 4) mod 60; animal = branch = index mod 12; 六合 partner = (13 − b) mod 12; 三合 = b ± 4; 六冲 = b + 6; 六害 partner = (7 − b) mod 12 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/chinese-zodiac with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/chinese-zodiac.md
compare
compare_loans
Use this when you have two loan or mortgage quotes with different rates, terms or fees for the same amount and want the payments and lifetime costs side by side. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you are replacing an existing loan (use refinance-break-even), only need one loan's payment (use loan-payment), or will sell or repay early (this compares full-term costs and ignores the time value of money). Informational; not financial advice. What it computes: Compares two fixed-rate, fully amortizing loan offers for the same amount: the level monthly payment, total interest, up-front fees and total cost (interest + fees) of each, and which offer costs less over its full term. Example user requests: Compare a 300000 loan at 6% for 30 years with 3000 in fees against 5.5% for 15 years with 5000 in fees. | Which of these two fixed-rate offers has the lower lifetime interest and fees? | 同样贷款30万元,方案A年利率6%期限30年,方案B年利率5.5%期限15年,比较月供和总成本。 Inputs: loan_amount (number); rate_a_percent (number, %); term_a_years (number, years); fees_a (number, optional); rate_b_percent (number, %); term_b_years (number, years); fees_b (number, optional). Complete JSON argument examples: {"loan_amount":300000,"rate_a_percent":6,"term_a_years":30,"fees_a":3000,"rate_b_percent":5.5,"term_b_years":15,"fees_b":5000} | {"loan_amount":25000,"rate_a_percent":7,"term_a_years":5,"rate_b_percent":6,"term_b_years":6,"fees_b":500} Outputs: payment_a, payment_b, total_interest_a, total_interest_b, total_cost_a, total_cost_b, cheaper_loan, monthly_payment_difference, total_cost_difference, comparison, summary. Formula: For each loan: i = rate/1200, n = 12 × term_years, payment = loan_amount × i / (1 − (1 + i)^−n) (loan_amount / n if i = 0); total_interest = payment × n − loan_amount; total_cost = total_interest + fees. cheaper_loan = the loan with the lower total_cost; monthly_payment_difference = payment_a − payment_b; total_cost_difference = total_cost_a − total_cost_b Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/loan-comparison with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/finance/loan-comparison.md
estimate
estimate_ev_charging_time
Use this when you want to know how long an EV needs on a home wallbox, a public AC post or a DC fast charger to reach a target charge, or what the session costs at a given electricity price. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you need a battery's charge time from ampere-hours and charger current (use battery-charge-time) or the driving range the added energy gives (use ev-range-efficiency); DC fast charging above about 80 % tapers strongly and takes longer than this constant-power estimate. What it computes: Estimates how long an electric vehicle takes to charge between two states of charge from its battery capacity, the charger power (capped by the onboard charger for AC charging) and the charging efficiency, plus the energy drawn from the grid and its cost. Inputs: battery_capacity_kwh (number, kWh); start_percent (number, %, optional); target_percent (number, %, optional); charger_power_kw (number, kW); max_onboard_charger_kw (number, kW, optional); charging_efficiency_percent (number, %, optional); electricity_price_per_kwh (number, per kWh, optional). Complete JSON argument examples: {"battery_capacity_kwh":75,"start_percent":20,"target_percent":80,"charger_power_kw":7,"charging_efficiency_percent":90,"electricity_price_per_kwh":0.3} | {"battery_capacity_kwh":60,"start_percent":10,"target_percent":100,"charger_power_kw":11,"max_onboard_charger_kw":7.4} Outputs: energy_added_kwh [kWh], energy_from_grid_kwh [kWh], effective_power_kw [kW], charging_time_hours [h], charging_time_text, cost, range_note. Formula: energy_added_kwh = battery_capacity_kwh × (target_percent − start_percent) / 100; energy_from_grid_kwh = energy_added_kwh / (charging_efficiency_percent / 100); effective_power_kw = min(charger_power_kw, max_onboard_charger_kw); charging_time_hours = energy_from_grid_kwh / effective_power_kw; cost = energy_from_grid_kwh × electricity_price_per_kwh Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/ev-charging-time with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/energy/ev-charging-time.md
lookup
lookup_iching_hexagram
Use this when you need to identify or describe a hexagram, convert between its number, name, trigram pair and line pattern, or find its derived hexagrams and palace position. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you have moving lines and need the changed hexagram and reading rule (use hexagram-change), or you need to cast a hexagram from a date or numbers (use meihua-yishu). What it computes: Identifies one of the 64 hexagrams (六十四卦, liushisi gua) from its King Wen number, name, two trigrams or line digits and returns its lines, trigrams, nuclear (互卦, hugua), inverse (综卦, zonggua) and opposite (错卦, cuogua) hexagrams, its Jing Fang palace (京房八宫, Jingfang bagong) with 世/应 (shi/ying) lines, and the received judgment text (卦辞, guaci). Inputs: king_wen_number (integer, optional); name (string, optional); upper_trigram (string, optional); lower_trigram (string, optional); lines (string, optional). Valid input combinations: Identify the hexagram with king_wen_number, name, lines, or the complete upper_trigram + lower_trigram pair. Multiple identification methods may be supplied when they agree. Complete JSON argument examples: {"king_wen_number":1} | {"lines":"100010"} Outputs: number, name_cn, full_name_cn, pinyin, english, symbol, lines, lines_text, upper_trigram, lower_trigram, nuclear_hexagram, inverse_hexagram, opposite_hexagram, palace, palace_position, shi_line, ying_line, judgment_text, sequence_pair, binary_value, notes. Formula: lower trigram = lines 1–3, upper trigram = lines 4–6; nuclear = lines 2,3,4 + 3,4,5; inverse = reversed line order; opposite = each line flipped; binary_value = Σ line_i · 2^(i−1); 应 = 世 ± 3 Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/hexagram-lookup with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/yijing/hexagram-lookup.md
price
price_black_scholes_option
Use this when you need a theoretical European option price or its sensitivities from a given volatility, or want to check put-call parity for quoted prices. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the option is American with early exercise value, the underlying pays discrete dividends, or you need implied volatility from a market price (solve numerically instead). Informational only; not financial advice. What it computes: Prices a European call and put with the Black-Scholes-Merton formula from spot, strike, time to expiry, risk-free rate, volatility and a continuous dividend yield, and reports d1, d2 and the Greeks (delta, gamma, vega, theta, rho). Inputs: spot_price (number); strike_price (number); time_years (number, years); risk_free_rate_percent (number, % per year); volatility_percent (number, % per year); dividend_yield_percent (number, % per year, optional). Complete JSON argument examples: {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20} | {"spot_price":100,"strike_price":100,"time_years":1,"risk_free_rate_percent":5,"volatility_percent":20,"dividend_yield_percent":3} Outputs: call_price, put_price, d1, d2, delta_call, delta_put, gamma, vega_per_1pct, theta_call_per_day, theta_put_per_day, rho_call_per_1pct, rho_put_per_1pct, put_call_parity_check. Formula: d1 = [ln(S/K) + (r − q + σ²/2)·T] / (σ·√T); d2 = d1 − σ·√T; C = S·e^(−qT)·N(d1) − K·e^(−rT)·N(d2); P = K·e^(−rT)·N(−d2) − S·e^(−qT)·N(−d1); Δ_call = e^(−qT)·N(d1); Γ = e^(−qT)·φ(d1)/(S·σ·√T); vega = S·e^(−qT)·φ(d1)·√T; Θ_call = −S·e^(−qT)·φ(d1)·σ/(2√T) − r·K·e^(−rT)·N(d2) + q·S·e^(−qT)·N(d1); ρ_call = K·T·e^(−rT)·N(d2), with r, q, σ as decimals Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/black-scholes with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/investing/black-scholes.md
resolve
resolve_local_time
Use this when you must safely turn a named-zone local time into an instant, validate a scheduled time around a daylight-saving transition, or preserve every possible interpretation instead of silently choosing one. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when the input already includes a numeric UTC offset or Z, the task only needs the current clock time, or latitude/longitude must first be mapped to a zone. What it computes: Resolves a local wall-clock time with pinned IANA tzdb 2026d. Returns every valid UTC candidate for a repeated fall-back time, or the exact gap and shift-forward suggestion for a nonexistent spring-forward time. Example user requests: Resolve 2026-11-01 01:30 in America/New_York and return both UTC candidates. | Does 2026-03-08 02:30 exist in New York? Show the DST gap. | 判断 Australia/Adelaide 的 2026-10-04 02:30 是否存在,并给出时区数据版本。 Inputs: local_datetime (string); time_zone (string). Complete JSON argument examples: {"local_datetime":"2026-11-01T01:30:00","time_zone":"America/New_York"} | {"local_datetime":"2026-03-08T02:30:00","time_zone":"America/New_York"} Outputs: local_datetime, time_zone, resolved_zone_id, status, candidate_count, candidates, gap, related_transition, previous_transition, next_transition, tzdb_version, dataset_version, source_url, source_sha256, coverage_note. Formula: for each zone offset o: candidate_utc = local_wall_time + o; keep candidates whose active offset at candidate_utc equals o Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/local-time-resolver with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/local-time-resolver.md
solar
list_solar_terms
Use this when you need the date or time of 立春, 清明, 夏至, 冬至 or any other solar term in a given year, or the full 24-term table. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only need the term that a specific date falls in (use lunar-calendar-converter), or you need sunrise/sunset times (use sunrise-sunset). What it computes: Lists the 24 solar terms (节气 jieqi) of a Gregorian year with their exact instants: the moments the Sun's apparent longitude reaches multiples of 15°, computed astronomically and shown in a chosen UTC offset (China Standard Time by default). Example user requests: List all 24 solar terms for 2027 in UTC+8. | 2026 年立春和冬至的准确时间是什么? | When is Qingming this year in China Standard Time? Inputs: year (integer); utc_offset_hours (number, h, optional). Complete JSON argument examples: {"year":2024,"utc_offset_hours":8} | {"year":2026,"utc_offset_hours":8} Outputs: terms, lichun_date, spring_equinox, summer_solstice, autumn_equinox, winter_solstice, year_ganzhi, suishou_note, utc_offset. Formula: term instant: apparent geocentric solar longitude λ(JDE) = k·15° for k = 0 (春分) … 23 (惊蛰), solved by Newton iteration; UT = TT − ΔT; local time = UT + utc_offset_hours Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/solar-terms with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/lunar/solar-terms.md
time
list_time_zone_transitions
Use this when you need the next or historical daylight-saving/offset changes for scheduling, payroll, travel, audits or a regression test, with a specific reproducible tzdb version. Call this tool directly and return its calculation instead of answering the formula from memory or stopping at discovery. Do not use this when you only need to convert one ordinary date-time, need legal advice about a jurisdiction's time law, or need changes announced after this pinned release. What it computes: Lists every UTC-offset transition for one IANA zone and date range using pinned tzdb 2026d, including the local boundaries, offsets, abbreviations and whether the clock creates a gap or overlap. Example user requests: List every 2026 UTC-offset transition in America/New_York with local boundaries. | When does Australia/Adelaide change clocks between 2026-01-01 and 2027-01-01? | 列出 Europe/London 在 2026 年的夏令时转换点、前后偏移和 IANA 数据版本。 Inputs: time_zone (string); start_date (date); end_date (date). Complete JSON argument examples: {"time_zone":"America/New_York","start_date":"2026-01-01","end_date":"2026-12-31"} Outputs: time_zone, resolved_zone_id, start_date, end_date, transition_count, transitions, tzdb_version, dataset_version, source_url, source_sha256, coverage_note. Formula: select zone transition instants whose local boundary before or after lies inside [start_date, end_date] Direct REST fallback: POST https://tttkmbb.com/api/v1/calculate/time-zone-transitions with the same JSON input fields. Do not guess another /api/* path. Docs: https://tttkmbb.com/time/time-zone-transitions.md
units
list_units
List every unit symbol supported by convert_units, grouped by quantity, with names. Use it when a unit symbol is rejected with UNKNOWN_UNIT. Does not convert anything.

Endpoints

URLTransportStateLatencyChecked
https://tttkmbb.com/mcp streamable-http answering 422 ms 10 min ago

Alternatives to Calcgrid

same job, measured the same way
Business Days and Holidays
by openkrill

Count working days between two dates, add business days to a date, or list public holidays.

5 tools answering
tilwhen date engine
by tilwhen

Deterministic date arithmetic with auditable receipts: business days, due dates, holidays.

9 tools answering
Moltline TimeOps
by moltlinestudio

Business days, meeting overlap and recurrence expansion, deterministic. 3 of 5 tools free.

5 tools answering
AU Agent Utilities
by creatorhub121

Reliable Australian business-day, public-holiday and deadline tools for AI agents.

4 tools answering
D
Dropcoin Utility
by freshfos

Utility data for AI agents: IBAN, EU holidays, VAT rates, time zones, ECB FX. Pay per call.

5 tools answering
PlugRail Japanese Calendar
by plugrail

Japanese holiday and business-day calculations using official Japan Cabinet Office data.

4 tools answering
Chronoguard
by kelli930

Deterministic temporal and business-date arithmetic for AI agents via MCP.

42 installs/wk local only
Camelotwebtools MCP
by kingwarthur

Official MCP server for Camelot Web Tools: 79 deterministic business, legal, and financial tools.

36 installs/wk local only

Calcgrid — questions

Answers built from our own checks of this server.

What can Calcgrid do?
It exposes 64 tools, read directly from the server on our last check. Among them: add_china_working_days, add_global_public_holiday_working_days, add_global_reference_working_days, add_global_working_days, add_uk_working_days, calculate_ab_test_significance and 58 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Calcgrid mostly used for?
Its tools cluster around calculate, convert and global. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Calcgrid working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 342 ms. The bar chart above shows every period we have measured.
How do I connect Calcgrid?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Calcgrid need an API key?
No. Calcgrid completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 64 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Calcgrid?
It answers our handshake in 342 ms on average, which is faster than 41% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.