{"name":"The Hustle Stack","description":"Pay-per-call REST APIs built for AI agents and autonomous systems — no signup, no API key, no subscription. Pay $0.01 USDC per request via the x402 protocol (HTTP 402) on Base; access is granted the instant payment settles, typically under 3 seconds. Covers coding utilities (base64/URL encoding, hashing, regex testing, JSON Schema validation, text diffing, cron parsing, color conversion, QR code generation, JWT decoding, semver comparison), identity and realistic fake-data generation (passwords, UUIDs, slugs, finance/checksum/geo/internet/date/string/number test data), finance calculators (FIRE planning, mortgages, rental-property ROI, and more), live data feeds (weather, currency exchange rates, cryptocurrency prices), and math/science utilities (expression evaluation, matrix operations, unit conversion, astronomy ephemeris, physical constants). See /.well-known/x402 for the full machine-readable manifest and /llms.txt for parameter-level docs.","keywords":["x402","agent payments","pay-per-call API","no-auth API","micropayments","email validation API","URL validation API","base64 encode","base64 decode","SHA-256 hash","MD5 hash","password generator API","UUID generator","slug generator","fake data generator","weather API","currency exchange rate API","crypto price API","USDC","Base network"],"categories":["coding","identity","finance","data","math","science"],"pricing":{"amount":"$0.01","currency":"USDC","network":"Base","protocol":"x402"},"authRequired":false,"resources":[{"method":"POST","path":"/isEmail","price":"$0.01","description":"Email validation API. Checks whether a string is a syntactically valid email address using the same production-grade validation library trusted across the Node.js ecosystem, catching edge cases a quick regex misses. Returns true or false. Returns 400 if value is missing.","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"The string to validate as an email address."}},"required":["value"]},"output":{"example":{"ok":true,"data":{"input":"a@b.com","result":true}}}},{"method":"POST","path":"/isURL","price":"$0.01","description":"URL validation API. Checks whether a string is a syntactically valid URL, catching malformed schemes, hosts, and encoding edge cases a naive check misses. Returns true or false. Returns 400 if value is missing.","inputSchema":{"type":"object","properties":{"value":{"type":"string","description":"The string to validate as a URL."}},"required":["value"]},"output":{"example":{"ok":true,"data":{"input":"https://example.com","result":true}}}},{"method":"POST","path":"/base64Encode","price":"$0.01","description":"Base64 encoder API. Encodes UTF-8 text to base64 instantly and correctly — skip burning agent tokens hand-computing base64, which LLMs frequently get wrong on padding and edge cases. Returns 400 if text is missing or not a string.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The plain text to encode."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"hello","result":"aGVsbG8="}}}},{"method":"POST","path":"/base64Decode","price":"$0.01","description":"Base64 decoder API. Decodes a base64 string back to UTF-8 text instantly and correctly, avoiding the padding and charset errors LLMs make when decoding base64 by hand. Returns 400 if text is missing, not a string, or not valid base64.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The base64-encoded string to decode."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"aGVsbG8=","result":"hello"}}}},{"method":"POST","path":"/hashSHA256","price":"$0.01","description":"SHA-256 hash generator API. Computes the SHA-256 hex digest of any text. Deterministic and instant — an LLM cannot reliably compute real cryptographic hashes on its own. Returns 400 if text is missing or not a string.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The text to hash."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"hello","result":"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"}}}},{"method":"POST","path":"/hashMD5","price":"$0.01","description":"MD5 hash generator API. Computes the MD5 hex digest of any text. Deterministic and instant — an LLM cannot reliably compute real cryptographic hashes on its own. Returns 400 if text is missing or not a string.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The text to hash."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"hello","result":"5d41402abc4b2a76b9719d911017c592"}}}},{"method":"POST","path":"/urlEncode","price":"$0.01","description":"URL encoder API. Percent-encodes text for safe use in a URL query string or path segment, handling reserved-character rules LLMs often get wrong by hand. Returns 400 if text is missing or not a string.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The text to URL-encode."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"hello world","result":"hello%20world"}}}},{"method":"POST","path":"/urlDecode","price":"$0.01","description":"URL decoder API. Decodes percent-encoded URL text back to plain text. Returns 400 if text is missing, not a string, or malformed percent-encoding.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The percent-encoded text to decode."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"hello%20world","result":"hello world"}}}},{"method":"POST","path":"/generatePassword","price":"$0.01","description":"Secure password generator API. Generates a cryptographically random password — true randomness an LLM cannot produce on its own. Accepts optional length (8-128), per-character-class toggles (uppercase/lowercase/numbers/symbols) with guaranteed inclusion, and a pronounceable easy-to-say mode. Returns 400 if constraints can't be satisfied.","inputSchema":{"type":"object","properties":{"length":{"type":"integer","minimum":8,"maximum":128,"default":16,"description":"Desired password length. Defaults to 16."},"includeUppercase":{"type":"boolean","default":true,"description":"Include uppercase letters. Defaults to true."},"includeLowercase":{"type":"boolean","default":true,"description":"Include lowercase letters. Defaults to true."},"includeNumbers":{"type":"boolean","default":true,"description":"Include digits. Defaults to true."},"includeSymbols":{"type":"boolean","default":true,"description":"Include symbols. Defaults to true."},"pronounceable":{"type":"boolean","default":false,"description":"Generate an easy-to-say alternating consonant/vowel password instead. Defaults to false."}},"required":[]},"output":{"example":{"ok":true,"data":{"length":16,"pronounceable":false,"result":"aB3!xQ9zR7@kLp2M"}}}},{"method":"POST","path":"/generateUUID","price":"$0.01","description":"UUID generator API. Generates a random RFC 4122 version 4 UUID using a cryptographically secure source — not the pseudo-random, collision-prone IDs an LLM would invent. No input required.","inputSchema":{"type":"object","properties":{},"required":[]},"output":{"example":{"ok":true,"data":{"result":"3f2504e0-4f89-4a1e-9c3d-6d1e2f8a9b7c"}}}},{"method":"POST","path":"/generateSlug","price":"$0.01","description":"Slug generator API. Converts any text into a clean, URL-safe slug (lowercase, hyphen-separated, unicode-aware), handling punctuation and accented-character edge cases a naive regex misses. Returns 400 if text is missing or empty.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"The text to slugify."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"input":"Hello World","result":"hello-world"}}}},{"method":"POST","path":"/generateNumberData","price":"$0.01","description":"True-random-number generator API. Generates a bounded random number via one of: int, float, binary, octal, hex, bigInt (returned as a string), romanNumeral. Accepts optional locale (default en_US). Numeric args (min, max, multipleOf) are capped to +/-1e15; fractionDigits is capped to 0-20. Returns 400 for an unknown field, an unknown arg key, an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["int","float","binary","octal","hex","bigInt","romanNumeral"],"description":"Which number-generation method to call."},"args":{"type":"object","description":"Method-specific options, e.g. {\"min\":1,\"max\":100}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"int","args":{"min":1,"max":100},"result":42}}}},{"method":"POST","path":"/generateStringData","price":"$0.01","description":"True-random-string generator API. Generates a bounded random string via one of: alpha, alphanumeric, binary, octal, hexadecimal, numeric, sample, uuid, ulid, nanoid, symbol. Accepts optional locale (default en_US). length/count-style args are capped to 0-1000. Returns 400 for an unknown field, an unknown arg key, an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["alpha","alphanumeric","binary","octal","hexadecimal","numeric","sample","uuid","ulid","nanoid","symbol"],"description":"Which string-generation method to call."},"args":{"type":"object","description":"Method-specific options, e.g. {\"length\":16}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"alpha","args":{"length":8},"result":"aBcDeFgH"}}}},{"method":"POST","path":"/generateDateData","price":"$0.01","description":"True-random-date generator API. Generates a bounded random date via one of: anytime, past, future, between, betweens, recent, soon, birthdate. between/betweens require \"from\" and \"to\" date strings. Accepts optional locale (default en_US). Date args must parse to a valid date with year 1000-9999. Returns 400 for an unknown field, an unknown arg key, an out-of-bound/unparseable value, a missing required arg, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["anytime","past","future","between","betweens","recent","soon","birthdate"],"description":"Which date-generation method to call."},"args":{"type":"object","description":"Method-specific options, e.g. {\"from\":\"2020-01-01\",\"to\":\"2020-12-31\"}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"between","args":{"from":"2020-01-01","to":"2020-12-31"},"result":"2020-06-15T12:00:00.000Z"}}}},{"method":"POST","path":"/generateGeoCoordinate","price":"$0.01","description":"True-random-geo-coordinate generator API. Generates a bounded random latitude, longitude, or a coordinate near a given origin (via one of: latitude, longitude, nearbyGPSCoordinate). Accepts optional locale (default en_US). Numeric args are capped to +/-1e15; precision is capped to 0-20; origin must be a [latitude, longitude] pair. Returns 400 for an unknown field, an unknown arg key, an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["latitude","longitude","nearbyGPSCoordinate"],"description":"Which geo-coordinate generation method to call."},"args":{"type":"object","description":"Method-specific options, e.g. {\"min\":10,\"max\":20} or {\"origin\":[10,20],\"radius\":5}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"latitude","args":{"min":10,"max":20},"result":15.4321}}}},{"method":"POST","path":"/generateInternetData","price":"$0.01","description":"Network-format generator API. Generates a valid ipv4/ipv6 address (optionally within a CIDR block or named network range) or a well-formed JWT string (via one of: ipv4, ipv6, jwt). Accepts optional locale (default en_US). jwt header/payload objects are capped to 2000 serialized characters. Returns 400 for an unknown field, an unknown arg key, an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["ipv4","ipv6","jwt"],"description":"Which network-format generation method to call."},"args":{"type":"object","description":"Method-specific options, e.g. {\"network\":\"private-a\"} or {\"header\":{},\"payload\":{}}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"ipv4","args":{},"result":"203.0.113.42"}}}},{"method":"POST","path":"/generateFinanceData","price":"$0.01","description":"Checksummed-financial-identifier generator API. Generates a structurally valid iban, bic, creditCardNumber, bitcoinAddress, litecoinAddress, ethereumAddress, or routingNumber, each computed with its real checksum algorithm (mod-97, Luhn, EIP-55, etc.). Accepts optional locale (default en_US). Returns 400 for an unknown field, an unknown arg key, an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["iban","bic","creditCardNumber","bitcoinAddress","litecoinAddress","ethereumAddress","routingNumber"],"description":"Which checksummed financial identifier to generate."},"args":{"type":"object","description":"Method-specific options, e.g. {\"issuer\":\"visa\"}."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"iban","args":{},"result":"GB29NWBK60161331926819"}}}},{"method":"POST","path":"/generateChecksumFormat","price":"$0.01","description":"Checksummed-identifier-format generator API. Generates a structurally valid isbn, upc, vin, or imei, each computed with its real check-digit algorithm. vin and imei take no arguments. Accepts optional locale (default en_US). Returns 400 for an unknown field, an unknown arg key (including any arg passed for vin/imei), an out-of-bound value, or an unsupported locale.","inputSchema":{"type":"object","properties":{"field":{"type":"string","enum":["isbn","upc","vin","imei"],"description":"Which checksummed identifier format to generate."},"args":{"type":"object","description":"Method-specific options, e.g. {\"variant\":13} for isbn. Not accepted for vin/imei."},"locale":{"type":"string","default":"en_US","description":"Locale code, e.g. \"en_US\", \"de\"."}},"required":["field"]},"output":{"example":{"ok":true,"data":{"locale":"en_US","field":"vin","args":{},"result":"1HGCM82633A004352"}}}},{"method":"POST","path":"/getCurrencyRate","price":"$0.01","description":"Live currency exchange rate API. Returns the current exchange rate between any two ISO 4217 currency codes (e.g. USD to EUR) — live external data an LLM cannot know on its own. Returns 400 if from or to is missing.","inputSchema":{"type":"object","properties":{"from":{"type":"string","description":"Source currency code, e.g. \"USD\"."},"to":{"type":"string","description":"Target currency code, e.g. \"EUR\"."}},"required":["from","to"]},"output":{"example":{"ok":true,"data":{"input":{"from":"USD","to":"EUR"},"result":{"rate":0.92}}}}},{"method":"POST","path":"/getCurrentCryptoPrice","price":"$0.01","description":"Live cryptocurrency price API. Returns the current market price (in USD) of any cryptocurrency by ticker symbol (BTC, ETH, DOGE, etc.) — live market data an LLM cannot know on its own. Returns 400 if symbol is missing.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","description":"Cryptocurrency ticker symbol, e.g. \"BTC\"."}},"required":["symbol"]},"output":{"example":{"ok":true,"data":{"input":"BTC","result":{"symbol":"BTC","priceUSD":"65000.00"}}}}},{"method":"POST","path":"/getWeather","price":"$0.01","description":"Live weather API. Returns real-time weather conditions, temperature, feels-like temperature, humidity, wind speed, precipitation, and UV index for any city worldwide — live external data an LLM cannot know on its own. Supports metric/imperial units, 74 languages, and optional 3-day forecast and sun/moon astronomy data. Returns 400 if city is missing.","inputSchema":{"type":"object","properties":{"city":{"type":"string","description":"City name, e.g. \"san-francisco\" or \"london\"."},"units":{"type":"string","enum":["metric","imperial"],"default":"metric","description":"Unit system for temperature and wind speed. Defaults to \"metric\"."},"lang":{"type":"string","default":"en","description":"Language code for the weather conditions text, e.g. \"de\" or \"fr\". Passed through to the weather provider. Defaults to English."},"includeForecast":{"type":"boolean","default":false,"description":"Include a 3-day forecast (min/max/avg temp, UV index, sun hours per day). Defaults to false."},"includeAstronomy":{"type":"boolean","default":false,"description":"Include today's sunrise, sunset, moonrise, moonset, and moon phase. Defaults to false."}},"required":["city"]},"output":{"example":{"ok":true,"data":{"input":{"city":"san-francisco","units":"metric","lang":null,"includeForecast":false,"includeAstronomy":false},"result":{"city":"san-francisco","conditions":"Foggy","temperature":"15","feelsLike":"14","humidity":"80","windSpeed":"10","precipitationMM":"0.2","uvIndex":"3","units":"metric"}}}}},{"method":"POST","path":"/fireCalculator","price":"$0.01","description":"FIRE (Financial Independence, Retire Early) calculator. Projects year-by-year net worth growth to determine how many years until your portfolio can sustainably fund retirement spending at a given safe withdrawal rate — precise compound-growth simulation an LLM cannot reliably run mentally. incomeGrowthRate is deflated by inflationRate internally. Past retirementAge the simulation draws down retirementAnnualSpending with no further income. Returns 400 for invalid inputs.","inputSchema":{"type":"object","properties":{"currentAge":{"type":"number","description":"Your current age in years (0-100)."},"currentAnnualIncome":{"type":"number","description":"Current annual take-home income."},"currentAnnualSpending":{"type":"number","description":"Current annual spending."},"retirementAnnualSpending":{"type":"number","description":"Expected annual spending in retirement."},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction (e.g. 0.07). Default 0.07. Ignored if assetAllocations is provided.","default":0.07},"assetAllocations":{"type":"array","description":"Optional multi-asset breakdown, e.g. [{name:\"Stocks\",percent:0.9,returnRate:0.08},{name:\"Cash\",percent:0.1,returnRate:0.005}] for a 90% stocks / 10% cash portfolio. Percentages must sum to 1 (within 1%). When provided, the weighted-average return replaces investmentReturnRate.","items":{"type":"object","properties":{"name":{"type":"string","description":"Label for this asset class (e.g. \"Stocks\", \"Bonds\", \"Cash\", \"Other\"). Required."},"percent":{"type":"number","description":"Fraction of the portfolio in this asset class (0-1)."},"returnRate":{"type":"number","description":"Expected annual return for this asset class, as a fraction."}},"required":["name","percent","returnRate"]}},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04},"incomeGrowthRate":{"type":"number","description":"Expected annual (nominal) income growth rate, as a fraction. Default 0. Deflated by inflationRate before use, same as investmentReturnRate.","default":0},"retirementAge":{"type":"number","description":"Age at which you stop earning income and switch to drawing down retirementAnnualSpending each year (between currentAge and 100). Default 67.","default":67},"pretaxAnnualIncome":{"type":"number","description":"Pre-tax annual salary, used only to compute employerMatchPercent. Default: same as currentAnnualIncome."},"employerMatchPercent":{"type":"number","description":"Employer retirement-account match, as a fraction of pretaxAnnualIncome (0-1). Default 0.","default":0}},"required":["currentAge","currentAnnualIncome","currentAnnualSpending","retirementAnnualSpending","currentNetWorth"]},"output":{"example":{"ok":true,"data":{"fireNumber":1000000,"yearsToFI":18,"projectedAge":48,"netWorthTrajectory":[{"year":0,"netWorth":0}],"params":{"currentAge":30,"currentAnnualIncome":80000,"currentAnnualSpending":50000,"retirementAnnualSpending":40000,"currentNetWorth":20000,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04,"incomeGrowthRate":0,"retirementAge":67,"pretaxAnnualIncome":80000,"employerMatchPercent":0}}}}},{"method":"POST","path":"/coastFireCalculator","price":"$0.01","description":"Coast FIRE calculator. Computes the lump sum needed today, invested with zero further contributions, to grow into your full retirement number by your target retirement age, plus (given an ongoing monthly contribution) a year-by-year projection of when your actual trajectory crosses that lump sum. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"currentAge":{"type":"number","description":"Your current age in years."},"retirementAge":{"type":"number","description":"Target traditional retirement age. Default 67.","default":67},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"retirementAnnualSpending":{"type":"number","description":"Expected annual spending in retirement."},"monthlyContribution":{"type":"number","description":"Ongoing monthly contribution toward currentNetWorth. Default 0.","default":0},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction. Default 0.07.","default":0.07},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04}},"required":["currentAge","currentNetWorth","retirementAnnualSpending"]},"output":{"example":{"ok":true,"data":{"fireNumberAtRetirement":750000,"coastFireNumberToday":175722.64,"hasCoastFired":false,"surplusOrDeficit":-75722.64,"yearsToCoastFire":18,"coastFireMessage":"You're 18 years from Coast FIRE!","params":{"currentAge":30,"retirementAge":67,"currentNetWorth":100000,"retirementAnnualSpending":30000,"monthlyContribution":500,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04}}}}},{"method":"POST","path":"/fatFireCalculator","price":"$0.01","description":"Fat FIRE calculator. Same year-by-year compound-growth simulation as the standard FIRE calculator, framed for a higher, more lifestyle-preserving retirement spending target. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"currentAge":{"type":"number","description":"Your current age in years."},"currentAnnualIncome":{"type":"number","description":"Current annual take-home income."},"currentAnnualSpending":{"type":"number","description":"Current annual spending."},"retirementAnnualSpending":{"type":"number","description":"Target (higher) annual spending in retirement."},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction. Default 0.07.","default":0.07},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04}},"required":["currentAge","currentAnnualIncome","currentAnnualSpending","retirementAnnualSpending","currentNetWorth"]},"output":{"example":{"ok":true,"data":{"fireNumber":5000000,"yearsToFI":25,"projectedAge":55,"netWorthTrajectory":[{"year":0,"netWorth":0}],"params":{"currentAge":30,"currentAnnualIncome":300000,"currentAnnualSpending":150000,"retirementAnnualSpending":200000,"currentNetWorth":100000,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04,"incomeGrowthRate":0,"retirementAge":67,"pretaxAnnualIncome":300000,"employerMatchPercent":0}}}}},{"method":"POST","path":"/baristaFireCalculator","price":"$0.01","description":"Barista FIRE calculator. Simulates net worth growth through a full-time-saving phase and then a reduced-target phase funded partly by part-time/side income after quitting full-time work, until full financial independence is reached. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"currentAge":{"type":"number","description":"Your current age in years."},"baristaAge":{"type":"number","description":"Age at which you switch to part-time/side income."},"currentAnnualIncome":{"type":"number","description":"Current full-time annual income."},"currentAnnualSpending":{"type":"number","description":"Current annual spending."},"baristaAnnualIncome":{"type":"number","description":"Expected part-time/side income after the barista transition."},"retirementAnnualSpending":{"type":"number","description":"Expected annual spending during the barista and retirement phases."},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction. Default 0.07.","default":0.07},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04}},"required":["currentAge","baristaAge","currentAnnualIncome","currentAnnualSpending","baristaAnnualIncome","retirementAnnualSpending","currentNetWorth"]},"output":{"example":{"ok":true,"data":{"fullFireNumber":375000,"netWorthAtBaristaAge":40000,"yearsToFullFI":69,"params":{"currentAge":30,"baristaAge":40,"currentAnnualIncome":60000,"currentAnnualSpending":40000,"baristaAnnualIncome":20000,"retirementAnnualSpending":15000,"currentNetWorth":50000,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04}}}}},{"method":"POST","path":"/windfallFireImpactCalculator","price":"$0.01","description":"Windfall impact on FIRE timeline calculator. Runs the FIRE net-worth simulation twice — with and without a one-time lump sum added at a given year — and reports how many years the windfall shaves off your time to financial independence. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"currentAnnualIncome":{"type":"number","description":"Current annual take-home income."},"currentAnnualSpending":{"type":"number","description":"Current annual spending."},"retirementAnnualSpending":{"type":"number","description":"Expected annual spending in retirement."},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction. Default 0.07.","default":0.07},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04},"windfallAmount":{"type":"number","description":"One-time lump sum received."},"windfallYear":{"type":"number","description":"Number of years from now the windfall is received. Default 0.","default":0}},"required":["currentAnnualIncome","currentAnnualSpending","retirementAnnualSpending","currentNetWorth","windfallAmount"]},"output":{"example":{"ok":true,"data":{"fireNumber":1000000,"baselineYearsToFI":20,"withWindfallYearsToFI":17,"yearsSaved":3,"params":{"currentAnnualIncome":80000,"currentAnnualSpending":50000,"retirementAnnualSpending":40000,"currentNetWorth":20000,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04,"windfallAmount":100000,"windfallYear":0}}}}},{"method":"POST","path":"/purchaseFireImpactCalculator","price":"$0.01","description":"Purchase impact on FIRE timeline calculator. Runs the FIRE net-worth simulation twice — with and without a one-time purchase amount deducted at a given year — and reports how many years that purchase delays financial independence, quantifying its true opportunity cost. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"currentAnnualIncome":{"type":"number","description":"Current annual take-home income."},"currentAnnualSpending":{"type":"number","description":"Current annual spending."},"retirementAnnualSpending":{"type":"number","description":"Expected annual spending in retirement."},"currentNetWorth":{"type":"number","description":"Current invested net worth."},"investmentReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction. Default 0.07.","default":0.07},"inflationRate":{"type":"number","description":"Expected annual inflation rate, as a fraction. Default 0.03.","default":0.03},"swr":{"type":"number","description":"Safe withdrawal rate, as a fraction. Default 0.04.","default":0.04},"purchaseAmount":{"type":"number","description":"One-time purchase amount."},"purchaseYear":{"type":"number","description":"Number of years from now the purchase is made. Default 0.","default":0}},"required":["currentAnnualIncome","currentAnnualSpending","retirementAnnualSpending","currentNetWorth","purchaseAmount"]},"output":{"example":{"ok":true,"data":{"fireNumber":1000000,"baselineYearsToFI":20,"withPurchaseYearsToFI":21,"yearsDelayed":1,"params":{"currentAnnualIncome":80000,"currentAnnualSpending":50000,"retirementAnnualSpending":40000,"currentNetWorth":20000,"investmentReturnRate":0.07,"inflationRate":0.03,"swr":0.04,"purchaseAmount":50000,"purchaseYear":0}}}}},{"method":"POST","path":"/loanPaymentCalculator","price":"$0.01","description":"Loan payment calculator. Computes the fixed monthly payment for a standard amortizing loan and returns the full month-by-month principal/interest/balance schedule — exact amortization math an LLM cannot reliably compute by hand for hundreds of periods. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"principal":{"type":"number","description":"Loan principal amount."},"annualRate":{"type":"number","description":"Annual interest rate, as a fraction (e.g. 0.06 for 6%)."},"termYears":{"type":"number","description":"Loan term in years (1-50). Default 20.","default":20}},"required":["principal","annualRate"]},"output":{"example":{"ok":true,"data":{"monthlyPayment":1199.1,"totalPaid":431676.38,"totalInterest":231676.38,"amortizationSchedule":[{"month":1,"principalPaid":199.1,"interestPaid":1000,"remainingBalance":199800.9}],"params":{"principal":200000,"annualRate":0.06,"termYears":30}}}}},{"method":"POST","path":"/mortgageComparisonCalculator","price":"$0.01","description":"15-year vs 30-year mortgage comparison calculator. Computes monthly payment and total interest for both loan terms on the same purchase price and down payment, and reports the payment and lifetime-interest tradeoff between them. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Home purchase price."},"downPaymentPercent":{"type":"number","description":"Down payment as a fraction of purchase price (0-1). Default 0.2.","default":0.2},"interestRate15":{"type":"number","description":"Annual interest rate for the 15-year loan, as a fraction."},"interestRate30":{"type":"number","description":"Annual interest rate for the 30-year loan, as a fraction."}},"required":["purchasePrice","interestRate15","interestRate30"]},"output":{"example":{"ok":true,"data":{"fifteenYear":{"monthlyPayment":1581.59,"totalInterest":84685.71,"totalPaid":284685.71},"thirtyYear":{"monthlyPayment":1199.1,"totalInterest":231676.38,"totalPaid":431676.38},"monthlyPaymentDifference":382.49,"totalInterestSavings":146990.67,"params":{"purchasePrice":250000,"downPaymentPercent":0.2,"interestRate15":0.05,"interestRate30":0.06}}}}},{"method":"POST","path":"/compoundInterestCalculator","price":"$0.01","description":"Compound interest calculator. Projects the ending value of an investment given a starting principal, monthly contributions, and an annual interest rate, compounded monthly over a chosen number of years. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"initialInvestment":{"type":"number","description":"Starting principal."},"years":{"type":"number","description":"Number of years to project (1-100)."},"monthlyContribution":{"type":"number","description":"Recurring monthly contribution."},"annualInterestRate":{"type":"number","description":"Annual interest rate, as a fraction (e.g. 0.07)."}},"required":["initialInvestment","years","monthlyContribution","annualInterestRate"]},"output":{"example":{"ok":true,"data":{"endingValue":1126.83,"totalContributions":1000,"totalGrowth":126.83,"yearlyBalances":[1126.83],"params":{"initialInvestment":1000,"years":1,"monthlyContribution":0,"annualInterestRate":0.12}}}}},{"method":"POST","path":"/capRateCalculator","price":"$0.01","description":"Cap rate calculator for real estate investing. Runs a full multi-year deal analysis (per-category rent/expense growth, a sale scenario, IRR) and headlines the capitalization rate: first-year NOI divided by purchase price. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Property purchase price."},"downPaymentPercent":{"type":"number","description":"Down payment as a fraction of purchase price (0-1). Use 1 for an all-cash purchase."},"interestRate":{"type":"number","description":"Annual mortgage interest rate, as a fraction. Ignored if downPaymentPercent is 1."},"loanTermYears":{"type":"number","description":"Loan term in years (1-50). Ignored if downPaymentPercent is 1."},"closingCosts":{"type":"number","description":"Closing costs. Default 0.","default":0},"rehabCosts":{"type":"number","description":"Upfront rehab/improvement costs. Default 0.","default":0},"monthlyRent":{"type":"number","description":"Total monthly rent collected, before vacancy/management fee."},"rentAnnualIncrease":{"type":"number","description":"Annual rent growth rate, as a fraction. Default 0.03.","default":0.03},"propertyManagementFeeRate":{"type":"number","description":"Property management fee, as a fraction of gross rent (0-1). Default 0.10.","default":0.1},"vacancyRate":{"type":"number","description":"Expected vacancy rate, as a fraction (0-1). Default 0.08.","default":0.08},"annualPropertyTaxes":{"type":"number","description":"Annual property taxes in the first year."},"taxesAnnualIncrease":{"type":"number","description":"Annual property tax growth rate, as a fraction. Default 0.03.","default":0.03},"annualInsurance":{"type":"number","description":"Annual landlord insurance in the first year."},"insuranceAnnualIncrease":{"type":"number","description":"Annual insurance growth rate, as a fraction. Default 0.03.","default":0.03},"monthlyHOA":{"type":"number","description":"Monthly HOA fee. Default 0.","default":0},"hoaAnnualIncrease":{"type":"number","description":"Annual HOA fee growth rate, as a fraction. Default 0.03.","default":0.03},"annualMaintenance":{"type":"number","description":"Annual maintenance budget in the first year."},"maintenanceAnnualIncrease":{"type":"number","description":"Annual maintenance cost growth rate, as a fraction. Default 0.03.","default":0.03},"otherAnnualExpenses":{"type":"number","description":"Other annual operating expenses in the first year. Default 0.","default":0},"otherAnnualIncrease":{"type":"number","description":"Annual growth rate for other expenses, as a fraction. Default 0.03.","default":0.03},"salePrice":{"type":"number","description":"Expected sale price at the end of the holding period."},"saleExpensesRate":{"type":"number","description":"Sale costs (agent commission, closing costs, etc.), as a fraction of sale price (0-1). Default 0.09.","default":0.09},"holdingLengthYears":{"type":"number","description":"Number of years you plan to hold the property before selling (1-50)."}},"required":["purchasePrice","downPaymentPercent","interestRate","loanTermYears","monthlyRent","annualPropertyTaxes","annualInsurance","annualMaintenance","salePrice","holdingLengthYears"]},"output":{"example":{"ok":true,"data":{"investedCash":40000,"monthlyMortgagePayment":1333.33,"firstYear":{"NOI":24000,"capRate":0.12,"cashOnCashReturn":0.2,"cashFlow":8000},"totals":{"rentalIncome":48000,"mortgagePayments":32000,"expenses":0,"NOI":48000,"operatingCashFlow":16000},"sale":{"netProceeds":72000,"totalProfitAfterSale":48000,"impliedAnnualGrowthRate":0},"irr":0.5177,"yearByYear":[{"year":1,"annualIncome":24000,"annualMortgagePayment":16000,"annualExpenses":0,"NOI":24000,"annualCashFlow":8000,"annualCoCReturn":0.2,"interestPortion":0,"principalPortion":16000,"loanBalance":144000,"totalEquity":56000}],"params":{"purchasePrice":200000,"downPaymentPercent":0.2,"interestRate":0,"loanTermYears":10,"closingCosts":0,"rehabCosts":0,"monthlyRent":2000,"rentAnnualIncrease":0,"propertyManagementFeeRate":0,"vacancyRate":0,"annualPropertyTaxes":0,"taxesAnnualIncrease":0,"annualInsurance":0,"insuranceAnnualIncrease":0,"monthlyHOA":0,"hoaAnnualIncrease":0,"annualMaintenance":0,"maintenanceAnnualIncrease":0,"otherAnnualExpenses":0,"otherAnnualIncrease":0,"salePrice":200000,"saleExpensesRate":0,"holdingLengthYears":2}}}}},{"method":"POST","path":"/cashOnCashReturnCalculator","price":"$0.01","description":"Cash-on-cash return calculator for real estate investing. Runs a full multi-year deal analysis (per-category rent/expense growth, a sale scenario, IRR) and headlines the first-year cash-on-cash return: operating cash flow divided by invested cash. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Property purchase price."},"downPaymentPercent":{"type":"number","description":"Down payment as a fraction of purchase price (0-1). Use 1 for an all-cash purchase."},"interestRate":{"type":"number","description":"Annual mortgage interest rate, as a fraction. Ignored if downPaymentPercent is 1."},"loanTermYears":{"type":"number","description":"Loan term in years (1-50). Ignored if downPaymentPercent is 1."},"closingCosts":{"type":"number","description":"Closing costs. Default 0.","default":0},"rehabCosts":{"type":"number","description":"Upfront rehab/improvement costs. Default 0.","default":0},"monthlyRent":{"type":"number","description":"Total monthly rent collected, before vacancy/management fee."},"rentAnnualIncrease":{"type":"number","description":"Annual rent growth rate, as a fraction. Default 0.03.","default":0.03},"propertyManagementFeeRate":{"type":"number","description":"Property management fee, as a fraction of gross rent (0-1). Default 0.10.","default":0.1},"vacancyRate":{"type":"number","description":"Expected vacancy rate, as a fraction (0-1). Default 0.08.","default":0.08},"annualPropertyTaxes":{"type":"number","description":"Annual property taxes in the first year."},"taxesAnnualIncrease":{"type":"number","description":"Annual property tax growth rate, as a fraction. Default 0.03.","default":0.03},"annualInsurance":{"type":"number","description":"Annual landlord insurance in the first year."},"insuranceAnnualIncrease":{"type":"number","description":"Annual insurance growth rate, as a fraction. Default 0.03.","default":0.03},"monthlyHOA":{"type":"number","description":"Monthly HOA fee. Default 0.","default":0},"hoaAnnualIncrease":{"type":"number","description":"Annual HOA fee growth rate, as a fraction. Default 0.03.","default":0.03},"annualMaintenance":{"type":"number","description":"Annual maintenance budget in the first year."},"maintenanceAnnualIncrease":{"type":"number","description":"Annual maintenance cost growth rate, as a fraction. Default 0.03.","default":0.03},"otherAnnualExpenses":{"type":"number","description":"Other annual operating expenses in the first year. Default 0.","default":0},"otherAnnualIncrease":{"type":"number","description":"Annual growth rate for other expenses, as a fraction. Default 0.03.","default":0.03},"salePrice":{"type":"number","description":"Expected sale price at the end of the holding period."},"saleExpensesRate":{"type":"number","description":"Sale costs (agent commission, closing costs, etc.), as a fraction of sale price (0-1). Default 0.09.","default":0.09},"holdingLengthYears":{"type":"number","description":"Number of years you plan to hold the property before selling (1-50)."}},"required":["purchasePrice","downPaymentPercent","interestRate","loanTermYears","monthlyRent","annualPropertyTaxes","annualInsurance","annualMaintenance","salePrice","holdingLengthYears"]},"output":{"example":{"ok":true,"data":{"investedCash":40000,"monthlyMortgagePayment":1333.33,"firstYear":{"NOI":24000,"capRate":0.12,"cashOnCashReturn":0.2,"cashFlow":8000},"totals":{"rentalIncome":48000,"mortgagePayments":32000,"expenses":0,"NOI":48000,"operatingCashFlow":16000},"sale":{"netProceeds":72000,"totalProfitAfterSale":48000,"impliedAnnualGrowthRate":0},"irr":0.5177,"yearByYear":[{"year":1,"annualIncome":24000,"annualMortgagePayment":16000,"annualExpenses":0,"NOI":24000,"annualCashFlow":8000,"annualCoCReturn":0.2,"interestPortion":0,"principalPortion":16000,"loanBalance":144000,"totalEquity":56000}],"params":{"purchasePrice":200000,"downPaymentPercent":0.2,"interestRate":0,"loanTermYears":10,"closingCosts":0,"rehabCosts":0,"monthlyRent":2000,"rentAnnualIncrease":0,"propertyManagementFeeRate":0,"vacancyRate":0,"annualPropertyTaxes":0,"taxesAnnualIncrease":0,"annualInsurance":0,"insuranceAnnualIncrease":0,"monthlyHOA":0,"hoaAnnualIncrease":0,"annualMaintenance":0,"maintenanceAnnualIncrease":0,"otherAnnualExpenses":0,"otherAnnualIncrease":0,"salePrice":200000,"saleExpensesRate":0,"holdingLengthYears":2}}}}},{"method":"POST","path":"/rentalPropertyCalculator","price":"$0.01","description":"Rental property investment calculator. Full multi-year deal analysis for a rental property deal: mortgage, per-category rent/expense growth, a sale scenario, IRR, and cumulative totals over the holding period, alongside the first-year NOI/cap-rate/cash-on-cash snapshot. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Property purchase price."},"downPaymentPercent":{"type":"number","description":"Down payment as a fraction of purchase price (0-1). Use 1 for an all-cash purchase."},"interestRate":{"type":"number","description":"Annual mortgage interest rate, as a fraction. Ignored if downPaymentPercent is 1."},"loanTermYears":{"type":"number","description":"Loan term in years (1-50). Ignored if downPaymentPercent is 1."},"closingCosts":{"type":"number","description":"Closing costs. Default 0.","default":0},"rehabCosts":{"type":"number","description":"Upfront rehab/improvement costs. Default 0.","default":0},"monthlyRent":{"type":"number","description":"Total monthly rent collected, before vacancy/management fee."},"rentAnnualIncrease":{"type":"number","description":"Annual rent growth rate, as a fraction. Default 0.03.","default":0.03},"propertyManagementFeeRate":{"type":"number","description":"Property management fee, as a fraction of gross rent (0-1). Default 0.10.","default":0.1},"vacancyRate":{"type":"number","description":"Expected vacancy rate, as a fraction (0-1). Default 0.08.","default":0.08},"annualPropertyTaxes":{"type":"number","description":"Annual property taxes in the first year."},"taxesAnnualIncrease":{"type":"number","description":"Annual property tax growth rate, as a fraction. Default 0.03.","default":0.03},"annualInsurance":{"type":"number","description":"Annual landlord insurance in the first year."},"insuranceAnnualIncrease":{"type":"number","description":"Annual insurance growth rate, as a fraction. Default 0.03.","default":0.03},"monthlyHOA":{"type":"number","description":"Monthly HOA fee. Default 0.","default":0},"hoaAnnualIncrease":{"type":"number","description":"Annual HOA fee growth rate, as a fraction. Default 0.03.","default":0.03},"annualMaintenance":{"type":"number","description":"Annual maintenance budget in the first year."},"maintenanceAnnualIncrease":{"type":"number","description":"Annual maintenance cost growth rate, as a fraction. Default 0.03.","default":0.03},"otherAnnualExpenses":{"type":"number","description":"Other annual operating expenses in the first year. Default 0.","default":0},"otherAnnualIncrease":{"type":"number","description":"Annual growth rate for other expenses, as a fraction. Default 0.03.","default":0.03},"salePrice":{"type":"number","description":"Expected sale price at the end of the holding period."},"saleExpensesRate":{"type":"number","description":"Sale costs (agent commission, closing costs, etc.), as a fraction of sale price (0-1). Default 0.09.","default":0.09},"holdingLengthYears":{"type":"number","description":"Number of years you plan to hold the property before selling (1-50)."}},"required":["purchasePrice","downPaymentPercent","interestRate","loanTermYears","monthlyRent","annualPropertyTaxes","annualInsurance","annualMaintenance","salePrice","holdingLengthYears"]},"output":{"example":{"ok":true,"data":{"investedCash":40000,"monthlyMortgagePayment":1333.33,"firstYear":{"NOI":24000,"capRate":0.12,"cashOnCashReturn":0.2,"cashFlow":8000},"totals":{"rentalIncome":48000,"mortgagePayments":32000,"expenses":0,"NOI":48000,"operatingCashFlow":16000},"sale":{"netProceeds":72000,"totalProfitAfterSale":48000,"impliedAnnualGrowthRate":0},"irr":0.5177,"yearByYear":[{"year":1,"annualIncome":24000,"annualMortgagePayment":16000,"annualExpenses":0,"NOI":24000,"annualCashFlow":8000,"annualCoCReturn":0.2,"interestPortion":0,"principalPortion":16000,"loanBalance":144000,"totalEquity":56000}],"params":{"purchasePrice":200000,"downPaymentPercent":0.2,"interestRate":0,"loanTermYears":10,"closingCosts":0,"rehabCosts":0,"monthlyRent":2000,"rentAnnualIncrease":0,"propertyManagementFeeRate":0,"vacancyRate":0,"annualPropertyTaxes":0,"taxesAnnualIncrease":0,"annualInsurance":0,"insuranceAnnualIncrease":0,"monthlyHOA":0,"hoaAnnualIncrease":0,"annualMaintenance":0,"maintenanceAnnualIncrease":0,"otherAnnualExpenses":0,"otherAnnualIncrease":0,"salePrice":200000,"saleExpensesRate":0,"holdingLengthYears":2}}}}},{"method":"POST","path":"/houseHackingCalculator","price":"$0.01","description":"House hacking calculator. Nets rental income from other units/rooms against your mortgage payment and expenses, then adds back the equity you build via principal paydown and the market rent you avoid paying elsewhere, to compute the true monthly net-worth impact of living in and renting out part of a property. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Property purchase price."},"downPaymentPercent":{"type":"number","description":"Down payment as a fraction of purchase price (0-1)."},"interestRate":{"type":"number","description":"Annual mortgage interest rate, as a fraction."},"loanTermYears":{"type":"number","description":"Loan term in years (1-50)."},"rentableUnits":{"type":"number","description":"Number of rentable units/rooms other than your own."},"rentPerUnit":{"type":"number","description":"Monthly rent charged per unit."},"vacancyRate":{"type":"number","description":"Expected vacancy rate, as a fraction (0-1)."},"propertyTaxRate":{"type":"number","description":"Annual property tax rate, as a fraction of purchase price (0-1)."},"annualInsurance":{"type":"number","description":"Annual homeowner/landlord insurance."},"monthlyHOA":{"type":"number","description":"Monthly HOA fee. Default 0.","default":0},"annualMaintenance":{"type":"number","description":"Annual maintenance budget."},"rentSavingsPerMonth":{"type":"number","description":"Market rent you avoid paying elsewhere by living in this property, per month. Default 0.","default":0}},"required":["purchasePrice","downPaymentPercent","interestRate","loanTermYears","rentableUnits","rentPerUnit","vacancyRate","propertyTaxRate","annualInsurance","annualMaintenance"]},"output":{"example":{"ok":true,"data":{"monthlyMortgagePayment":718.47,"additionalExpensesMonthly":450,"averageIncomeMonthly":930,"netCashFlowMonthly":-238.47,"principalPaydownMonthly":251.8,"overallNetWorthImpactMonthly":1013.33,"params":{"purchasePrice":200000,"downPaymentPercent":0.2,"interestRate":0.035,"loanTermYears":30,"rentableUnits":1,"rentPerUnit":1000,"vacancyRate":0.07,"propertyTaxRate":0.01,"annualInsurance":1400,"monthlyHOA":0,"annualMaintenance":2000,"rentSavingsPerMonth":1000}}}}},{"method":"POST","path":"/portfolioRebalancingCalculator","price":"$0.01","description":"Portfolio rebalancing calculator. Given current holdings and target allocation percentages, computes the dollar gap per asset and the monthly buy/sell inflow needed to reach the target allocation over a chosen rebalancing period. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"holdings":{"type":"array","description":"Array of holdings, each with name, currentAmount, and targetPercent (must sum to 1 across all holdings). Max 50 entries.","items":{"type":"object","properties":{"name":{"type":"string"},"currentAmount":{"type":"number"},"targetPercent":{"type":"number"}}}},"rebalancingPeriodMonths":{"type":"number","description":"Number of months to spread the rebalancing over. Default 1 (immediate lump-sum rebalance).","default":1}},"required":["holdings"]},"output":{"example":{"ok":true,"data":{"totalValue":10000,"holdings":[{"name":"stocks","currentAmount":6000,"targetAmount":5000,"gap":-1000,"monthlyInflow":-1000}],"params":{"holdings":[{"name":"stocks","currentAmount":6000,"targetPercent":0.5},{"name":"bonds","currentAmount":4000,"targetPercent":0.5}],"rebalancingPeriodMonths":1}}}}},{"method":"POST","path":"/savingsRateCalculator","price":"$0.01","description":"Savings rate calculator. Divides the gap between monthly take-home income and spending by income to produce your personal savings rate as a percentage. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"monthlyIncome":{"type":"number","description":"Monthly take-home income."},"monthlySpending":{"type":"number","description":"Monthly spending."}},"required":["monthlyIncome","monthlySpending"]},"output":{"example":{"ok":true,"data":{"savingsRate":0.2,"monthlySavingsAmount":1000,"params":{"monthlyIncome":5000,"monthlySpending":4000}}}}},{"method":"POST","path":"/emergencyFundCalculator","price":"$0.01","description":"Emergency fund calculator. Multiplies monthly essential expenses by a chosen runway length (in months) to compute a target emergency savings amount. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"monthlyExpenses":{"type":"number","description":"Monthly essential expenses."},"runwayMonths":{"type":"number","description":"Desired months of expense coverage. Default 6.","default":6}},"required":["monthlyExpenses"]},"output":{"example":{"ok":true,"data":{"targetAmount":18000,"params":{"monthlyExpenses":3000,"runwayMonths":6}}}}},{"method":"POST","path":"/keepingUpWithInflationCalculator","price":"$0.01","description":"Keeping up with inflation calculator. Computes the pre-tax raise needed under two scenarios — keeping the same dollar amount saved, or maintaining the same savings rate — after inflation raises your spending and a marginal tax rate reduces the raise itself. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"annualInflationRate":{"type":"number","description":"Personal annual inflation rate, as a fraction. Default 0.03.","default":0.03},"marginalTaxRate":{"type":"number","description":"Marginal tax rate applied to additional income, as a fraction (0 to <1)."},"monthlyTakeHomePay":{"type":"number","description":"Current monthly take-home pay, before the raise."},"monthlySpending":{"type":"number","description":"Current monthly spending, before inflation."}},"required":["marginalTaxRate","monthlyTakeHomePay","monthlySpending"]},"output":{"example":{"ok":true,"data":{"keepDollarSavingsRaisePercent":0.075,"maintainSavingsRateRaisePercent":0.1,"params":{"annualInflationRate":0.03,"marginalTaxRate":0.2,"monthlyTakeHomePay":5000,"monthlySpending":2500}}}}},{"method":"POST","path":"/hsaGrowthCalculator","price":"$0.01","description":"HSA (Health Savings Account) growth calculator. Projects year-by-year account balance from a starting value, annual contributions, annual expense withdrawals, and an annual return rate. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"startingValue":{"type":"number","description":"Current HSA balance."},"annualContribution":{"type":"number","description":"Total annual contribution, including any employer contribution."},"annualExpenses":{"type":"number","description":"Annual withdrawals for medical expenses."},"annualReturnRate":{"type":"number","description":"Expected annual investment return, as a fraction."},"years":{"type":"number","description":"Number of years to project (1-60)."}},"required":["startingValue","annualContribution","annualExpenses","annualReturnRate","years"]},"output":{"example":{"ok":true,"data":{"endingBalance":5886.38,"yearlyBalances":[2550,4177.5,5886.38],"params":{"startingValue":1000,"annualContribution":2000,"annualExpenses":500,"annualReturnRate":0.05,"years":3}}}}},{"method":"POST","path":"/upworkFeeCalculator","price":"$0.01","description":"Upwork freelancer fee calculator. Applies a documented tiered marginal service-fee schedule (20%/10%/5% at $500/$10,000 cumulative per-client lifetime billing thresholds) to compute take-home pay on an invoice, correctly splitting fees across a tier boundary like a tax bracket. Platform fee policies can change; verify current rates before relying on this for financial decisions. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"invoiceAmount":{"type":"number","description":"Dollar value of the current invoice."},"priorLifetimeEarningsWithClient":{"type":"number","description":"Total prior billings with this client, not including the current invoice. Default 0.","default":0}},"required":["invoiceAmount"]},"output":{"example":{"ok":true,"data":{"feeAmount":40,"takeHomeAmount":260,"newLifetimeEarnings":700,"effectiveFeeRate":0.1333,"params":{"invoiceAmount":300,"priorLifetimeEarningsWithClient":400}}}}},{"method":"POST","path":"/alcoholSavingsCalculator","price":"$0.01","description":"Alcohol spending and opportunity-cost calculator. Sums home and going-out drinking costs plus associated rideshare costs into monthly and yearly totals, then projects what that redirected spending could grow into if invested instead, using the future-value-of-an-annuity formula. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"homeDaysPerWeek":{"type":"number","description":"Days per week drinking at home."},"homeDrinksPerDay":{"type":"number","description":"Drinks per home-drinking day."},"homeCostPerDrink":{"type":"number","description":"Average cost per drink at home."},"outDaysPerWeek":{"type":"number","description":"Days per week drinking while out."},"outDrinksPerDay":{"type":"number","description":"Drinks per outing."},"outCostPerDrink":{"type":"number","description":"Average cost per drink when out."},"rideshareFrequencyPercent":{"type":"number","description":"Fraction of outings that involve a rideshare (0-1)."},"costPerRide":{"type":"number","description":"Average cost per one-way ride."},"investmentReturnRate":{"type":"number","description":"Annual investment return, as a fraction, used for the opportunity-cost projection. Default 0.07.","default":0.07},"years":{"type":"number","description":"Number of years to project the opportunity cost over (1-60)."}},"required":["homeDaysPerWeek","homeDrinksPerDay","homeCostPerDrink","outDaysPerWeek","outDrinksPerDay","outCostPerDrink","rideshareFrequencyPercent","costPerRide","years"]},"output":{"example":{"ok":true,"data":{"monthlySpending":255.67,"yearlySpending":3068,"opportunityCostFutureValue":21946.3,"params":{"homeDaysPerWeek":5,"homeDrinksPerDay":1,"homeCostPerDrink":3,"outDaysPerWeek":1,"outDrinksPerDay":4,"outCostPerDrink":8,"rideshareFrequencyPercent":0.5,"costPerRide":12,"investmentReturnRate":0.07,"years":5}}}}},{"method":"POST","path":"/gasMileageSavingsCalculator","price":"$0.01","description":"Gas mileage savings calculator. Compares annual fuel cost between two gas-powered vehicles based on miles driven, gas price, and each vehicle's MPG, and computes the break-even point for any price premium of the more efficient vehicle. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"milesPerYear":{"type":"number","description":"Expected annual miles driven."},"gasPricePerGallon":{"type":"number","description":"Local gas price per gallon."},"vehicleA":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Vehicle purchase price."},"mpg":{"type":"number","description":"Miles per gallon."}}},"vehicleB":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Vehicle purchase price."},"mpg":{"type":"number","description":"Miles per gallon."}}}},"required":["milesPerYear","gasPricePerGallon","vehicleA","vehicleB"]},"output":{"example":{"ok":true,"data":{"annualCostA":1800,"annualCostB":900,"annualSavings":900,"breakEvenYears":5.5556,"params":{"milesPerYear":15000,"gasPricePerGallon":3,"vehicleA":{"purchasePrice":20000,"mpg":25},"vehicleB":{"purchasePrice":25000,"mpg":50}}}}}},{"method":"POST","path":"/hybridVsGasSavingsCalculator","price":"$0.01","description":"Hybrid vs gas savings calculator. Compares annual fuel cost between a hybrid and a conventional gas vehicle based on miles driven, gas price, and each vehicle's MPG, and computes the break-even point for the hybrid's price premium. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"milesPerYear":{"type":"number","description":"Expected annual miles driven."},"gasPricePerGallon":{"type":"number","description":"Local gas price per gallon."},"vehicleA":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Vehicle purchase price."},"mpg":{"type":"number","description":"Miles per gallon."}}},"vehicleB":{"type":"object","properties":{"purchasePrice":{"type":"number","description":"Vehicle purchase price."},"mpg":{"type":"number","description":"Miles per gallon."}}}},"required":["milesPerYear","gasPricePerGallon","vehicleA","vehicleB"]},"output":{"example":{"ok":true,"data":{"annualCostA":1750,"annualCostB":875,"annualSavings":875,"breakEvenYears":4.5714,"params":{"milesPerYear":12000,"gasPricePerGallon":3.5,"vehicleA":{"purchasePrice":22000,"mpg":24},"vehicleB":{"purchasePrice":26000,"mpg":48}}}}}},{"method":"POST","path":"/electricCarSavingsCalculator","price":"$0.01","description":"Electric car savings calculator. Compares annual electricity cost against annual gas cost for a comparable gas vehicle, accounting for free-charging usage, and computes break-even years, cost per full charge, and gas-price-equivalent effective MPG. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"milesPerYear":{"type":"number","description":"Expected annual miles driven."},"gasPricePerGallon":{"type":"number","description":"Local gas price per gallon."},"gasVehicle":{"type":"object","properties":{"purchasePrice":{"type":"number"},"mpg":{"type":"number"}}},"electricVehicle":{"type":"object","properties":{"purchasePrice":{"type":"number"},"batteryCapacityKwh":{"type":"number"},"rangeMiles":{"type":"number"},"electricityRatePerKwh":{"type":"number"},"freeChargingPercent":{"type":"number","description":"Fraction of charging that is free (0-1). Default 0.","default":0}}}},"required":["milesPerYear","gasPricePerGallon","gasVehicle","electricVehicle"]},"output":{"example":{"ok":true,"data":{"annualElectricityCost":390,"annualGasCost":1400,"annualSavings":1010,"breakEvenYears":9.9,"costPerCharge":7.8,"effectiveMPG":107.69,"params":{"milesPerYear":12000,"gasPricePerGallon":3.5,"gasVehicle":{"purchasePrice":25000,"mpg":30},"electricVehicle":{"purchasePrice":35000,"batteryCapacityKwh":60,"rangeMiles":240,"electricityRatePerKwh":0.13,"freeChargingPercent":0}}}}}},{"method":"POST","path":"/teslaSavingsCalculator","price":"$0.01","description":"Tesla savings calculator. Compares annual electricity cost for a Tesla against annual gas cost for a comparable gas vehicle, accounting for free-charging usage, and computes break-even years, cost per full charge, and gas-price-equivalent effective MPG. Returns 400 for invalid or out-of-range inputs.","inputSchema":{"type":"object","properties":{"milesPerYear":{"type":"number","description":"Expected annual miles driven."},"gasPricePerGallon":{"type":"number","description":"Local gas price per gallon."},"gasVehicle":{"type":"object","properties":{"purchasePrice":{"type":"number"},"mpg":{"type":"number"}}},"electricVehicle":{"type":"object","properties":{"purchasePrice":{"type":"number"},"batteryCapacityKwh":{"type":"number"},"rangeMiles":{"type":"number"},"electricityRatePerKwh":{"type":"number"},"freeChargingPercent":{"type":"number","description":"Fraction of charging that is free (0-1). Default 0.","default":0}}}},"required":["milesPerYear","gasPricePerGallon","gasVehicle","electricVehicle"]},"output":{"example":{"ok":true,"data":{"annualElectricityCost":450,"annualGasCost":2035.71,"annualSavings":1585.71,"breakEvenYears":8.83,"costPerCharge":9,"effectiveMPG":126.67,"params":{"milesPerYear":15000,"gasPricePerGallon":3.8,"gasVehicle":{"purchasePrice":28000,"mpg":28},"electricVehicle":{"purchasePrice":42000,"batteryCapacityKwh":75,"rangeMiles":300,"electricityRatePerKwh":0.15,"freeChargingPercent":0.2}}}}}},{"method":"POST","path":"/evaluateExpression","price":"$0.01","description":"Safe arithmetic expression evaluator. Parses and evaluates expressions with +, -, *, /, ^, and parentheses using a bounded-recursion parser (no eval/Function), avoiding the arithmetic slips an LLM makes on long expressions. Returns 400 for invalid, oversized, or division-by-zero expressions.","inputSchema":{"type":"object","properties":{"expression":{"type":"string","description":"Arithmetic expression to evaluate, e.g. \"(2 + 3) * 4\". Max 200 characters."}},"required":["expression"]},"output":{"example":{"ok":true,"data":{"expression":"(2 + 3) * 4","result":20}}}},{"method":"POST","path":"/bigNumberArithmetic","price":"$0.01","description":"Arbitrary-precision integer arithmetic (add, subtract, multiply, power) beyond IEEE-754 float precision, using native BigInt. Operands are passed as digit strings so precision is never lost in transit. For power, the combined magnitude (base digit count x exponent) is capped at 50000 to bound response size, in addition to the per-operand digit cap and exponent cap. Returns 400 for invalid, oversized, or out-of-range inputs.","inputSchema":{"type":"object","properties":{"a":{"type":"string","description":"First operand, as a string of digits (optionally negative). Max 1000 digits."},"b":{"type":"string","description":"Second operand (or exponent for power), as a string of digits. Max 1000 digits (max 1000 for exponent on power)."},"operation":{"type":"string","enum":["add","subtract","multiply","power"],"description":"Operation to perform."}},"required":["a","b","operation"]},"output":{"example":{"ok":true,"data":{"result":"1024"}}}},{"method":"POST","path":"/matrixOperations","price":"$0.01","description":"Matrix operations: multiply, transpose, determinant, and invert, for matrices up to 20x20. Uses the ml-matrix library's LU decomposition (LuDecomposition) for determinant and inversion, with a numerical near-singularity guard beyond the library's exact-singular check. Returns 400 for invalid, non-rectangular, non-finite, singular or near-singular, or oversized matrices.","inputSchema":{"type":"object","properties":{"operation":{"type":"string","enum":["multiply","transpose","determinant","invert"],"description":"Operation to perform."},"matrixA":{"type":"array","description":"A 2D array of numbers, up to 20x20."},"matrixB":{"type":"array","description":"A 2D array of numbers, required only for multiply."}},"required":["operation","matrixA"]},"output":{"example":{"ok":true,"data":{"result":[[19,22],[43,50]]}}}},{"method":"POST","path":"/unitConvert","price":"$0.01","description":"Unit conversion for length, mass, volume, and temperature using exact conversion factors (temperature uses the correct affine formulas, not simple multiplication). Returns 400 for unsupported units or categories.","inputSchema":{"type":"object","properties":{"value":{"type":"number","description":"The numeric value to convert."},"from":{"type":"string","description":"Source unit, e.g. \"m\", \"kg\", \"gal\", \"C\"."},"to":{"type":"string","description":"Target unit."},"category":{"type":"string","enum":["length","mass","volume","temperature"],"description":"Unit category."}},"required":["value","from","to","category"]},"output":{"example":{"ok":true,"data":{"value":1000,"from":"m","to":"km","category":"length","result":1}}}},{"method":"POST","path":"/solveLinearEquation","price":"$0.01","description":"Solves a system of linear equations (Ax = b) using the ml-matrix library's LU decomposition (LuDecomposition), with a near-singularity guard beyond the library's exact-singular check, for systems up to 20x20. Returns 400 for malformed, mismatched-size, non-finite, oversized, or non-unique/near-singular-solution systems.","inputSchema":{"type":"object","properties":{"coefficients":{"type":"array","description":"Square 2D array of coefficients (n x n), up to 20x20."},"constants":{"type":"array","description":"Array of n constants (the right-hand side of each equation)."}},"required":["coefficients","constants"]},"output":{"example":{"ok":true,"data":{"solution":[2,1]}}}},{"method":"POST","path":"/primeFactorize","price":"$0.01","description":"Prime factorization of an integer via trial division, returning the full list of prime factors (with repetition). Returns 400 for non-integers, values below 2, or values above 1e12 (1 trillion).","inputSchema":{"type":"object","properties":{"n":{"type":"number","description":"Integer to factorize (2 to 10^12)."}},"required":["n"]},"output":{"example":{"ok":true,"data":{"n":60,"factors":[2,2,3,5]}}}},{"method":"POST","path":"/isPrime","price":"$0.01","description":"Deterministic primality test using the Miller-Rabin algorithm with a witness set proven deterministic for all integers below 3.3x10^24, safely covering the full JavaScript safe-integer range. Returns 400 for non-integers or negative values.","inputSchema":{"type":"object","properties":{"n":{"type":"number","description":"Non-negative integer to test (0 to 2^53 - 1)."}},"required":["n"]},"output":{"example":{"ok":true,"data":{"n":97,"isPrime":true}}}},{"method":"POST","path":"/statisticsSummary","price":"$0.01","description":"Descriptive statistics summary (mean, median, variance, standard deviation, and 25th/75th/90th percentiles via linear interpolation, matching R and numpy's default \"type=7\" method) over a numeric array of up to 10,000 elements. Returns 400 for empty, oversized, or non-numeric input.","inputSchema":{"type":"object","properties":{"values":{"type":"array","description":"Non-empty array of numbers, up to 10,000 elements."}},"required":["values"]},"output":{"example":{"ok":true,"data":{"mean":3,"median":3,"variance":2,"stddev":1.4142,"p25":2,"p75":4,"p90":4.6}}}},{"method":"POST","path":"/astronomyEphemeris","price":"$0.01","description":"Sunrise, sunset, solar noon, day length, and moon phase for a given latitude/longitude/date, computed via the suncalc library (standard solar/lunar position algorithms) — precise astronomical math an LLM cannot reliably compute mentally. Returns 400 for out-of-range coordinates or an invalid date.","inputSchema":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude in degrees (-90 to 90)."},"longitude":{"type":"number","description":"Longitude in degrees (-180 to 180)."},"date":{"type":"string","description":"ISO date string, e.g. \"2024-06-21\"."}},"required":["latitude","longitude","date"]},"output":{"example":{"ok":true,"data":{"latitude":40.7,"longitude":-74,"date":"2024-06-21","sunrise":"09:25","sunset":"00:30","solarNoon":"16:57","dayLengthHours":15.09,"polarDayOrNight":false,"moonPhase":{"ageDays":13.64,"phaseFraction":0.462,"phaseName":"Waxing Gibbous"}}}}},{"method":"POST","path":"/physicalConstants","price":"$0.01","description":"Lookup of standard physical constants (speed of light, gravitational constant, Planck constant, elementary charge, Avogadro number, Boltzmann constant, gas constant, electron mass) with exact published CODATA values. Returns 400 for an unrecognized constant name.","inputSchema":{"type":"object","properties":{"constant":{"type":"string","enum":["speedOfLight","gravitationalConstant","planckConstant","elementaryCharge","avogadroNumber","boltzmannConstant","gasConstant","electronMass"],"description":"Which constant to look up."}},"required":["constant"]},"output":{"example":{"ok":true,"data":{"constant":"speedOfLight","value":299792458,"unit":"m/s","description":"Speed of light in vacuum"}}}},{"method":"POST","path":"/chemicalElementLookup","price":"$0.01","description":"Periodic table element lookup by symbol or atomic number, returning name, atomic mass, and category. Covers the most commonly referenced elements. Returns 400 if neither symbol nor atomicNumber is provided, or the element is not found.","inputSchema":{"type":"object","properties":{"symbol":{"type":"string","description":"Element symbol, e.g. \"Au\" (case-insensitive). Provide this or atomicNumber."},"atomicNumber":{"type":"number","description":"Atomic number, e.g. 79. Provide this or symbol."}},"required":[]},"output":{"example":{"ok":true,"data":{"atomicNumber":79,"symbol":"Au","name":"Gold","atomicMass":196.97,"category":"transition metal"}}}},{"method":"POST","path":"/unitConvertScientific","price":"$0.01","description":"Scientific unit conversion for pressure, energy, and molarity using exact conversion factors. Returns 400 for unsupported units or categories.","inputSchema":{"type":"object","properties":{"value":{"type":"number","description":"The numeric value to convert."},"from":{"type":"string","description":"Source unit, e.g. \"atm\", \"kcal\", \"mol/l\"."},"to":{"type":"string","description":"Target unit."},"category":{"type":"string","enum":["pressure","energy","molarity"],"description":"Unit category."}},"required":["value","from","to","category"]},"output":{"example":{"ok":true,"data":{"value":1,"from":"atm","to":"pa","category":"pressure","result":101325}}}},{"method":"POST","path":"/regexTest","price":"$0.01","description":"Tests a regular expression pattern against a string, guarded against catastrophic backtracking (ReDoS) by running the match in an isolated worker thread with a hard 100ms timeout that fails closed. Returns 400 for invalid patterns, oversized input, or a timeout.","inputSchema":{"type":"object","properties":{"pattern":{"type":"string","description":"Regular expression pattern (without slashes). Max 200 characters."},"flags":{"type":"string","description":"Regex flags (g, i, m, s, u, y). Optional.","default":""},"testString":{"type":"string","description":"String to test the pattern against. Max 10,000 characters."}},"required":["pattern","testString"]},"output":{"example":{"ok":true,"data":{"pattern":"^[a-z]+$","flags":"","testString":"hello","matched":true}}}},{"method":"POST","path":"/jsonSchemaValidate","price":"$0.01","description":"Validates a JSON document against a JSON Schema using the industry-standard ajv validator, returning whether it is valid and a list of human-readable error messages if not. Returns 400 for a malformed schema or oversized input.","inputSchema":{"type":"object","properties":{"schema":{"type":"object","description":"A JSON Schema object. Max 50KB serialized."},"document":{"description":"The JSON document to validate against the schema. Max 50KB serialized."}},"required":["schema","document"]},"output":{"example":{"ok":true,"data":{"valid":false,"errors":["/name must have required property 'name'"]}}}},{"method":"POST","path":"/diffText","price":"$0.01","description":"Line-based diff between two strings using the Myers diff algorithm (via the diff/jsdiff library), returning a list of equal/add/remove operations. Returns 400 for input over the 50,000-character length cap or 2,000-line cap.","inputSchema":{"type":"object","properties":{"textA":{"type":"string","description":"Original text. Max 50,000 characters and 2,000 lines."},"textB":{"type":"string","description":"Modified text. Max 50,000 characters and 2,000 lines."}},"required":["textA","textB"]},"output":{"example":{"ok":true,"data":{"diff":[{"type":"equal","line":"a"},{"type":"remove","line":"b"},{"type":"add","line":"x"}]}}}},{"method":"POST","path":"/cronParse","price":"$0.01","description":"Computes the next N run times for a standard 5-field cron expression, avoiding the mental cron-schedule simulation an LLM often gets subtly wrong. Returns 400 for an invalid expression or an out-of-range count.","inputSchema":{"type":"object","properties":{"expression":{"type":"string","description":"A standard 5-field cron expression, e.g. \"0 0 * * *\"."},"count":{"type":"number","description":"Number of future run times to return (1-50). Default 5.","default":5}},"required":["expression"]},"output":{"example":{"ok":true,"data":{"expression":"0 0 * * *","nextRuns":["2026-08-30T00:00:00.000Z","2026-08-31T00:00:00.000Z"]}}}},{"method":"POST","path":"/colorConvert","price":"$0.01","description":"Converts a color between hex, rgb, and hsl representations using exact arithmetic. Returns 400 for a malformed or out-of-range color value.","inputSchema":{"type":"object","properties":{"from":{"type":"string","enum":["hex","rgb","hsl"],"description":"Source color format."},"to":{"type":"string","enum":["hex","rgb","hsl"],"description":"Target color format."},"value":{"description":"The color value: a string for hex, or {r,g,b}/{h,s,l} for rgb/hsl."}},"required":["from","to","value"]},"output":{"example":{"ok":true,"data":{"result":{"r":255,"g":0,"b":0}}}}},{"method":"POST","path":"/qrCodeGenerate","price":"$0.01","description":"Generates a QR code for the given text, returned as a base64-encoded PNG data URL, computed entirely locally with no external service call. Returns 400 for empty or oversized text.","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"Text or URL to encode. Max 500 characters."}},"required":["text"]},"output":{"example":{"ok":true,"data":{"text":"https://example.com","dataUrl":"data:image/png;base64,iVBORw0KGgo..."}}}},{"method":"POST","path":"/jwtDecode","price":"$0.01","description":"Decodes (does not verify) a JWT by base64url-decoding its header and payload segments. Signature validity is never checked — do not use this to authenticate a token. Returns 400 for a malformed token.","inputSchema":{"type":"object","properties":{"token":{"type":"string","description":"A JWT string (header.payload.signature)."}},"required":["token"]},"output":{"example":{"ok":true,"data":{"header":{"alg":"HS256","typ":"JWT"},"payload":{"sub":"1234567890"},"verified":false}}}},{"method":"POST","path":"/semverCompare","price":"$0.01","description":"Compares two semantic version strings and reports which is greater, lesser, or equal, using the standard semver comparison rules. Returns 400 for invalid version strings.","inputSchema":{"type":"object","properties":{"versionA":{"type":"string","description":"First semantic version, e.g. \"1.2.3\"."},"versionB":{"type":"string","description":"Second semantic version, e.g. \"1.2.4\"."}},"required":["versionA","versionB"]},"output":{"example":{"ok":true,"data":{"versionA":"1.2.3","versionB":"1.2.4","comparison":-1,"result":"less"}}}}]}