Euclid
About
AI models do not calculate. They predict the most probable next token. When the token is a number, it is often close, and sometimes wrong. The error compounds downstream.
Details
- Transport
- SSE
Explore
- 10 deterministic computation tools (calculate, convert, statistics, datetime, encode, finance, color, regex, validate, geo)
- Near-zero latency: evaluates expressions in single-digit milliseconds
- No sandbox or interpreter overhead required
- Clear error messages with hints and examples on failure
- Expression strings are minimal, reducing token cost versus code generation
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
EuclidCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Connect any MCP client that supports HTTP transport to https://mcp.euclidtools.com. Authentication is handled automatically via OAuth 2.1, and your client will prompt you to sign in on first connection. Pre-built instruction files (CLAUDE.md, AGENTS.md, .cursorrules, .windsurfrules) can be copied into your project to instruct the AI to use Euclid’s tools instead of guessing.
calculate
Deterministic calculator for mathematical expressions. Arithmetic, percentages, exponents, roots, trigonometry, logarithms, factorials, and any expression with a numerical answer.
convert
Converts between units of measurement. Supports length, weight, volume, temperature, area, speed, time, data (bytes/bits), and 100+ other units.
statistics
Descriptive and inferential statistics. Mean, median, mode, std dev, variance, percentile, z-test, t-test, chi-squared, confidence intervals, correlation, and normal distribution functions.
datetime
Calendar and date arithmetic. Date differences, add/subtract time, age, business days, day of week, quarter, leap year, days in month.
encode
Encoding, decoding, hashing, and JWT inspection. Base64, hex, URL, HTML encoding/decoding. SHA-256/512, SHA-1, MD5 hashing. HMAC signatures. JWT decode.
finance
Financial calculations with arbitrary-precision decimal arithmetic. Loan payments, amortization, present/future value, NPV, IRR, CAGR, margin/markup, compound interest.
geo
Geospatial calculations. Distance (Haversine/Vincenty), bearing, midpoint, destination point, bounding boxes, polygon area, point-in-polygon, coordinate conversions (DMS, UTM).
color
Color space conversions, WCAG accessibility checks, color manipulation, and palette generation. Supports hex, RGB, HSL, HSV, CMYK, Lab, OKLab, OKLCH.
regex
Safe regex execution via RE2. Test, match, matchAll, replace, split, and escape operations. Linear-time guarantees, no ReDoS.
validate
Format validation for structured identifiers. Email (RFC 5322), URL (WHATWG), UUID (RFC 9562), credit card (Luhn), IPv4, IPv6, IBAN (mod-97).
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"euclid": {
"euclid": {
"url": "https://mcp.euclidtools.com"
}
}
}
}
McpServers
{
"euclid": {
"url": "https://mcp.euclidtools.com"
}
}
Quick Start
Claude Code
``bash
claude mcp add euclid --transport http https://mcp.euclidtools.com
`
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
`json
{
"mcpServers": {
"euclid": {
"url": "https://mcp.euclidtools.com"
}
}
}
`
Cursor
Add to .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally):
`json
{
"mcpServers": {
"euclid": {
"url": "https://mcp.euclidtools.com"
}
}
}
`
Windsurf
Add to ~/.windsurf/mcp.json:
`json
{
"mcpServers": {
"euclid": {
"url": "https://mcp.euclidtools.com"
}
}
}
`
VS Code (Copilot)
Add to .vscode/mcp.json in your project:
`json
{
"servers": {
"euclid": {
"type": "http",
"url": "https://mcp.euclidtools.com"
}
}
}
`
Other MCP Clients
Any MCP client that supports HTTP transport will work. Point it at:
`
https://mcp.euclidtools.com
`
Authentication is handled automatically via OAuth 2.1. Your client will prompt you to sign in on first connection.
---
Verify It Works
After connecting, ask your AI agent:
> "What is 247 times 389?"
If Euclid is working, the agent will call the calculate tool instead of predicting the answer. You'll see the tool call in the response. The correct answer is 96,083, and unlike mental math, it's guaranteed.
---
The Problem
LLMs are non-deterministic. Every token they produce is a _prediction_, including math:
- 247 × 389 → the model _predicts_ 96,083 (sometimes it gets 96,183 or 95,983)
- sin(47.3°) × cos(12.1°) → the model _predicts_ something close-ish
- 15% of $8,472.50 → the model _predicts_ a dollar amount
Sometimes the predictions are correct. Sometimes they're subtly wrong. The problem is you can never be sure which is which.
Euclid makes this a non-issue. When an AI agent has Euclid available, it sends expressions to a real computation engine and returns the computed result. Deterministic. Correct. Every time.
Think of it like what grep did for AI code search. A simple, proven tool that gives the model a capability it fundamentally lacks.
---
Why Not Just Use Code Execution?
Many LLM environments have code execution tools (Python sandboxes, etc.) that can do math. The difference:
| | Code Execution | Euclid |
| ------------------- | ---------------------------------- | ------------------------------------------ |
| Overhead | Spins up a sandbox/interpreter | Near-zero: evaluates an expression string |
| Latency | Hundreds of ms to seconds | Single-digit ms |
| Availability | Varies by client | Any MCP client |
| Model behavior | Model writes _code_ that does math | Model writes a _math expression_ |
| Failure modes | Syntax errors, runtime exceptions | Clear error with hint and examples |
| Token cost | Code generation is verbose | Expression strings are minimal |
---
Enforce Deterministic Computation
Installing Euclid gives your AI access to a calculator. But access alone isn't enough: the AI needs to be instructed to reach for it. Without an explicit directive, models will still predict math from training data by default.
Add the following to your project's AI instruction file. Pre-built versions are in the rules/ directory:
| File | For |
|------|-----|
| rules/CLAUDE.md | Claude Code |
| rules/AGENTS.md | OpenAI Codex |
| rules/.cursorrules | Cursor |
| rules/.windsurfrules | Windsurf |
The content is identical. Copy the one that matches your IDE into your project root, or append it to your existing instruction file.
<details>
<summary>Preview the instruction block</summary>
`markdown
Deterministic Computation (Euclid)
NEVER predict, guess, or mentally compute numerical results. LLMs produce answers by
pattern-matching against training data, sometimes right, sometimes subtly wrong, and
there is no way to tell which. Always use Euclid's MCP tools instead.
| Tool | When to Use |
| ------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| calculate | Arithmetic, percentages, margins, exponents, trig, logarithms, factorials. Any expression with a numerical answer |
| convert | Unit conversions: m² to acres, km to miles, L/hr to gal/hr, °C to °F, bytes to kB, etc. |
| statistics | Mean, median, mode, std deviation, variance, percentile, min, max, sum. Plus t-test, z-test, chi-squared, confidence intervals, correlation |
| datetime | Date differences, add/subtract time, business days, age, day of week, quarter, leap year. Any calendar arithmetic |
| encode | Base64, hex, URL, HTML encoding/decoding; SHA-256/512, SHA-1, MD5 hashing; HMAC signatures; JWT decoding |
| finance | Loan payments, amortization, present/future value, NPV, IRR, CAGR, margin/markup, compound interest. Any financial formula |
| regex | Pattern testing, text extraction, match-all, replace, split. Execute patterns, never predict whether they match |
| color | Color conversion (hex, RGB, HSL, etc.), contrast ratios, WCAG accessibility, lighten/darken, palette generation |
| validate | Email, URL, UUID, credit card (Luhn check), IPv4, IPv6, IBAN. Structural validation with check digits |
| geo | Distances (Haversine/Vincenty), bearings, midpoints, destination points, polygon area, point-in-polygon, coordinate conversions |
This applies everywhere, not just code. Analytics, business metrics, growth rates,
marketing numbers, cost calculations, date arithmetic, financial projections during
conversation. If there is a number to compute, a date to calculate, or data to
encode, hash, or validate, use Euclid. No exceptions.
`
</details>
Why this matters: LLMs will confidently produce incorrect arithmetic with no indication anything is wrong. A model that returns 247 × 389 = 96,183 looks just as confident as one that returns the correct 96,083. The only way to guarantee correctness is to compute, not predict.
---
Tools
Euclid has 10 tools.
calculate
Evaluates mathematical expressions deterministically.
`
calculate("(245 389) + (12^3 / 7)") → 95,551.857...
calculate("sqrt(144)") → 12
calculate("sin(45 deg)") → 0.707...
calculate("10!") → 3,628,800
calculate("e^(i pi) + 1") → 0 (Euler's identity)
`
Supports: arithmetic, order of operations, exponents, roots, trigonometry, logarithms, factorials, constants (pi, e, phi), complex numbers, Unicode math symbols (×, ÷, √, π, ², ³).
convert
Converts between units deterministically.
`
convert(100, "fahrenheit", "celsius") → 37.778
convert(5, "km", "miles") → 3.107
convert(1024, "bytes", "kB") → 1.024
convert(60, "mph", "km/h") → 96.561
`
Supports: length, mass, volume, temperature, area, speed, time, data, and 100+ units. Natural language aliases (e.g. "celsius", "miles per hour") are normalized automatically.
statistics
Statistical calculations, both descriptive and inferential.
`
statistics("mean", [23, 45, 12, 67, 34]) → 36.2
statistics("std", [23, 45, 12, 67, 34]) → 21.159
statistics("z_test_proportion", { ... }) → { significant: true, p_value: 0.023 }
statistics("confidence_interval", { data: [...] }) → { lower: 28.1, upper: 44.3 }
`
Descriptive: mean, median, mode, std, variance, min, max, sum, percentile.
Inferential: z-test, t-test, chi-squared, confidence intervals, correlation, normal CDF/inverse.
datetime
Deterministic date and time arithmetic.
`
datetime("difference", { from: "2026-01-01", to: "2026-03-15", unit: "days" }) → 73
datetime("add", { date: "2026-01-01", amount: 90, unit: "days" }) → "2026-04-01"
datetime("age", { birthDate: "1990-06-15", asOf: "2026-03-21" }) → 35
datetime("business_days", { from: "2026-01-01", to: "2026-01-31" }) → 22
`
9 operations: difference, add, subtract, business_days, days_in_month, age, quarter, day_of_week, is_leap_year.
encode
Deterministic encoding, decoding, hashing, and JWT inspection.
`
encode("base64_encode", { input: "hello world" }) → "aGVsbG8gd29ybGQ="
encode("sha256", { input: "hello world" }) → "b94d27b9..."
encode("hmac", { input: "data", key: "secret", algorithm: "sha256" }) → "1b779..."
encode("jwt_decode", { input: "eyJhbGci..." }) → { header, payload, signature }
`
16 operations: base64, base64url, hex, url, html (encode/decode), sha256, sha512, sha1, md5, hmac, jwt_decode.
finance
Financial calculations using arbitrary-precision decimal arithmetic.
`
finance("loan_payment", { principal: 350000, rate: 6.5, periods: 360 }) → $2,212.24/mo
finance("irr", { cashflows: [-100000, 30000, 35000, 40000, 45000] }) → 17.094%
finance("compound_growth", { start_value: 2.1M, end_value: 4.8M, periods: 4 }) → 22.958% CAGR
`
16 operations: loan_payment, amortization, present_value, future_value, periods, interest_rate, npv, irr, roi, markup, margin, discount, percentage_change, compound_growth, simple_interest, compound_interest.
color
Color conversion, accessibility checks, and palette generation.
`
color("convert", { color: "#FF6B35", to_space: "hsl" })
color("contrast_ratio", { foreground: "#FFFFFF", background: "#2563EB" }) → "4.62:1"
color("wcag_level", { foreground: "#FFFFFF", background: "#2563EB" }) → "AA"
color("analogous", { color: "#2563EB", count: 5 })
`
14 operations across conversion, accessibility (WCAG), manipulation, and palette generation. 8 color spaces: hex, rgb, hsl, hsv, cmyk, lab, oklab, oklch.
regex
Safe regex execution (guaranteed linear-time, no ReDoS).
`
regex("test", { pattern: "^\\d{3}-\\d{4}$", subject: "555-1234" }) → true
regex("matchAll", { pattern: "\\d+", subject: "abc 123 def 456" }) → ["123", "456"]
regex("replace", { pattern: "\\s+", subject: "a b c", replacement: " " }) → "a b c"
`
6 operations: test, match, matchAll, replace, split, escape.
validate
Structural validation with check digits.
`
validate("email", { input: "[email protected]" }) → { valid: true }
validate("credit_card", { input: "4111111111111111" }) → { valid: true, type: "Visa" }
validate("iban", { input: "GB82WEST12345698765432" }) → { valid: true }
`
Formats: email, url, uuid, credit_card (Luhn), ipv4, ipv6, iban.
geo
Geospatial calculations.
`
geo("distance", { from: [lat, lon], to: [lat, lon] }) → km (Haversine or Vincenty)
geo("bearing", { from: [lat, lon], to: [lat, lon] }) → degrees
geo("point_in_polygon", { point: [lat, lon], polygon: [...] }) → true/false
``
Distance, area, midpoint, bearing, destination point, point-in-polygon, coordinate conversions.
---
Pricing
Every account starts with 1,000 free tool calls. No credit card required. After that, top up credits at app.euclidtools.com. ---Philosophy
Everything an LLM produces is a prediction. For creative writing and reasoning, that's fine. For math, it's a problem. The solution isn't to make models better at predicting math. It's to give them a calculator. This is part of a broader principle: wherever a model does something predictive that should be deterministic, give it a deterministic tool. Math is the most obvious case, but the same logic applies to unit conversions, date arithmetic, regex evaluation, encoding, and more. ---License
The Euclid MCP server is proprietary software. This repository contains connection instructions, skills, and documentation for integration purposes. All rights reserved. See LICENSE for details. --- <p align="center"> <i>Euclid of Alexandria formalized mathematical proof 2,300 years ago.<br> We're just giving his tools to the machines.</i> </p>Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



