# MCP server

- Endpoint: `https://tttkmbb.com/mcp`
- Transport: Streamable HTTP (MCP spec 2025-03-26 and 2025-06-18), JSON-RPC 2.0 over POST. Stateless: no session id required; `GET /mcp` with `Accept: text/event-stream` returns 405 because the server never opens server-initiated streams.
- Authentication: none. Origin: any (CORS `*`).
- Server card (MCP registry `server.json` shape): https://tttkmbb.com/.well-known/mcp-server-card.json

## Connect

Claude Desktop / Claude Code (`mcp-remote`) or any MCP client supporting remote servers:

```json
{ "mcpServers": { "calcgrid": { "type": "streamable-http", "url": "https://tttkmbb.com/mcp" } } }
```

Raw JSON-RPC example:

```
POST https://tttkmbb.com/mcp
Content-Type: application/json
Accept: application/json, text/event-stream

{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"calculate_bmi","arguments":{"weight_kg":70,"height_cm":175}}}
```

## Tools

| Tool | Purpose |
| --- | --- |
| `search_calculators` | Search the 184 calculators of Calcgrid by keyword (name, tags, description, category) and return ranked matches with their calculator_id, required inputs and documentation URLs. |
| `list_calculators` | List all calculators, optionally filtered by category id (finance, health, fitness, math, geometry, statistics, conversion, physics, chemistry, everyday, food, construction). Returns calculator_id, name, description, use_when and required inputs for each. |
| `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. |
| `get_calculator_schema` | Return the full definition of one calculator: inputs (name, type, unit, range, default, enum values, example), outputs (name, unit, meaning), formula, method notes, sources, freshness, examples with expected results, FAQ and related calculators. |
| `run_calculator` | Run any of the 184 calculators by calculator_id with an inputs object and return the unified result envelope (values with units, formula, sources, freshness, timestamp, next_actions). |
| `convert_units` | Convert a numeric value between two units of the same physical quantity (length, mass, temperature, area, volume, speed, time, data storage, energy, pressure, power, angle, fuel economy, force, frequency, density, torque). Unit symbols and common names/aliases are accepted (km, miles, °F, 'square feet', kWh, psi, mpg). |
| `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. |
| `calculate_compound_interest` | 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. |
| `calculate_loan_payment` | 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. |
| `calculate_mortgage_payment` | 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. |
| `calculate_tip` | 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. |
| `calculate_bmi` | 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. |
| `calculate_bmr` | 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. |
| `calculate_tdee` | Estimates total daily energy expenditure from Mifflin-St Jeor BMR and an activity level, and derives calorie targets for maintaining, losing or gaining weight. |
| `calculate_running_pace` | 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. |
| `calculate_percentage` | 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. |
| `calculate_percentage_change` | 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. |
| `solve_quadratic_equation` | 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. |
| `calculate_circle_properties` | 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. |
| `calculate_descriptive_statistics` | 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. |
| `convert_temperature` | 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. |
| `calculate_kinetic_energy` | Computes the translational kinetic energy of a moving mass from KE = ½·m·v², reported in joules, kilojoules, kilowatt-hours and kilocalories. |
| `solve_ohms_law` | 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). |
| `calculate_molar_mass` | 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. |
| `calculate_age` | 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. |
| `calculate_date_difference` | 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). |

All tools are read-only (`readOnlyHint: true`), idempotent and deterministic. Calculation results are returned both as text (JSON) and as `structuredContent` using the same envelope as the REST API. Validation failures come back as `isError: true` tool results with the error code and hint so the model can correct its call.

## Resources

`resources/list` exposes llms.txt, the documentation index and every calculator's Markdown document (`https://tttkmbb.com/{category}/{id}.md`) as `text/markdown` resources; `resources/read` returns the content.

## Recommended flow

1. `search_calculators` (or `list_calculators` with a category) to find the calculator id.
2. `get_calculator_schema` to read inputs, units, ranges and an example.
3. `run_calculator` (or the dedicated typed tool) with the inputs.
4. Read `next_actions` in the result for follow-up tools.
