Everyday calculator MCP server — curated core of 15 well-scoped tools (income tax FR/US/UK/CA, mortgage, compound interest, VAT, BMI, TDEE…) with on-demand access to the full 446-calculator macalc catalog. Free, no API key.
Strong definition quality across 16 well-scoped calculator tools. All tools have descriptive names starting with 'calculate_' or 'list_'/'get_', matching clear action verbs. Descriptions are comprehensive (100-400+ chars), explicitly stating purpose, usage context, inputs, and outputs. All input schemas include proper JSON Schema with types, minimums/maximums, enums where appropriate, and descriptions for every parameter. Tool annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) are correctly applied to all core tools, signaling deterministic, read-only behavior. Output documentation is provided textually in descriptions (e.g., 'Returns total tax, effective and marginal rates, and the per-bracket breakdown'). However, formal output schemas are not exposed in tool definitions, this limits downstream composition and forces LLMs to infer output structure. Parameter validation constraints (e.g., income >= 0, parts 0.5-20) are well-specified but some tools lack explicit enum constraints where appropriate (e.g., calculate_percentage has no 'mode' enum, though three parameters suggest three modes). Error handling is not visible in the source code, no guidance on what happens with invalid inputs or edge cases. The call_any_calculator tool is powerful but lacks safeguards around accepting arbitrary tool names and arguments, potentially amplifying failures from the remote catalog.
Calculate Body Mass Index (BMI) and classify it according to WHO standards. Use when the user provides height and weight. Inputs: `weight_kg` (in kilograms) and `height_cm` (in centimeters). Returns BMI value, classification (underweight/normal/overweight/obese), and healthy weight range. Read-only, deterministic.
Calculate Canadian FEDERAL income tax using CRA brackets and the basic personal amount. Use for a federal-only estimate; provincial/territorial tax and CPP/EI are NOT included, so the real total tax is higher. Input: `income_cad` (annual income in CAD). Returns basic personal amount, taxable income, federal tax, effective and marginal rates. Read-only, deterministic, estimate only.
Compute compound growth of a lump sum with A = P·(1+r/n)^(n·t). Use for savings, investment or retirement projections without periodic contributions. Inputs: `principal` (initial amount), `annual_rate` (annual rate in percent), `years` (duration), optional `compounds_per_year` (compounding frequency, default annual). Returns final amount, total interest earned and a yearly breakdown. Read-only, deterministic. For loans/repayments use calculate_loan_payment or calculate_mortgage instead.
Calculate the final price after applying a discount (percent or fixed amount). Use for shopping, sales, or promotional pricing questions. Inputs: `original_price`, optional `discount_percent` or `discount_amount`, and optional `include_tax` (boolean). Returns discount amount, final price, and savings percentage. Read-only, deterministic.
Output schemas not formally defined. Tool descriptions state outputs textually (e.g., 'Returns total tax, effective and marginal rates, and per-bracket breakdown'), but no structured output schema is exposed in tool definitions. This prevents LLMs from planning downstream operations that depend on specific output fields and forces them to infer structure from descriptions.
calculate_percentage lacks mode/operation clarity. The tool accepts three optional numeric parameters (value, percent, total) with no required fields, but the description mentions 'depends on mode' without an explicit mode enum. This forces LLMs to guess which two parameters to supply, risking invalid calls.
calculate_discount schema lacks mutual-exclusivity enforcement. Parameters discount_percent and discount_amount are both optional but only one should be supplied. Schema does not enforce this; LLMs may pass both, causing ambiguity.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Calculate French personal income tax (impôt sur le revenu) for the 2026 tax year using the official progressive brackets (Article 197 CGI) and the family-quotient system. Use when the user asks how much income tax they owe in France. Inputs: `income` (annual net taxable income in EUR) and optional `parts` (number of family-quotient shares, default 1 — e.g. 2 for a married couple, 2.5 with one child). Returns total tax, effective and marginal rates, and the per-bracket breakdown. Read-only and deterministic: same inputs always give the same result; no data is stored. Not tax advice. For payroll gross-to-net conversion use calculate_french_salary instead.
Convert a French gross salary to net salary for 2026, applying the social-contribution rates of the selected employment status. Use when the user knows their gross pay and wants their take-home pay in France. Inputs: `gross_monthly` (gross monthly salary in EUR) and optional `status` ('cadre', 'non-cadre' or civil servant — see the enum). Returns monthly and annual net, total social contributions, and employer cost. Read-only, deterministic estimate based on standard rates; individual company agreements may differ. For income tax on that salary, use calculate_french_income_tax.
Calculate the fixed monthly payment of a generic amortizing loan when the monthly payment is unknown but the total interest or APR is known. Inputs: `principal`, `annual_rate`, `years`. Returns fixed monthly payment, total interest and total cost. Read-only and deterministic.
Calculate the fixed monthly payment, total interest and total cost of a mortgage or amortizing loan, with an optional month-by-month amortization schedule. Use for home-loan or any fixed-rate amortizing loan questions in any currency. Inputs: `principal` (amount borrowed), `annual_rate` (nominal annual interest rate in percent, e.g. 3.5), `years` (term in years), optional `with_schedule` (boolean — include the full amortization table). Read-only and deterministic. Does not include insurance, taxes or fees.
Calculate percentages in multiple ways: what is X% of Y, what percent is X of Y, or find the value given a percentage and total. Use for general percentage problems in finance, statistics or everyday math. Inputs depend on mode: `value`, `percent`, `total` (use the two you know). Returns the third value and the result in decimal form. Read-only, deterministic.
Calculate Total Daily Energy Expenditure (TDEE) using the Mifflin-St Jeor formula with activity multiplier. Use for nutrition and fitness planning. Inputs: `weight_kg`, `height_cm`, `age_years`, `sex` ('male' or 'female'), and optional `activity_level` (sedentary/light/moderate/active/very_active, default moderate). Returns Basal Metabolic Rate (BMR) and TDEE in kcal/day. Read-only, deterministic estimate.
Calculate UK income tax for the 2025/26 tax year using HMRC bands, including the personal-allowance taper above £100,000. Use for England/Wales/NI income tax questions (National Insurance is not included; Scottish bands are not modelled). Input: `income` (annual gross income in GBP). Returns personal allowance, taxable income, income tax, effective and marginal rates. Read-only, deterministic, estimate only.
Calculate US federal income tax for tax year 2026 using the IRS progressive brackets and the standard deduction for the chosen filing status. Use for a quick federal-only estimate; it does NOT include state income tax or FICA payroll taxes. Inputs: `income` (annual gross income in USD) and optional `filing_status`. Returns taxable income after standard deduction, federal tax, effective and marginal rates. Read-only and deterministic. Estimates only — not tax advice.
Calculate Value-Added Tax (VAT / TVA) on a purchase. Use when the user needs to know the net/gross price, tax amount, or apply a VAT rate. Inputs: `amount` (price), `rate` (VAT rate in %), optional `direction` ('gross_to_net' or 'net_to_gross', default 'net_to_gross'). Returns net amount, VAT amount, gross amount. Read-only, deterministic.
Invoke any calculator from the full hosted macalc catalog (446 tools) by name. Use this to access calculators beyond the 12 core tools when you know the exact tool name (from get_bundle_tools or list_bundles). Inputs: `tool_name` (string, required) and `arguments` (object with the tool's input parameters). Returns the same JSON result as calling the tool directly. Read-only and fully deterministic — whatever the underlying calculator computes. Requires network access to the hosted endpoint.
Get the list of all calculators in a specific bundle (category). Input: `bundle_id` (from list_bundles, e.g. 'income_tax' or 'finance'). Returns the names, descriptions and input schemas of all tools in that bundle. Use this to find which calculators you can invoke via call_any_calculator. Read-only.
List all calculator bundles (categories) in the hosted macalc catalog. Returns bundle IDs and human-readable names (e.g. 'income_tax', 'finance', 'health', 'construction'). Use this to explore what calculators are available on-demand via get_bundle_tools and call_any_calculator. Read-only.
call_any_calculator is dangerously generic. It accepts arbitrary tool_name and arguments without validation, potentially amplifying failures from the remote 446-tool catalog. No guidance on error handling if the remote tool fails or if tool_name is mistyped. No pagination or result-size limits mentioned.
No error-handling guidance in tool definitions. Tool descriptions note 'estimate only, not tax advice' but do not explain what happens if inputs are invalid (negative income, parts > 20), how the tool responds to edge cases, or what recovery actions an agent should take.
list_bundles and get_bundle_tools descriptions lack context. Descriptions are brief (75 chars) and do not explain why an agent would call them (discovery pattern) or when in the conversation flow they fit. 'Use this to explore' and 'Use this to find' are vague compared to the crisp, instructional descriptions of calculate_* tools.