streamable-httpMITupdated 2mo ago
🧮 Give your AI agent 500+ deterministic tools Stop hallucinating math. Start getting correct answers.
What can you do with TinyFn?
The Problem
LLMs are great at reasoning. They're terrible at math.
Ask any AI assistant to compute 17% of 4,847 and you'll get a confident, wrong answer. Ask it to validate an email with regex, generate a SHA-256 hash, or convert timezones — same story. LLMs hallucinate on deterministic tasks.
TinyFn is a Model Context Protocol (MCP) server that gives your AI assistant 500+ tools that always return the correct answer. Math, conversions, validations, hashing, date arithmetic — the boring stuff, done right.
🖥️ Works With Your Tools
TinyFn runs as a remote MCP server — no npx, no Docker, no local install. Just add the URL to your config.
| Platform | Tool Limit | Recommended Setup | Config Location |
|---|---|---|---|
| Claude Code | 500+ (Tool Search) | /mcp/all/ — use everything |
~/.claude/settings.json |
| Claude Desktop | ~100 tools | 2–3 category servers | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Cursor | ~40 tools | 1–2 focused servers | Cursor MCP settings |
| Windsurf | ~40 tools | 1–2 focused servers | Windsurf MCP settings |
| Continue.dev | Varies | Category servers | .continue/config.json |
| Any MCP Client | Varies | Match to your tool limit | Client-specific |
💡 Why category servers? Most AI clients limit the number of tools. TinyFn splits 500+ tools across 12 focused servers so you can pick exactly what you need.
✅ Example Queries That Just Work
Once connected, just ask your AI assistant in plain language:
Math & Numbers
- ✅ "Is 7919 a prime number?"
- ✅ "What's 17% of 4,847?"
- ✅ "Calculate the factorial of 12"
Conversions
- ✅ "Convert 72°F to Celsius"
- ✅ "How many miles is 100 kilometers?"
- ✅ "Convert #3B82F6 to RGB values"
Validation
- ✅ "Is user@example.com a valid email address?"
- ✅ "Validate this credit card number: 4111111111111111"
- ✅ "Is 550e8400-e29b-41d4-a716-446655440000 a valid UUID?"
Encoding & Hashing
- ✅ "Base64 encode 'Hello, World!'"
- ✅ "Generate a SHA-256 hash of 'my-secret-string'"
- ✅ "URL encode 'hello world & goodbye'"
Date & Time
- ✅ "How many days between January 15 and March 22?"
- ✅ "What's the current Unix timestamp?"
- ✅ "Is 2024 a leap year?"
Generators
- ✅ "Generate a UUID"
- ✅ "Create a secure 20-character password"
- ✅ "Roll 3 six-sided dice"
⚡ Quick Start
1. Get your free API key at tinyfn.io (takes 10 seconds)
2. Add TinyFn to your MCP client:
Claude Code
Claude Code supports Tool Search, so you can use the full server with all 500+ tools:
{
"mcpServers": {
"tinyfn": {
"url": "https://api.tinyfn.io/mcp/all/",
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
}
}
}
Add this to ~/.claude/settings.json or use claude mcp add.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"tinyfn-math": {
"url": "https://api.tinyfn.io/mcp/math/",
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
},
"tinyfn-validate": {
"url": "https://api.tinyfn.io/mcp/validate/",
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
}
}
}
Tip: Claude Desktop supports ~100 tools. Add 2–3 category servers based on your workflow.
Cursor & Windsurf
These platforms have a ~40 tool limit. Pick 1–2 focused servers:
{
"mcpServers": {
"tinyfn-validate": {
"url": "https://api.tinyfn.io/mcp/validate/",
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
}
}
}
Recommended for Cursor/Windsurf: validate (15 tools), hash (18 tools), encode (20 tools), convert (42 tools).
Continue.dev
{
"experimental": {
"mcpServers": [
{
"name": "tinyfn-math",
"url": "https://api.tinyfn.io/mcp/math/",
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
}
]
}
}
3. Start asking questions. Your AI now has deterministic tools for math, conversions, validation, and more.
📡 Available MCP Servers
All servers use base URL https://api.tinyfn.io. Pick the categories you need:
| Server | Endpoint | Tools | What It Does |
|---|---|---|---|
| All | /mcp/all/ |
500+ | Everything — best for Claude Code |
| Math | /mcp/math/ |
52 | Arithmetic, trig, primes, factorials, comparisons |
| Convert | /mcp/convert/ |
42 | Temperature, length, weight, volume, speed, data sizes |
| String | /mcp/string/ |
33 | Case conversion, slugify, trim, word count, extraction |
| Datetime | /mcp/datetime/ |
24 | Date parsing, formatting, diffs, timezones, leap years |
| Encode | /mcp/encode/ |
20 | Base64, URL, HTML, hex, ROT13, morse, JWT decode |
| Hash | /mcp/hash/ |
18 | MD5, SHA-256, SHA-512, HMAC, bcrypt, CRC32 |
| Color | /mcp/color/ |
30 | HEX/RGB/HSL conversion, gradients, contrast, palettes |
| Stats | /mcp/stats/ |
16 | Mean, median, mode, std dev, percentiles, correlation |
| Validate | /mcp/validate/ |
15 | Email, URL, phone, credit card, UUID, IP, JSON, dates |
| Finance | /mcp/finance/ |
15 | Interest, loans, mortgage, ROI, margin, tip calculator |
| Generate | /mcp/generate/ |
15 | UUIDs, passwords, random numbers, lorem ipsum, dice |
⚠️ Important: All URLs must end with a trailing
/or requests will return 404 errors.
🛠️ Tool Categories
| Tool | Description | Example |
|---|---|---|
add, subtract, multiply, divide |
Basic arithmetic | add(17, 25) → 42 |
percentage |
Percentage calculation | percentage(17, 4847) → 823.99 |
is_prime |
Primality testing | is_prime(7919) → true |
factorial |
Factorial calculation | factorial(12) → 479001600 |
fibonacci |
Nth Fibonacci number | fibonacci(10) → 55 |
gcd, lcm |
GCD and LCM | gcd(48, 18) → 6 |
power, square_root |
Exponentiation | square_root(144) → 12 |
sin, cos, tan |
Trigonometric functions | sin(1.5708) → 1.0 |
log, log10, log2 |
Logarithms | log10(1000) → 3 |
floor, ceil, round_number |
Rounding | ceil(4.2) → 5 |
absolute_value, sign |
Number properties | sign(-42) → -1 |
clamp, distance, hypotenuse |
Range & geometry | hypotenuse(3, 4) → 5 |
| Tool | Description | Example |
|---|---|---|
reverse_string |
Reverse text | reverse_string("hello") → "olleh" |
uppercase, lowercase |
Case conversion | uppercase("hello") → "HELLO" |
camel_case, snake_case, kebab_case |
Naming conventions | snake_case("helloWorld") → "hello_world" |
slug |
URL-safe slugs | slug("Hello World!") → "hello-world" |
trim, pad |
Whitespace handling | trim(" hi ") → "hi" |
word_count, string_length |
Text metrics | word_count("hello world") → 2 |
contains, starts_with, ends_with |
String matching | contains("hello", "ell") → true |
split, join |
Array operations | split("a,b,c", ",") → ["a","b","c"] |
extract_emails, extract_urls |
Content extraction | Extract emails from text blocks |
is_palindrome |
Palindrome check | is_palindrome("racecar") → true |
count_char, count_substring |
Character counting | count_char("hello", "l") → 2 |
| Tool | Description | Example |
|---|---|---|
validate_email |
Email format validation | validate_email("user@example.com") → true |
validate_url |
URL format validation | validate_url("https://tinyfn.io") → true |
validate_phone |
Phone number validation | validate_phone("+1-555-123-4567") → true |
validate_credit_card |
Luhn algorithm check | validate_credit_card("4111111111111111") → true |
validate_uuid |
UUID format validation | validate_uuid("550e8400-e29b-41d4-a716-446655440000") → true |
validate_ip |
IPv4/IPv6 validation | validate_ip("192.168.1.1") → true |
validate_json |
JSON syntax validation | validate_json('{"key": "value"}') → true |
validate_date |
Date format validation | validate_date("2024-02-29") → true |
validate_hex |
Hex string validation | validate_hex("1a2b3c") → true |
validate_base64 |
Base64 validation | validate_base64("SGVsbG8=") → true |
| Tool | Description | Example |
|---|---|---|
celsius_to_fahrenheit |
Temperature | celsius_to_fahrenheit(100) → 212 |
kilometers_to_miles |
Distance | kilometers_to_miles(100) → 62.14 |
kilograms_to_pounds |
Weight | kilograms_to_pounds(70) → 154.32 |
liters_to_gallons_us |
Volume | liters_to_gallons_us(3.785) → 1.0 |
hex_to_rgb |
Color | hex_to_rgb("#3B82F6") → {r:59, g:130, b:246} |
decimal_to_binary |
Base conversion | decimal_to_binary(42) → "101010" |
bytes_to_human |
File sizes | bytes_to_human(1073741824) → "1 GB" |
mph_to_kph |
Speed | mph_to_kph(60) → 96.56 |
inches_to_centimeters |
Length | inches_to_centimeters(12) → 30.48 |
hours_to_minutes |
Time | hours_to_minutes(2.5) → 150 |
| Tool | Description | Example |
|---|---|---|
hash_md5 |
MD5 hash | hash_md5("hello") → "5d41402abc4b..." |
hash_sha256 |
SHA-256 hash | hash_sha256("hello") → "2cf24dba5fb0..." |
hash_sha512 |
SHA-512 hash | Full 128-char hex digest |
hmac_sha256 |
HMAC signature | Keyed hash authentication |
hash_sha3_256, hash_sha3_512 |
SHA-3 family | Modern hash algorithms |
hash_blake2b, hash_blake2s |
BLAKE2 | High-performance hashing |
hash_crc32 |
CRC32 checksum | Error detection codes |
compare_hashes |
Timing-safe compare | Constant-time hash comparison |
identify_hash |
Hash identification | Detect hash algorithm from string |
| Tool | Description | Example |
|---|---|---|
base64_encode, base64_decode |
Base64 | base64_encode("Hello") → "SGVsbG8=" |
url_encode, url_decode |
URL encoding | url_encode("hello world") → "hello%20world" |
html_encode, html_decode |
HTML entities | html_encode("<div>") → "<div>" |
hex_encode, hex_decode |
Hex encoding | hex_encode("hi") → "6869" |
jwt_decode |
JWT parsing | Decode JWT payload (no verification) |
rot13 |
ROT13 cipher | rot13("hello") → "uryyb" |
morse_encode, morse_decode |
Morse code | morse_encode("SOS") → "... --- ..." |
json_minify, json_prettify |
JSON formatting | Minify or pretty-print JSON |
| Tool | Description | Example |
|---|---|---|
get_now |
Current timestamp | ISO 8601 timestamp |
format_date, parse_date |
Date formatting | Parse and format dates |
date_diff |
Days between dates | date_diff("2024-01-15", "2024-03-22") → 67 days |
add_time, subtract_time |
Date arithmetic | Add/subtract days, hours, minutes |
convert_timezone |
Timezone conversion | Convert between any IANA timezones |
is_leap_year |
Leap year check | is_leap_year(2024) → true |
calculate_age |
Age from birthdate | Calculate exact age |
relative_time |
Relative formatting | "2 hours ago", "in 3 days" |
days_in_month |
Month length | days_in_month(2, 2024) → 29 |
is_weekend |
Weekend check | Check if a date falls on Sat/Sun |
| Tool | Description | Example |
|---|---|---|
generate_uuid |
UUID v4 | "550e8400-e29b-41d4-a716-446655440000" |
generate_uuid_v7 |
UUID v7 (time-sortable) | Timestamp-based UUIDs |
generate_password |
Secure passwords | Configurable length and character sets |
random_number |
Random integers | random_number(1, 100) → 42 |
random_string |
Random strings | Configurable length and charset |
generate_token |
API tokens | Cryptographically secure tokens |
generate_lorem |
Lorem ipsum | Generate placeholder text |
generate_color |
Random colors | Random hex color codes |
roll_dice |
Dice rolling | roll_dice(3, 6) → [4, 2, 6] |
flip_coin |
Coin flip | "heads" or "tails" |
shuffle_list |
Shuffle arrays | Randomize array order |
| Tool | Description | Example |
|---|---|---|
hex_to_hsl, hsl_to_hex |
Color space conversion | Convert between formats |
hex_to_rgb, rgb_to_hex |
RGB conversion | hex_to_rgb("#FF5733") → {r:255,g:87,b:51} |
lighten_color, darken_color |
Brightness adjustment | Lighten/darken by percentage |
complement_color |
Complementary colors | Get the opposite color |
triadic_colors, analogous_colors |
Color harmonies | Generate color schemes |
contrast_ratio |
WCAG contrast | Check accessibility compliance |
generate_gradient |
Gradient generation | Generate color stops between two colors |
generate_shades, generate_tints |
Shade/tint ramps | Create monochromatic palettes |
invert_color |
Color inversion | Invert any hex color |
blend_colors |
Color blending | Mix two colors together |
| Tool | Description | Example |
|---|---|---|
calculate_mean |
Arithmetic mean | calculate_mean([10, 20, 30]) → 20 |
calculate_median |
Median value | calculate_median([1, 3, 5, 7]) → 4 |
calculate_mode |
Most frequent value | calculate_mode([1, 2, 2, 3]) → 2 |
calculate_variance |
Population variance | Statistical variance |
calculate_stddev |
Standard deviation | Statistical spread |
calculate_percentile |
Percentile calculation | calculate_percentile([1..100], 95) → 95 |
calculate_quartiles |
Q1, Q2, Q3 | Quartile boundaries |
calculate_correlation |
Pearson correlation | Correlation coefficient between datasets |
calculate_zscore |
Z-score | Standard score calculation |
describe_data |
Summary statistics | Full statistical description of a dataset |
| Tool | Description | Example |
|---|---|---|
compound_interest |
Compound interest | Calculate future value with compounding |
simple_interest |
Simple interest | Basic interest calculation |
loan_payment |
Loan payments | Monthly payment calculator |
mortgage_calculator |
Mortgage | Monthly mortgage with amortization |
calculate_tip |
Tip calculator | calculate_tip(85.50, 20) → $17.10 |
percentage_change |
Growth/decline | percentage_change(100, 125) → 25% |
calculate_markup, calculate_margin |
Pricing | Markup and margin calculations |
calculate_discount |
Discounts | Price after discount |
return_on_investment |
ROI | Investment return percentage |
rule_of_72 |
Doubling time | Years to double an investment |
break_even |
Break-even analysis | Units needed to break even |
| Tool | Description | Example |
|---|---|---|
calculate_bmi |
Body Mass Index | calculate_bmi(70, 1.75) → 22.86 |
calculate_bmr |
Basal Metabolic Rate | Daily calorie baseline |
ideal_weight |
Ideal weight range | Based on height and frame |
heart_rate_zones |
Training zones | Fat burn, cardio, peak zones |
estimate_body_fat |
Body fat estimate | Navy method estimation |
daily_water_intake |
Water recommendation | Based on weight and activity |
calories_burned |
Exercise calories | Calories for activity type and duration |
calculate_macros |
Macro split | Protein/carb/fat breakdown |
sleep_cycles |
Sleep optimization | Optimal wake times based on cycles |
| Tool | Description | Example |
|---|---|---|
magic_8_ball |
Magic 8-Ball | Random mystical answers |
dad_joke |
Dad jokes | Guaranteed groan |
fortune_cookie |
Fortune cookies | Random fortune messages |
random_compliment |
Compliments | Brighten someone's day |
random_excuse |
Excuses | Creative excuse generator |
would_you_rather |
Would You Rather | Random dilemmas |
friendly_roast |
Friendly roasts | Light-hearted roasts |
random_trivia |
Trivia | Random trivia facts |
yes_no |
Yes/No oracle | Random yes or no |
🎯 Perfect For
- AI-Assisted Development — Cursor and Windsurf users who need reliable math in their coding workflow
- Data Analysis — Statistics, percentiles, and financial calculations without second-guessing
- Content Creation — Word counts, slugification, and encoding when building with AI
- DevOps & Security — Hash generation, UUID creation, and input validation
- Education — Teach with tools that demonstrate correct mathematical results
- API Development — Validate inputs, generate test data, and compute values during development
💰 Pricing
🔧 Troubleshooting
All MCP server URLs must end with a trailing slash /.
✅ https://api.tinyfn.io/mcp/math/
❌ https://api.tinyfn.io/mcp/math
- Verify your API key starts with
tf_live_ - Check that you're using the
X-API-Keyheader (notAuthorization) - Make sure your key is active at tinyfn.io/dashboard
{
"headers": {
"X-API-Key": "tf_live_YOUR_KEY_HERE"
}
}
Your MCP client has a tool limit. Instead of /mcp/all/, use category-specific servers:
| If you need... | Use server | Tools |
|---|---|---|
| Validation only | /mcp/validate/ |
15 |
| Hashing only | /mcp/hash/ |
18 |
| Encoding only | /mcp/encode/ |
20 |
| Math only | /mcp/math/ |
52 |
See the full server list for all options.
You've hit your plan's rate limit. Options:
- Free tier: 10 requests/minute, 100/month — upgrade at tinyfn.io
- Starter: 100 requests/minute, 10,000/month
- Check your current usage at tinyfn.io/dashboard
📚 Documentation & Resources
- MCP Overview — Setup guide for all supported platforms
- API Reference — REST API docs for direct HTTP usage
- MCP Categories — Detailed breakdown of each server
- Authentication — API key setup and management
- Rate Limits — Quotas and limits per plan
- LLM Context —
llms.txtfor AI-readable documentation
🤝 Support
- 📧 Email: support@tinyfn.io
- 🐛 Issues: GitHub Issues
- 💬 Sales: sales@tinyfn.io
📄 License
MIT License — see LICENSE for details.
Install
Add TinyFn to your client. Pick the one you use.
claude mcp add --transport http tinyfn https://api.tinyfn.io/mcp/all/codex mcp add tinyfn --url https://api.tinyfn.io/mcp/all/{
"mcpServers": {
"tinyfn": {
"url": "https://api.tinyfn.io/mcp/all/"
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
{
"servers": {
"tinyfn": {
"type": "http",
"url": "https://api.tinyfn.io/mcp/all/"
}
}
}Add to `.vscode/mcp.json` in your workspace.
{
"mcpServers": {
"tinyfn": {
"url": "https://api.tinyfn.io/mcp/all/"
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"tinyfn": {
"serverUrl": "https://api.tinyfn.io/mcp/all/"
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
Score
39 / 100
Incomplete
- Documentation25/25
- Maintenance22/25
- Trust16/20
- Capability0/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 73 days ago
- Has a release history
- Repository is not archived
- Licensed MIT
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 0 tool(s) documented
- Provides prompt templates
- Provides resources
- 6 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.0.2Latest | Jun 19, 2026 |
| 1.0.1 | Jun 19, 2026 |
| 1.0.0 | Jun 19, 2026 |