# AgentTools — full tool reference for AI agents

Complete reference for every tool API at https://agenttools-hub.vercel.app. All endpoints are GET, return JSON, and require x402 payment (https://agenttools-hub.vercel.app/for-agents).

## Calculators

### Percentage Calculator

Calculate X% of Y, what percent X is of Y, and the percent change between two values — with step-by-step working shown.

- [Percentage Calculator](https://agenttools-hub.vercel.app/calculators/percentage-calculator): Calculate X% of Y, what percent X is of Y, and the percent change between two values — with step-by-step working shown.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/percentage-calculator?x=15&y=200&op=percent_of — $0.001/call
  - Params:
    - x (number, required): X
    - y (number, required): Y
    - op (string, one of (percent_of | what_percent | change), optional): Operation
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/percentage-calculator?x=15&y=200&op=percent_of — 15% of 200
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/percentage-calculator?x=45&y=360&op=what_percent — 45 is what percent of 360
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/percentage-calculator?x=80&y=96&op=change — Percent change from 80 to 96
  - Method: X% of Y = X ÷ 100 × Y · X as % of Y = X ÷ Y × 100 · % change = (Y − X) ÷ |X| × 100
  - FAQ: How do I calculate X% of Y? → Divide X by 100, then multiply by Y. For example 15% of 200 = 15 ÷ 100 × 200 = 30.
  - FAQ: How is percent change calculated? → Subtract the old value from the new value, divide by the absolute old value, and multiply by 100. A negative result is a decrease.
  - FAQ: Why is percent change from 0 undefined? → The formula divides by the starting value. Starting from zero, any change is infinitely large in percentage terms, so the operation is undefined.

### Discount Calculator

Calculate the final sale price and the amount saved for any price and percent-off discount, with the working shown.

- [Discount Calculator](https://agenttools-hub.vercel.app/calculators/discount-calculator): Calculate the final sale price and the amount saved for any price and percent-off discount, with the working shown.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/discount-calculator?price=79.99&discount=20 — $0.001/call
  - Params:
    - price (number, required): Original price
    - discount (number, required): Discount %
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/discount-calculator?price=79.99&discount=20 — 20% off 79.99
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/discount-calculator?price=240&discount=50 — 50% off 240
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/discount-calculator?price=1600&discount=12.5 — 12.5% off 1600
  - Method: savings = price × discount ÷ 100 · final price = price − savings
  - FAQ: How do I calculate 20% off a price? → Multiply the price by 20, divide by 100 to get the savings, then subtract the savings from the original price. This tool does both steps for you.
  - FAQ: Does the discount apply before or after tax? → Retailers almost always apply discounts to the pre-tax price. To include tax, calculate the discounted price first, then add VAT/sales tax with the VAT calculator.
  - FAQ: Can I stack two discounts? → Sequential discounts multiply: 20% then 10% off equals 72% of the original price, not 70%. Apply this tool twice to see it.

### Tip Calculator

Calculate the tip for any bill, the grand total, and how much each person pays when splitting. Defaults to a 15% tip.

- [Tip Calculator](https://agenttools-hub.vercel.app/calculators/tip-calculator): Calculate the tip for any bill, the grand total, and how much each person pays when splitting. Defaults to a 15% tip.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/tip-calculator?bill=64.5&tipPercent=15&people=1 — $0.001/call
  - Params:
    - bill (number, required): Bill amount
    - tipPercent (number, optional): Tip %
    - people (number, optional): Split between
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/tip-calculator?bill=64.5&tipPercent=15&people=1 — 64.50 with 15% tip
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/tip-calculator?bill=120&tipPercent=20&people=4 — 120 with 20% tip, 4 people
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/tip-calculator?bill=35&tipPercent=10&people=1 — 35 with 10% tip
  - Method: tip = bill × tip% ÷ 100 · total = bill + tip · per person = total ÷ people
  - FAQ: How much should I tip? → Customs vary by country. In the US, 15–20% at restaurants is standard; in much of Europe service is included and smaller tips are normal. This calculator works for any percentage.
  - FAQ: Should I tip on the pre-tax or post-tax amount? → Etiquette guides usually suggest tipping on the pre-tax amount, but many people simply tip on the bill total for convenience.

### VAT Calculator

Add VAT to a net amount or remove VAT from a gross amount. Standard VAT rates for 36 countries are built in, or override with any custom rate.

- [VAT Calculator](https://agenttools-hub.vercel.app/calculators/vat-calculator): Add VAT to a net amount or remove VAT from a gross amount. Standard VAT rates for 36 countries are built in, or override with any custom rate.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/vat-calculator?amount=100&country=DE&op=add — $0.001/call
  - Params:
    - amount (number, required): Amount
    - country (string, one of (AT | BE | BG | BR | CA | CH | CY | CZ | DE | DK | EE | ES | FI | FR | GB | GR | HR | HU | IE | IT | JP | LT | LU | LV | MT | NL | NO | NZ | PL | PT | RO | SE | SI | SK | US | ZA), optional): Country (standard rate)
    - op (string, one of (add | remove), optional): Direction
    - rate (number, optional): Custom rate % (optional)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/vat-calculator?amount=100&country=DE&op=add — Add 19% VAT to 100 (DE)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/vat-calculator?amount=240&country=GB&op=remove — Remove 20% VAT from 240 (GB)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/vat-calculator?amount=500&rate=7.7&op=add — Add custom 7.7% to 500
  - Method: gross = net × (1 + rate/100) · net = gross × 100 ÷ (100 + rate)
  - FAQ: How do I remove VAT from a gross price? → Divide the gross amount by 1 + rate/100. For 20% VAT: net = gross ÷ 1.2. Choosing "Remove VAT" does this for you and shows the VAT portion.
  - FAQ: Why is the US rate 0%? → The US has no federal VAT; sales tax is set state and local level. Enter your local sales tax as a custom rate.
  - FAQ: Are these rates up to date? → Rates reflect standard rates at publication and change occasionally. Always verify against your tax authority before invoicing — this tool is not tax advice.

### BMI Calculator

Calculate Body Mass Index from weight (kg) and height (cm), with the WHO weight category and the healthy BMI weight range for your height.

- [BMI Calculator](https://agenttools-hub.vercel.app/calculators/bmi-calculator): Calculate Body Mass Index from weight (kg) and height (cm), with the WHO weight category and the healthy BMI weight range for your height.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/bmi-calculator?weight=70&height=175 — $0.001/call
  - Params:
    - weight (number, required): Weight (kg)
    - height (number, required): Height (cm)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/bmi-calculator?weight=70&height=175 — 70 kg, 175 cm
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/bmi-calculator?weight=55&height=160 — 55 kg, 160 cm
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/bmi-calculator?weight=95&height=180 — 95 kg, 180 cm
  - Method: BMI = weight (kg) ÷ height² (m²)
  - FAQ: What is a healthy BMI? → The WHO classifies 18.5–24.9 as healthy weight, below 18.5 as underweight, 25–29.9 as overweight and 30+ as obesity.
  - FAQ: Is BMI accurate for athletes? → No. BMI does not distinguish muscle from fat, so muscular people can score 'overweight' while being healthy. It is a population screening tool, not a diagnosis.
  - FAQ: Does BMI work for children? → Children and teens are assessed with age- and sex-specific percentile charts instead of the adult ranges used here.

### Date Difference Calculator

Count the total days between two dates, plus the breakdown in weeks and days and in calendar years, months and days.

- [Date Difference Calculator](https://agenttools-hub.vercel.app/calculators/date-difference-calculator): Count the total days between two dates, plus the breakdown in weeks and days and in calendar years, months and days.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/date-difference-calculator?start=2024-01-01&end=2024-12-31 — $0.001/call
  - Params:
    - start (text, required): ISO format YYYY-MM-DD
    - end (text, required): ISO format YYYY-MM-DD
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/date-difference-calculator?start=2024-01-01&end=2024-12-31 — 2024-01-01 → 2024-12-31
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/date-difference-calculator?start=2020-02-28&end=2020-03-01 — 2020-02-28 → 2020-03-01 (leap year)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/date-difference-calculator?start=1990-06-15&end=2026-09-01 — 1990-06-15 → 2026-09-01
  - Method: total days = (end UTC midnight − start UTC midnight) ÷ 86,400 seconds
  - FAQ: Does the count include both end days? → The result is the difference between the two dates (end minus start). Add 1 to include both the first and the last day in a count.
  - FAQ: How are leap years handled? → The calculation uses real calendar arithmetic on UTC timestamps, so Feb 29 is counted exactly as it occurs.
  - FAQ: Are time zones considered? → Both dates are interpreted as midnight UTC, so results are independent of your local time zone.

### Age Calculator

Calculate a person's exact age in calendar years, months and days from their date of birth, plus total days lived. Reference date defaults to today (UTC).

- [Age Calculator](https://agenttools-hub.vercel.app/calculators/age-calculator): Calculate a person's exact age in calendar years, months and days from their date of birth, plus total days lived. Reference date defaults to today (UTC).
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/age-calculator?birth=1990-06-15&on=2026-09-01 — $0.001/call
  - Params:
    - birth (text, required): YYYY-MM-DD
    - on (text, optional): Defaults to today, YYYY-MM-DD
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/age-calculator?birth=1990-06-15&on=2026-09-01 — Born 1990-06-15, age at 2026-09-01
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/age-calculator?birth=2000-02-29&on=2026-09-01 — Born 2000-02-29 (leap), age at 2026-09-01
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/age-calculator?birth=1975-11-30&on=2026-01-01 — Born 1975-11-30, age at 2026-01-01
  - Method: age = full calendar years, then remaining months, then remaining days between birth and reference date
  - FAQ: How does a Feb 29 birthday count? → Feb 29 birthdays advance to Mar 1 in non-leap years for 'days since' counting; the calendar year count still increments on Mar 1.
  - FAQ: Which time zone is used? → Both dates are treated as midnight UTC, so the age is the same no matter where the request comes from.

### Loan Payment Calculator

Calculate the fixed monthly payment for a loan from its principal, annual interest rate and term in years, plus total repaid and total interest (annuity formula).

- [Loan Payment Calculator](https://agenttools-hub.vercel.app/calculators/loan-payment-calculator): Calculate the fixed monthly payment for a loan from its principal, annual interest rate and term in years, plus total repaid and total interest (annuity formula).
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/loan-payment-calculator?principal=300000&annualRate=4.5&years=30 — $0.002/call
  - Params:
    - principal (number, required): Loan amount
    - annualRate (number, required): Annual rate %
    - years (number, required): Term (years)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/loan-payment-calculator?principal=300000&annualRate=4.5&years=30 — 300,000 at 4.5% for 30 years
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/loan-payment-calculator?principal=20000&annualRate=6.9&years=4 — 20,000 at 6.9% for 4 years
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/loan-payment-calculator?principal=500000&annualRate=2&years=15 — 500,000 at 2% for 15 years
  - Method: M = P · r · (1+r)ⁿ ÷ ((1+r)ⁿ − 1), where r = annual rate ÷ 12 and n = years × 12
  - FAQ: Does this include taxes, insurance or fees? → No. The result is the pure principal-and-interest payment (P&I). Property tax, insurance and origination fees come on top.
  - FAQ: Why is total interest so large on long loans? → Interest accrues on the remaining balance each month; stretching the term lowers the monthly payment but multiplies the number of interest-bearing months.
  - FAQ: What happens at a 0% rate? → The payment is simply the principal divided by the number of months — the formula handles this special case.

### Compound Interest Calculator

Project the future value of a deposit with compound interest: choose annual, semi-annual, quarterly, monthly, weekly or daily compounding and see total interest earned.

- [Compound Interest Calculator](https://agenttools-hub.vercel.app/calculators/compound-interest-calculator): Project the future value of a deposit with compound interest: choose annual, semi-annual, quarterly, monthly, weekly or daily compounding and see total interest earned.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/compound-interest-calculator?principal=10000&annualRate=5&years=10&timesPerYear=12 — $0.002/call
  - Params:
    - principal (number, required): Principal
    - annualRate (number, required): Annual rate %
    - years (number, required): Years
    - timesPerYear (string, one of (1 | 2 | 4 | 12 | 52 | 365), optional): Compounding
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/compound-interest-calculator?principal=10000&annualRate=5&years=10&timesPerYear=12 — 10,000 at 5% for 10 years, monthly
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/compound-interest-calculator?principal=5000&annualRate=7&years=20&timesPerYear=1 — 5,000 at 7% for 20 years, annually
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/compound-interest-calculator?principal=50000&annualRate=3&years=5&timesPerYear=365 — 50,000 at 3% for 5 years, daily
  - Method: A = P × (1 + r/n)^(n·t), where r = annual rate, n = compounds per year, t = years
  - FAQ: Which compounding frequency earns the most? → More frequent compounding always earns more at the same nominal rate, but the gain shrinks: monthly vs daily is nearly identical for typical rates.
  - FAQ: What is the difference from APY? → APY is the effective annual yield including compounding. A 5% nominal rate compounded monthly equals ≈5.116% APY.
  - FAQ: Does this include regular deposits? → No — this is a single-deposit projection. Regular contributions use a future-value-of-annuity formula (planned for a separate tool).

### Fuel Cost Calculator

Calculate the liters of fuel a trip needs and its total cost from distance, consumption (L/100 km) and price per liter — with optional cost splitting between passengers.

- [Fuel Cost Calculator](https://agenttools-hub.vercel.app/calculators/fuel-cost-calculator): Calculate the liters of fuel a trip needs and its total cost from distance, consumption (L/100 km) and price per liter — with optional cost splitting between passengers.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/fuel-cost-calculator?distance=450&consumption=6.5&pricePerLiter=1.75&people=1 — $0.001/call
  - Params:
    - distance (number, required): Distance (km)
    - consumption (number, required): Consumption (L/100km)
    - pricePerLiter (number, required): Price per liter
    - people (number, optional): Split between
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/fuel-cost-calculator?distance=450&consumption=6.5&pricePerLiter=1.75&people=1 — 450 km at 6.5 L/100km, 1.75/L
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/fuel-cost-calculator?distance=1200&consumption=7.2&pricePerLiter=1.82&people=4 — 1,200 km road trip, 4 people
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/fuel-cost-calculator?distance=25&consumption=5.4&pricePerLiter=1.68&people=1 — 25 km commute, 5.4 L/100km
  - Method: liters = distance × consumption ÷ 100 · cost = liters × price per liter
  - FAQ: How do I convert from MPG? → US mpg ≈ 235.215 ÷ (L/100km); UK mpg ≈ 282.481 ÷ (L/100km). Divide to get L/100 km and enter it here.
  - FAQ: Does this include tolls or wear? → No — fuel only. For a full cost-per-km figure, add tolls, maintenance and depreciation separately.

### Reading Time Calculator

Estimate reading time from a word count at any reading speed. Defaults to 200 words per minute — the typical silent-reading speed for adults.

- [Reading Time Calculator](https://agenttools-hub.vercel.app/calculators/reading-time-calculator): Estimate reading time from a word count at any reading speed. Defaults to 200 words per minute — the typical silent-reading speed for adults.
  - API: GET https://agenttools-hub.vercel.app/api/v1/calculators/reading-time-calculator?words=1500&wpm=200 — $0.001/call
  - Params:
    - words (number, required): Word count
    - wpm (number, optional): 200 = silent reading · 130 = read aloud
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/reading-time-calculator?words=1500&wpm=200 — 1,500-word article
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/reading-time-calculator?words=300&wpm=200 — 300-word intro
  - Example: GET https://agenttools-hub.vercel.app/api/v1/calculators/reading-time-calculator?words=600&wpm=130 — 600-word wedding speech, read aloud
  - Method: minutes = words ÷ reading speed (words per minute)
  - FAQ: What is the average reading speed? → Adults average 200–250 wpm for non-fiction silently; reading aloud drops to roughly 130 wpm. Speed readers exceed 400 wpm with some comprehension loss.

## Converters

### Length Converter

Convert between metric and imperial length units: kilometers, meters, centimeters, millimeters, micrometers, nanometers, miles, yards, feet, inches and nautical miles.

- [Length Converter](https://agenttools-hub.vercel.app/converters/length-converter): Convert between metric and imperial length units: kilometers, meters, centimeters, millimeters, micrometers, nanometers, miles, yards, feet, inches and nautical miles.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/length-converter?value=1&from=km&to=m — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (km | m | cm | mm | um | nm | mi | yd | ft | in | nmi), required): From
    - to (string, one of (km | m | cm | mm | um | nm | mi | yd | ft | in | nmi), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/length-converter?value=1&from=km&to=m — 1 Kilometers in Meters
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/length-converter?value=100&from=km&to=m — 100 Kilometers in Meters
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/length-converter?value=5&from=m&to=km — 5 Meters in Kilometers
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/length-converter?value=2&from=km&to=cm — 2 Kilometers in Centimeters
  - Method: value × kmfactor ÷ target factor (all units relate to the m base)
  - FAQ: How many kilometers in a mile? → One mile is exactly 1.609344 kilometers by international agreement since 1959.
  - FAQ: How many feet in a meter? → One meter is 3.28084 feet (or about 3 ft 3.37 in).
  - FAQ: What is a nautical mile? → One nautical mile is exactly 1,852 meters — one arc-minute of latitude, used in aviation and marine navigation.

### Weight Converter

Convert between weight and mass units: metric tons, kilograms, grams, milligrams, pounds, ounces and stones with exact international definitions.

- [Weight Converter](https://agenttools-hub.vercel.app/converters/weight-converter): Convert between weight and mass units: metric tons, kilograms, grams, milligrams, pounds, ounces and stones with exact international definitions.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/weight-converter?value=1&from=t&to=kg — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (t | kg | g | mg | lb | oz | st), required): From
    - to (string, one of (t | kg | g | mg | lb | oz | st), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/weight-converter?value=1&from=t&to=kg — 1 Metric tons in Kilograms
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/weight-converter?value=100&from=t&to=kg — 100 Metric tons in Kilograms
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/weight-converter?value=5&from=kg&to=t — 5 Kilograms in Metric tons
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/weight-converter?value=2&from=t&to=g — 2 Metric tons in Grams
  - Method: value × tfactor ÷ target factor (all units relate to the kg base)
  - FAQ: How many pounds in a kilogram? → One kilogram is exactly 2.20462262185 pounds; the pound is defined as exactly 0.45359237 kg.
  - FAQ: How many grams in an ounce? → One avoirdupois ounce is exactly 28.349523125 grams. (A troy ounce, used for precious metals, is 31.1034768 g.)
  - FAQ: What is a stone? → A stone is 14 pounds (6.35029318 kg), still commonly used for body weight in the UK and Ireland.

### Temperature Converter

Convert between Celsius, Fahrenheit and Kelvin with exact formulas, reference points (freezing and boiling water) and step-by-step working.

- [Temperature Converter](https://agenttools-hub.vercel.app/converters/temperature-converter): Convert between Celsius, Fahrenheit and Kelvin with exact formulas, reference points (freezing and boiling water) and step-by-step working.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/temperature-converter?value=20&from=c&to=f — $0.001/call
  - Params:
    - value (number, required): Temperature
    - from (string, one of (c | f | k), optional): From
    - to (string, one of (f | c | k), optional): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/temperature-converter?value=20&from=c&to=f — 20 °C in Fahrenheit
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/temperature-converter?value=98.6&from=f&to=c — 98.6 °F in Celsius
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/temperature-converter?value=300&from=k&to=c — 300 K in Celsius
  - Method: °F = °C × 1.8 + 32 · K = °C + 273.15
  - FAQ: At what temperature are Celsius and Fahrenheit equal? → −40° — minus 40 Celsius and minus 40 Fahrenheit are the same temperature.
  - FAQ: Why does Kelvin have no degree sign? → Kelvin is an absolute scale starting at absolute zero; by SI convention its values are written as K, not °K.
  - FAQ: What is absolute zero in Fahrenheit? → Absolute zero (0 K) is −273.15 °C, which equals −459.67 °F.

### Data Size Converter

Convert digital storage units: bits, bytes, KB, MB, GB, TB (decimal, ×1000) and KiB, MiB, GiB, TiB (binary, ×1024) — both systems side by side.

- [Data Size Converter](https://agenttools-hub.vercel.app/converters/data-size-converter): Convert digital storage units: bits, bytes, KB, MB, GB, TB (decimal, ×1000) and KiB, MiB, GiB, TiB (binary, ×1024) — both systems side by side.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/data-size-converter?value=1&from=TB&to=GB — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (TB | GB | MB | KB | B | TiB | GiB | MiB | KiB), required): From
    - to (string, one of (TB | GB | MB | KB | B | TiB | GiB | MiB | KiB), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/data-size-converter?value=1&from=TB&to=GB — 1 Terabytes in Gigabytes
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/data-size-converter?value=100&from=TB&to=GB — 100 Terabytes in Gigabytes
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/data-size-converter?value=5&from=GB&to=TB — 5 Gigabytes in Terabytes
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/data-size-converter?value=2&from=TB&to=MB — 2 Terabytes in Megabytes
  - Method: value × TBfactor ÷ target factor (all units relate to the B base)
  - FAQ: Why does my 1 TB drive show 931 GB? → The drive is 1,000,000,000,000 bytes (1 TB decimal); the OS divides by 1024³ and reports ≈931 GiB — same bytes, different units.
  - FAQ: What is the difference between KB and KiB? → KB (kilobyte) = 1,000 bytes (SI decimal). KiB (kibibyte) = 1,024 bytes (binary, 2¹⁰). The same pattern applies to MB/MiB and GB/GiB.
  - FAQ: How many MB in a GB? → 1,000 MB in a decimal gigabyte, or 1,024 MB if both are interpreted as binary units (which would properly be written MiB/GiB).

### Speed Converter

Convert speed units: kilometers per hour, miles per hour, meters per second, knots and feet per second with exact definitions.

- [Speed Converter](https://agenttools-hub.vercel.app/converters/speed-converter): Convert speed units: kilometers per hour, miles per hour, meters per second, knots and feet per second with exact definitions.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/speed-converter?value=1&from=kmh&to=mph — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (kmh | mph | ms | kn | fts), required): From
    - to (string, one of (kmh | mph | ms | kn | fts), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/speed-converter?value=1&from=kmh&to=mph — 1 Kilometers per hour in Miles per hour
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/speed-converter?value=100&from=kmh&to=mph — 100 Kilometers per hour in Miles per hour
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/speed-converter?value=5&from=mph&to=kmh — 5 Miles per hour in Kilometers per hour
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/speed-converter?value=2&from=kmh&to=ms — 2 Kilometers per hour in Meters per second
  - Method: value × km/hfactor ÷ target factor (all units relate to the m/s base)
  - FAQ: How fast is 100 km/h in mph? → 100 km/h ≈ 62.14 mph. The exact factor is 1 km/h = 0.621371 mph.
  - FAQ: What is a knot? → One knot is one nautical mile (1,852 m) per hour ≈ 1.852 km/h ≈ 1.151 mph — the standard speed unit in aviation and marine navigation.
  - FAQ: How do I convert m/s to km/h? → Multiply by 3.6. For example 30 m/s = 108 km/h.

### Area Converter

Convert area units: square millimeters, centimeters, meters and kilometers, hectares, acres, square feet and square miles.

- [Area Converter](https://agenttools-hub.vercel.app/converters/area-converter): Convert area units: square millimeters, centimeters, meters and kilometers, hectares, acres, square feet and square miles.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/area-converter?value=1&from=km2&to=ha — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (km2 | ha | acre | m2 | ft2 | mi2 | cm2), required): From
    - to (string, one of (km2 | ha | acre | m2 | ft2 | mi2 | cm2), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/area-converter?value=1&from=km2&to=ha — 1 Square kilometers in Hectares
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/area-converter?value=100&from=km2&to=ha — 100 Square kilometers in Hectares
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/area-converter?value=5&from=ha&to=km2 — 5 Hectares in Square kilometers
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/area-converter?value=2&from=km2&to=acre — 2 Square kilometers in Acres
  - Method: value × km²factor ÷ target factor (all units relate to the m² base)
  - FAQ: How big is one acre? → One acre is 4,046.8564224 m², about 4,047 m² — roughly 40% of a hectare or a football pitch without the ends.
  - FAQ: How many square feet in a square meter? → One square meter is 10.7639 square feet.
  - FAQ: Hectare vs acre — which is bigger? → A hectare (10,000 m²) is about 2.471 acres.

### Volume Converter

Convert cooking and liquid volume units: milliliters, liters, cubic meters, US gallons, quarts, pints, cups, fluid ounces, tablespoons and teaspoons.

- [Volume Converter](https://agenttools-hub.vercel.app/converters/volume-converter): Convert cooking and liquid volume units: milliliters, liters, cubic meters, US gallons, quarts, pints, cups, fluid ounces, tablespoons and teaspoons.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/volume-converter?value=1&from=m3&to=L — $0.001/call
  - Params:
    - value (number, required): Value
    - from (string, one of (m3 | L | ml | gal | qt | pt | cup | floz | tbsp | tsp), required): From
    - to (string, one of (m3 | L | ml | gal | qt | pt | cup | floz | tbsp | tsp), required): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/volume-converter?value=1&from=m3&to=L — 1 Cubic meters in Liters
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/volume-converter?value=100&from=m3&to=L — 100 Cubic meters in Liters
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/volume-converter?value=5&from=L&to=m3 — 5 Liters in Cubic meters
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/volume-converter?value=2&from=m3&to=ml — 2 Cubic meters in Milliliters
  - Method: value × m³factor ÷ target factor (all units relate to the L base)
  - FAQ: How many liters in a US gallon? → One US liquid gallon is exactly 3.785411784 liters. (The imperial gallon used in the UK is 4.54609 L.)
  - FAQ: How many tablespoons in a cup? → 16 US tablespoons in one US cup; 48 teaspoons per cup.
  - FAQ: Is a US cup the same as a metric cup? → No — a US legal cup is 240 mL and a US customary cup 236.59 mL; this converter uses the customary 236.59 mL definition. A metric cup (250 mL) is a different, rounder unit.

### Unix Timestamp Converter

Convert Unix epoch timestamps to ISO/UTC dates and back. Millisecond timestamps are detected automatically; invalid dates are rejected with clear errors.

- [Unix Timestamp Converter](https://agenttools-hub.vercel.app/converters/unix-timestamp-converter): Convert Unix epoch timestamps to ISO/UTC dates and back. Millisecond timestamps are detected automatically; invalid dates are rejected with clear errors.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/unix-timestamp-converter?op=to_date&value=1735689600 — $0.001/call
  - Params:
    - op (string, one of (to_date | to_timestamp), optional): Direction
    - value (text, required): Timestamp or date
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/unix-timestamp-converter?op=to_date&value=1735689600 — 1735689600 → date
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/unix-timestamp-converter?op=to_date&value=0 — 0 (epoch) → date
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/unix-timestamp-converter?op=to_timestamp&value=2026-01-01T00%3A00%3A00Z — 2026-01-01T00:00:00Z → timestamp
  - Method: ISO date = new Date(unixSeconds × 1000).toISOString() · seconds = floor(ms ÷ 1000)
  - FAQ: Is the Unix timestamp affected by time zones? → No — epoch time is absolute UTC. Time zones only matter when displaying the human-readable date.
  - FAQ: Will timestamps stop working in 2038? → Only 32-bit signed systems overflow on 2038-01-19. Modern 64-bit systems (including this API) are unaffected for billions of years.

### Roman Numeral Converter

Convert numbers to Roman numerals (1–3999) and Roman numerals back to numbers, with strict validation that rejects non-standard forms like IIIM or VX.

- [Roman Numeral Converter](https://agenttools-hub.vercel.app/converters/roman-numeral-converter): Convert numbers to Roman numerals (1–3999) and Roman numerals back to numbers, with strict validation that rejects non-standard forms like IIIM or VX.
  - API: GET https://agenttools-hub.vercel.app/api/v1/converters/roman-numeral-converter?value=2026&op=to_roman — $0.001/call
  - Params:
    - value (text, required): Number or numeral
    - op (string, one of (to_roman | from_roman), optional): Direction
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/roman-numeral-converter?value=2026&op=to_roman — 2026 → Roman
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/roman-numeral-converter?value=mmxxvi&op=from_roman — MMXXVI → number
  - Example: GET https://agenttools-hub.vercel.app/api/v1/converters/roman-numeral-converter?value=1994&op=to_roman — 1994 → Roman
  - Method: greedy decomposition: M(1000), CM(900), D(500), CD(400), C(100), XC(90), L(50), XL(40), X(10), IX(9), V(5), IV(4), I(1)
  - FAQ: What is the largest number in Roman numerals? → With the standard seven symbols and no overline notation, the range is 1–3999 (MMMCMXCIX).
  - FAQ: Why was my input rejected? → The converter only accepts standard-form numerals. Forms like IIII (instead of IV), VX or IIIM are historically incorrect and are rejected with an error.

## Databases

### Countries Database

Reference database of all 250 countries and territories: ISO 3166-1 codes, capitals, regions, population, area, currencies, languages, TLDs and calling codes. Look up a single country or list by region.

- [Countries Database](https://agenttools-hub.vercel.app/databases/countries): Reference database of all 250 countries and territories: ISO 3166-1 codes, capitals, regions, population, area, currencies, languages, TLDs and calling codes. Look up a single country or list by region.
  - API: GET https://agenttools-hub.vercel.app/api/v1/databases/countries?country=Germany — $0.002/call
  - Params:
    - country (text, optional): Leave empty to list countries instead.
    - region (string, one of ( | Africa | Americas | Asia | Europe | Oceania | Antarctic), optional): Region filter
    - limit (number, optional): Max rows
  - Example: GET https://agenttools-hub.vercel.app/api/v1/databases/countries?country=Germany — Profile for Germany
  - Example: GET https://agenttools-hub.vercel.app/api/v1/databases/countries?country=JP — Profile by ISO code
  - Example: GET https://agenttools-hub.vercel.app/api/v1/databases/countries?limit=10 — Most populous countries
  - FAQ: Which country identifiers can I search by? → The two-letter ISO 3166-1 alpha-2 code (e.g. "DE") or the English country name ("Germany"). Partial names also match.
  - FAQ: Where does the data come from? → The mledoze/countries open dataset, enriched with the latest World Bank population figures. Territorial units without population data show a dash.

## Live Data

### Current Time

Returns the current date and time in any IANA time zone, plus Unix seconds/milliseconds, ISO 8601, weekday and day-of-year. Use it whenever an agent needs to know 'now'.

- [Current Time](https://agenttools-hub.vercel.app/live/now): Returns the current date and time in any IANA time zone, plus Unix seconds/milliseconds, ISO 8601, weekday and day-of-year. Use it whenever an agent needs to know 'now'.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/now?tz=UTC — $0.0005/call
  - Params:
    - tz (text, optional): e.g. America/New_York, Europe/Berlin, Asia/Tokyo
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/now?tz=UTC — Now in UTC
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/now?tz=America%2FNew_York — Now in New York
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/now?tz=Asia%2FTokyo — Now in Tokyo
  - Method: now = server clock · local = UTC + fixed offset of the IANA zone (DST-aware)
  - FAQ: Why do agents need an API for the current time? → LLMs have no real-time clock and their training data is months stale. Any timestamp an agent 'remembers' is a hallucination — scheduling, logging and freshness checks all require a trusted time source.
  - FAQ: Which time zone names are accepted? → Any IANA name: UTC, America/New_York, Europe/Berlin, Asia/Tokyo, Australia/Sydney, etc. (but note: this deployment is in UTC, so both work).
  - FAQ: Is daylight saving time handled? → Yes — IANA zones carry full DST history and rules, and the returned offset reflects the correct DST state at this instant.

### Business Days Calculator

Count business days (Mon–Fri) between two dates, with weekend and holiday breakdown. Provide a country code and real public holidays (via Nager.Date) are excluded too.

- [Business Days Calculator](https://agenttools-hub.vercel.app/live/business-days): Count business days (Mon–Fri) between two dates, with weekend and holiday breakdown. Provide a country code and real public holidays (via Nager.Date) are excluded too.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/business-days?start=2026-09-01&end=2026-09-30 — $0.001/call
  - Params:
    - start (text, required): Start date
    - end (text, required): End date
    - country (text, optional): Excludes that country's public holidays
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/business-days?start=2026-09-01&end=2026-09-30 — September 2026, no holidays
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/business-days?start=2026-10-01&end=2026-12-31&country=DE — Q4 2026 in Germany (holidays excluded)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/business-days?start=2026-12-01&end=2026-12-31&country=US — US December (holidays excluded)
  - Method: business days = calendar days (inclusive) − weekend days − public holidays
  - FAQ: Is the end date included? → Yes — both start and end dates are included when they fall on business days.
  - FAQ: Where does the holiday data come from? → Nager.Date, a free public-holidays API covering ~110 countries, cached for 12 hours. If the holiday service is unreachable, weekends-only counting still works.

### Exchange Rates (Live)

Live foreign-exchange reference rates from the European Central Bank (via frankfurter.dev): a full rate table against any base currency, or cross-rate conversion of any amount. Refreshed every business day by the ECB, cached one hour.

- [Exchange Rates (Live)](https://agenttools-hub.vercel.app/live/exchange-rates): Live foreign-exchange reference rates from the European Central Bank (via frankfurter.dev): a full rate table against any base currency, or cross-rate conversion of any amount. Refreshed every business day by the ECB, cached one hour.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/exchange-rates?op=rates&base=USD — $0.002/call
  - Params:
    - op (string, one of (rates | convert), optional): Operation
    - base (string, one of (AUD | BRL | CAD | CHF | CNY | CZK | DKK | EUR | GBP | HKD | HUF | IDR | ILS | INR | ISK | JPY | KRW | MXN | MYR | NOK | NZD | PHP | PLN | RON | SEK | SGD | THB | TRY | USD | ZAR), optional): Base currency
    - from (string, one of ( | AUD | BRL | CAD | CHF | CNY | CZK | DKK | EUR | GBP | HKD | HUF | IDR | ILS | INR | ISK | JPY | KRW | MXN | MYR | NOK | NZD | PHP | PLN | RON | SEK | SGD | THB | TRY | USD | ZAR), optional): Convert from
    - to (string, one of ( | AUD | BRL | CAD | CHF | CNY | CZK | DKK | EUR | GBP | HKD | HUF | IDR | ILS | INR | ISK | JPY | KRW | MXN | MYR | NOK | NZD | PHP | PLN | RON | SEK | SGD | THB | TRY | USD | ZAR), optional): Convert to
    - amount (number, optional): Amount
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/exchange-rates?op=rates&base=USD — All rates vs USD
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/exchange-rates?op=convert&from=USD&to=EUR&amount=100 — 100 USD → EUR
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/exchange-rates?op=convert&from=JPY&to=GBP&amount=1000 — 1000 JPY → GBP
  - Method: cross rate: amount × (rate of FROM per EUR ÷ rate of TO per EUR), via ECB base
  - FAQ: How fresh are the rates? → The ECB publishes reference rates every business day around 16:00 CET. Results are cached server-side for one hour; the reference date is always included in the response.
  - FAQ: Are these tradable rates? → No — ECB reference rates are wholesale averages without retail spreads. Card and broker rates will differ by 0.5–3%.

### Weather (Live)

Live weather from Open-Meteo: current temperature, humidity, wind and conditions plus a 3-day forecast, by city name or coordinates. No API key, cached 30 minutes.

- [Weather (Live)](https://agenttools-hub.vercel.app/live/weather): Live weather from Open-Meteo: current temperature, humidity, wind and conditions plus a 3-day forecast, by city name or coordinates. No API key, cached 30 minutes.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/weather?city=Berlin — $0.002/call
  - Params:
    - city (text, optional): Or provide lat/lon instead
    - lat (number, optional): Latitude
    - lon (number, optional): Longitude
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/weather?city=Berlin — Weather in Berlin
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/weather?city=New%20York — Weather in New York
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/weather?lat=35.69&lon=139.69 — By coordinates (Tokyo)
  - FAQ: How accurate is the forecast? → Open-Meteo blends national weather models (ICON, GFS, ECMWF…); day-one forecasts are typically within 1–2 °C. Temperature is in Celsius by default.
  - FAQ: How fresh is the data? → Model runs update every 1–6 hours; responses are cached 30 minutes. The weather code follows the WMO standard (0 = clear sky, 61 = rain…).

### Public Holidays (Live)

List upcoming or full-year public holidays for any covered country via Nager.Date — names, dates and whether they're nationwide. Essential for scheduling agents.

- [Public Holidays (Live)](https://agenttools-hub.vercel.app/live/holidays): List upcoming or full-year public holidays for any covered country via Nager.Date — names, dates and whether they're nationwide. Essential for scheduling agents.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/holidays?country=DE&op=next&count=8 — $0.002/call
  - Params:
    - country (text, required): Country (ISO-2)
    - op (string, one of (next | year), optional): Query
    - year (number, optional): Year (for full-year list)
    - count (number, optional): Max results
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/holidays?country=DE&op=next&count=8 — Upcoming in Germany
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/holidays?country=US&op=year&year=2026&count=12 — US holidays 2026
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/holidays?country=BR&op=next&count=5 — Upcoming in Brazil
  - FAQ: Which countries are covered? → About 110 countries with official public-holiday calendars (all of Europe, the Americas, much of Asia and Oceania). Unsupported codes return a clear error.
  - FAQ: What does 'regional' mean? → Some holidays apply only to certain states or regions; the `global` flag distinguishes nationwide holidays from regional ones.

### IP Geolocation (Live)

Geolocate any IPv4/IPv6 address (or the caller's own IP when omitted) via ipwho.is: country, region, city, coordinates, timezone, ASN/network owner and currency. Cached 24 hours per IP.

- [IP Geolocation (Live)](https://agenttools-hub.vercel.app/live/ip-lookup): Geolocate any IPv4/IPv6 address (or the caller's own IP when omitted) via ipwho.is: country, region, city, coordinates, timezone, ASN/network owner and currency. Cached 24 hours per IP.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/ip-lookup?ip=8.8.8.8 — $0.002/call
  - Params:
    - ip (text, optional): Leave empty to look up the caller's IP
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/ip-lookup?ip=8.8.8.8 — Google DNS
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/ip-lookup?ip=1.1.1.1 — Cloudflare DNS
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/ip-lookup?ip=2606%3A4700%3A4700%3A%3A1111 — IPv6 example
  - FAQ: How accurate is IP geolocation? → Country-level is ~99% accurate; city-level is approximate (often the ISP hub, ±50 km). Good enough for personalization, never for safety-critical decisions.
  - FAQ: What happens for private IPs like 192.168.x.x? → Reserved and private ranges can't be geolocated; the API returns a clear error explaining this.

### DNS Lookup (Live)

Query live DNS records (A, AAAA, MX, TXT, NS, CNAME, SOA) through Cloudflare's DNS-over-HTTPS resolver. Domain validation, email deliverability pre-checks and infrastructure discovery.

- [DNS Lookup (Live)](https://agenttools-hub.vercel.app/live/dns-lookup): Query live DNS records (A, AAAA, MX, TXT, NS, CNAME, SOA) through Cloudflare's DNS-over-HTTPS resolver. Domain validation, email deliverability pre-checks and infrastructure discovery.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/dns-lookup?domain=example.com&type=A — $0.002/call
  - Params:
    - domain (text, required): Domain
    - type (string, one of (A | AAAA | MX | TXT | NS | CNAME | SOA), optional): Record type
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/dns-lookup?domain=example.com&type=A — A records for example.com
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/dns-lookup?domain=gmail.com&type=MX — MX records for gmail.com
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/dns-lookup?domain=google.com&type=TXT — TXT records for google.com
  - FAQ: How do I check if a domain can receive email? → Query MX: no MX records (and no A/AAAA fallback) means the domain cannot receive mail.
  - FAQ: Why DNS-over-HTTPS instead of a resolver library? → Serverless platforms don't expose UDP port 53. DoH gives identical data over HTTPS — and Cloudflare's resolver is anycast, fast and free.

### URL Metadata (Live)

Fetch a URL server-side and extract its title, meta description, Open Graph and Twitter card tags, canonical URL and favicon — the data agents need to preview or classify a link. SSRF-guarded: private networks are blocked, 10s timeout, 1MB cap.

- [URL Metadata (Live)](https://agenttools-hub.vercel.app/live/url-metadata): Fetch a URL server-side and extract its title, meta description, Open Graph and Twitter card tags, canonical URL and favicon — the data agents need to preview or classify a link. SSRF-guarded: private networks are blocked, 10s timeout, 1MB cap.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/url-metadata?url=https%3A%2F%2Fexample.com — $0.003/call
  - Params:
    - url (text, required): URL
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/url-metadata?url=https%3A%2F%2Fexample.com — Inspect example.com
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/url-metadata?url=https%3A%2F%2Fwww.x402.org — x402 protocol site
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/url-metadata?url=https%3A%2F%2Fblog.google — A blog post
  - FAQ: What is SSRF protection and why does it matter? → A URL-fetching service can be abused to probe internal networks. This tool resolves the hostname first and refuses private/loopback/link-local addresses, follows redirects manually with re-validation, and caps response size and time.
  - FAQ: Does it render JavaScript? → No — it reads the served HTML. Most sites put Open Graph tags in static HTML precisely for social crawlers, so coverage is high.

### QR Code Generator

Generate a QR code for any text, URL or crypto address: returns ready-to-embed SVG markup and a data URI, with configurable size and error-correction level.

- [QR Code Generator](https://agenttools-hub.vercel.app/live/qr-code): Generate a QR code for any text, URL or crypto address: returns ready-to-embed SVG markup and a data URI, with configurable size and error-correction level.
  - API: GET https://agenttools-hub.vercel.app/api/v1/live/qr-code?text=https%3A%2F%2Fexample.com&size=300&ec=M — $0.002/call
  - Params:
    - text (text, required): Content
    - size (number, optional): Size (px)
    - ec (string, one of (L | M | Q | H), optional): Error correction
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/qr-code?text=https%3A%2F%2Fexample.com&size=300&ec=M — QR for a URL
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/qr-code?text=bitcoin%3Abc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh&size=400&ec=Q — QR for a crypto address
  - Example: GET https://agenttools-hub.vercel.app/api/v1/live/qr-code?text=WIFI%3AT%3AWPA%3BS%3AMyNetwork%3BP%3Asecret123%3B%3B&size=300&ec=M — QR for wifi-style text
  - FAQ: SVG or PNG? → Both come back on every call: `result.svg` is an inline SVG string and `result.dataUrl` is a PNG data URI. Use SVG on the web, the data URI anywhere raster is required.
  - FAQ: How much content fits in a QR code? → Up to ~2900 alphanumeric characters, but scannability drops as density rises. URLs under ~300 characters scan best, especially at error-correction level Q or H.

## Dev Tools

### Base64 Encoder / Decoder

Encode text to base64 or decode base64 back to text. Full UTF-8 support including emoji and non-Latin scripts.

- [Base64 Encoder / Decoder](https://agenttools-hub.vercel.app/dev/base64-encode): Encode text to base64 or decode base64 back to text. Full UTF-8 support including emoji and non-Latin scripts.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/base64-encode?text=Hello%2C%20world!&direction=encode — $0.001/call
  - Params:
    - text (text, required): Text
    - direction (string, one of (encode | decode), optional): Direction
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/base64-encode?text=Hello%2C%20world!&direction=encode — Encode "Hello, world!"
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/base64-encode?text=h%C3%A9llo%20%F0%9F%8C%8D&direction=encode — Encode "héllo 🌍"
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/base64-encode?text=SGVsbG8sIHdvcmxkIQ%3D%3D&direction=decode — Decode "SGVsbG8sIHdvcmxkIQ=="
  - Method: Base64 maps every 3 bytes of input to 4 ASCII characters, padding the final group with = so the output length is a multiple of 4.
  - FAQ: Is base64 encryption? → No. Base64 is a reversible encoding, not encryption — anyone can decode it. Never use it to protect secrets.
  - FAQ: Why does my decoded output look wrong? → The input is probably not valid base64, or it contains whitespace or URL-safe characters (- and _). This tool accepts standard base64 with padding.
  - FAQ: Does it support emoji and non-Latin text? → Yes. Input is encoded as UTF-8 before the base64 step, so any Unicode text round-trips correctly.

### Number Base Converter

Convert integers between any bases from 2 to 36 — binary, octal, decimal, hexadecimal and beyond — with BigInt precision (no limit on magnitude).

- [Number Base Converter](https://agenttools-hub.vercel.app/dev/number-base-converter): Convert integers between any bases from 2 to 36 — binary, octal, decimal, hexadecimal and beyond — with BigInt precision (no limit on magnitude).
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/number-base-converter?value=ff&from=16&to=10 — $0.001/call
  - Params:
    - value (text, required): Digits valid for the source base
    - from (number, required): From base (2–36)
    - to (number, required): To base (2–36)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/number-base-converter?value=ff&from=16&to=10 — ff hex → decimal
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/number-base-converter?value=1010&from=2&to=16 — 1010 binary → hex
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/number-base-converter?value=255&from=10&to=2 — 255 decimal → binary
  - Method: decimal value = Σ digitᵢ × baseⁱ · target digits = repeated division by the target base
  - FAQ: Which digits are valid in base 36? → 0–9 then a–z, giving 36 digits total. Case is accepted and normalized to lowercase in output.
  - FAQ: Are there precision limits? → No. Conversion uses BigInt, so values far beyond Number.MAX_SAFE_INTEGER — like Ethereum private keys or SHA-256 hashes — convert exactly.

### Case Converter

Convert text between nine letter cases: UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE. camelCase boundaries are split automatically.

- [Case Converter](https://agenttools-hub.vercel.app/dev/case-converter): Convert text between nine letter cases: UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE. camelCase boundaries are split automatically.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/case-converter?text=hello%20world&style=camel — $0.001/call
  - Params:
    - text (text, required): Text
    - style (string, one of (upper | lower | title | sentence | camel | pascal | snake | kebab | constant), optional): Convert to
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/case-converter?text=hello%20world&style=camel — "hello world" → camelCase
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/case-converter?text=UserProfileView&style=snake — "UserProfileView" → snake_case
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/case-converter?text=the%20quick%20brown%20fox&style=title — "the quick brown fox" → Title Case
  - Method: words = split on non-alphanumerics + camelCase boundaries · then join per target convention
  - FAQ: What is the difference between camelCase and PascalCase? → camelCase starts with a lowercase letter (getUserById); PascalCase capitalizes every word including the first (GetUserById).
  - FAQ: When is CONSTANT_CASE used? → Constant names in many languages, e.g. MAX_RETRIES = 3. It is snake_case with all letters capitalized.

### JWT Decoder

Decode a JSON Web Token's header and payload to readable JSON. Pure decoding: signatures are NOT verified and no secret is needed. Claims like exp and iat are rendered as dates.

- [JWT Decoder](https://agenttools-hub.vercel.app/dev/jwt-decoder): Decode a JSON Web Token's header and payload to readable JSON. Pure decoding: signatures are NOT verified and no secret is needed. Claims like exp and iat are rendered as dates.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/jwt-decoder?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNzAwMDAwMDAwfQ.dummy_signature_part — $0.001/call
  - Params:
    - token (text, required): header.payload.signature
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/jwt-decoder?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNzAwMDAwMDAwfQ.dummy_signature_part — Typical HS256 token
  - Method: JWT = base64url(header) + '.' + base64url(payload) + '.' + base64url(signature)
  - FAQ: Is decoding a JWT safe? → Yes — anyone can decode any JWT because the parts are plain base64url. Never put secrets in a JWT payload for this reason.
  - FAQ: Does this tool verify the signature? → No. Verification needs the signing key (HMAC secret or RSA/ECDSA public key) and should happen in your backend. This tool decodes only.
  - FAQ: What does the exp claim mean? → Expiration time as a Unix timestamp. If present, it is rendered as an ISO date and flagged when already in the past.

### URL Encoder / Decoder

Percent-encode text for safe inclusion in URLs and query strings, or decode percent-encoded text back. Uses the standard encodeURIComponent rules.

- [URL Encoder / Decoder](https://agenttools-hub.vercel.app/dev/url-encoder): Percent-encode text for safe inclusion in URLs and query strings, or decode percent-encoded text back. Uses the standard encodeURIComponent rules.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/url-encoder?text=hello%20world%20%26%20more&op=encode — $0.001/call
  - Params:
    - text (text, required): Text
    - op (string, one of (encode | decode), optional): Direction
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-encoder?text=hello%20world%20%26%20more&op=encode — Encode "hello world & more"
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-encoder?text=Gr%C3%BC%C3%9Fe%20%E2%98%BA&op=encode — Encode "Grüße ☺"
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-encoder?text=hello%2520world%2526more&op=decode — Decode "hello%20world%26more"
  - Method: byte → '%' + two hex digits (all bytes except A–Z a–z 0–9 - _ . ! ~ * ' ( ))
  - FAQ: When do I need to URL-encode? → Whenever a value goes into a query string and contains spaces, & (the parameter separator), = (the key/value separator), or non-ASCII characters.
  - FAQ: What is the difference from base64? → Both make text transport-safe, but percent-encoding stays human-readable and URL-native; base64 is more compact for binary data but not URL-safe without the base64url variant.

### JSON Formatter / Validator

Validate JSON with precise error messages, pretty-print it with any indent, and inspect its top-level type and element counts.

- [JSON Formatter / Validator](https://agenttools-hub.vercel.app/dev/json-formatter): Validate JSON with precise error messages, pretty-print it with any indent, and inspect its top-level type and element counts.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/json-formatter?json=%7B%22name%22%3A%22Ada%22%2C%22langs%22%3A%5B%22ts%22%2C%22py%22%5D%2C%22active%22%3Atrue%7D&indent=2 — $0.001/call
  - Params:
    - json (text, required): JSON
    - indent (number, optional): Indent spaces
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/json-formatter?json=%7B%22name%22%3A%22Ada%22%2C%22langs%22%3A%5B%22ts%22%2C%22py%22%5D%2C%22active%22%3Atrue%7D&indent=2 — Compact object → pretty
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/json-formatter?json=%5B1%2C2%2C3%5D&indent=2 — Array of numbers
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/json-formatter?json=%7B%22user%22%3A%7B%22id%22%3A7%2C%22tags%22%3A%5B%22a%22%2C%22b%22%5D%7D%7D&indent=4 — Nested structure
  - Method: JSON.parse(text) → value · JSON.stringify(value, null, indent) → formatted text
  - FAQ: What are the most common JSON errors? → Trailing commas, single quotes instead of double quotes, unquoted keys, and comments (JSON has none). The error message pinpoints the position.
  - FAQ: Is my data stored anywhere? → No. Formatting is a pure function executed in the request; nothing is logged or persisted.

### HTTP Status Codes Database

Reference database of HTTP response status codes with phrase, category and explanation. Look up a specific code or list a whole category (1xx–5xx).

- [HTTP Status Codes Database](https://agenttools-hub.vercel.app/dev/http-status-codes): Reference database of HTTP response status codes with phrase, category and explanation. Look up a specific code or list a whole category (1xx–5xx).
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/http-status-codes?code=402 — $0.001/call
  - Params:
    - code (number, optional): Leave empty to list by category
    - category (string, one of ( | informational | success | redirect | client-error | server-error), optional): Category
    - limit (number, optional): Max rows
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/http-status-codes?code=402 — What is HTTP 402?
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/http-status-codes?category=client-error&limit=20 — All client errors
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/http-status-codes?code=301 — What is 301?
  - FAQ: What is the difference between 401 and 403? → 401 means 'who are you?' — authenticate first. 403 means 'I know who you are and you still can't do this'.
  - FAQ: Is 402 Payment Required actually used? → Historically reserved, now actively used by the x402 protocol: APIs return 402 with payment requirements and AI agents pay USDC before retrying.

### MIME Types Database

Look up MIME content types by type substring or file extension, or list a category — covering text, application, image, audio, video, font and multipart types used in web APIs.

- [MIME Types Database](https://agenttools-hub.vercel.app/dev/mime-types): Look up MIME content types by type substring or file extension, or list a category — covering text, application, image, audio, video, font and multipart types used in web APIs.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/mime-types?query=.png — $0.001/call
  - Params:
    - query (text, optional): MIME substring or file extension
    - category (string, one of ( | text | application | image | audio | video | font | multipart | model), optional): Category
    - limit (number, optional): Max rows
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/mime-types?query=.png — What MIME type is .png?
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/mime-types?query=json — JSON-related types
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/mime-types?category=image&limit=10 — All image types
  - FAQ: What MIME type should a JSON API return? → application/json. It is also the correct type for OpenAPI specs and machine-readable agent docs like this site's /api/openapi.json.
  - FAQ: What is the MIME type for files with no extension? → application/octet-stream is the generic fallback for unknown binary data and triggers a download in browsers.

### Token Estimator

Estimate how many tokens a text consumes for each major model family (GPT, Claude, Gemini, Llama, DeepSeek) using a character/word heuristic that is within ~10% of real BPE tokenizers — enough for context budgeting and cost math, with zero dependencies.

- [Token Estimator](https://agenttools-hub.vercel.app/dev/token-estimator): Estimate how many tokens a text consumes for each major model family (GPT, Claude, Gemini, Llama, DeepSeek) using a character/word heuristic that is within ~10% of real BPE tokenizers — enough for context budgeting and cost math, with zero dependencies.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/token-estimator?text=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog.%20Pack%20my%20box%20with%20five%20dozen%20liquor%20jugs. — $0.001/call
  - Params:
    - text (text, required): Text
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/token-estimator?text=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog.%20Pack%20my%20box%20with%20five%20dozen%20liquor%20jugs. — One paragraph
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/token-estimator?text=function%20sum(a%2C%20b)%20%7B%20return%20a%20%2B%20b%3B%20%7D%20%2F%2F%20adds%20two%20numbers — A code snippet
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/token-estimator?text=%E4%BA%BA%E5%B7%A5%E7%9F%A5%E8%83%BD%E3%81%AF%E4%B8%96%E7%95%8C%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B — CJK text
  - Method: tokens ≈ CJK × 1.1 + blend(other chars ÷ 3.7, words × 1.32), then × per-model factor
  - FAQ: How accurate is the estimate? → Within ±10% for typical prose and code. Tokenizers differ per model (o200k, Claude, Gemini SentencePiece), so exact counts require the vendor's tokenizer — this tool trades that precision for speed and zero dependencies.
  - FAQ: Why do Claude/Gemini counts differ from GPT? → Different tokenizers with different vocabularies. Empirically Claude counts run ~6% above o200k and Gemini ~12% for English text — the multipliers encode that.

### LLM API Cost Calculator

Calculate the API cost of an LLM call: input and output tokens × published per-million prices for 15 current models (OpenAI, Anthropic, Google, DeepSeek, xAI, Meta). Batch multiplier included for monthly estimates.

- [LLM API Cost Calculator](https://agenttools-hub.vercel.app/dev/llm-cost-calculator): Calculate the API cost of an LLM call: input and output tokens × published per-million prices for 15 current models (OpenAI, Anthropic, Google, DeepSeek, xAI, Meta). Batch multiplier included for monthly estimates.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/llm-cost-calculator?inputTokens=12000&outputTokens=1500&model=gpt-4o&calls=1 — $0.001/call
  - Params:
    - inputTokens (number, required): Input tokens
    - outputTokens (number, optional): Output tokens
    - model (string, one of (gpt-5 | gpt-5-mini | gpt-4.1 | gpt-4.1-mini | gpt-4o | o4-mini | claude-opus-4 | claude-sonnet-4 | claude-haiku-4 | gemini-2.5-pro | gemini-2.5-flash | gemini-2.0-flash | deepseek-v3 | grok-3 | llama-4-maverick), optional): Model
    - calls (number, optional): Number of calls
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/llm-cost-calculator?inputTokens=12000&outputTokens=1500&model=gpt-4o&calls=1 — Typical chat call (12k in / 1.5k out) on gpt-4o
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/llm-cost-calculator?inputTokens=50000&outputTokens=2000&model=claude-sonnet-4&calls=1000 — 1000 calls/day on claude-sonnet-4
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/llm-cost-calculator?inputTokens=100000&outputTokens=5000&model=gemini-2.5-flash&calls=10 — Cheap batch on gemini-2.5-flash
  - Method: cost = inputTokens ÷ 1e6 × input$/M + outputTokens ÷ 1e6 × output$/M, × calls
  - FAQ: How current are the prices? → The pricing table is curated manually (last update September 2026) and vendors change prices frequently — always confirm against official pricing pages before budgeting.
  - FAQ: Are cached-input or batch discounts included? → No — this is list price for uncached input and standard-priority output. Many vendors offer 50–90% cached-input discounts and ~50% batch discounts.

### Text Chunker

Split text into retrieval-friendly chunks with a token budget and sentence-aware boundaries. Overlap between consecutive chunks preserves context across splits — the standard preparation step before embedding.

- [Text Chunker](https://agenttools-hub.vercel.app/dev/text-chunker): Split text into retrieval-friendly chunks with a token budget and sentence-aware boundaries. Overlap between consecutive chunks preserves context across splits — the standard preparation step before embedding.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/text-chunker?text=Retrieval-augmented%20generation%20improves%20factuality.%20First%2C%20documents%20are%20split%20into%20chunks.%20Second%2C%20chunks%20are%20embedded%20into%20vectors.%20Third%2C%20the%20agent%20retrieves%20the%20top%20matches%20for%20a%20query.%20Overlap%20keeps%20ideas%20that%20straddle%20boundaries%20intact.%20Finally%2C%20the%20model%20answers%20with%20citations.&targetTokens=60&overlapTokens=15 — $0.002/call
  - Params:
    - text (text, required): Text
    - targetTokens (number, optional): Target tokens per chunk
    - overlapTokens (number, optional): Overlap tokens
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/text-chunker?text=Retrieval-augmented%20generation%20improves%20factuality.%20First%2C%20documents%20are%20split%20into%20chunks.%20Second%2C%20chunks%20are%20embedded%20into%20vectors.%20Third%2C%20the%20agent%20retrieves%20the%20top%20matches%20for%20a%20query.%20Overlap%20keeps%20ideas%20that%20straddle%20boundaries%20intact.%20Finally%2C%20the%20model%20answers%20with%20citations.&targetTokens=60&overlapTokens=15 — Small doc, 200-token chunks
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/text-chunker?text=The%20grass%20is%20green.%20The%20sky%20is%20blue.%20Water%20is%20wet.%20Fire%20is%20hot.%20Snow%20is%20cold.%20Rain%20falls%20down.%20Sun%20rises%20east.%20Moon%20glows%20night.%20Stars%20twinkle%20far.%20Wind%20blows%20soft. — Default 500-token chunks
  - Method: chunks = pack(sentences, budget = targetTokens, carry = overlapTokens)
  - FAQ: How big should chunks be? → For most embedding models, 300–800 tokens with 10–20% overlap works well. Small chunks retrieve precisely; large chunks preserve context — tune by eval.
  - FAQ: Where are the full chunks? → In `result.artifacts.chunks` as a JSON array of {index, estTokens, text}. The web page shows only previews.

### Hash Calculator

Compute exact hash digests of UTF-8 text using Web Crypto (SHA family) and a verified pure-JS MD5 for legacy checksums. Deterministic — identical input always yields the identical digest.

- [Hash Calculator](https://agenttools-hub.vercel.app/dev/hash): Compute exact hash digests of UTF-8 text using Web Crypto (SHA family) and a verified pure-JS MD5 for legacy checksums. Deterministic — identical input always yields the identical digest.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/hash?text=hello&algo=sha256 — $0.001/call
  - Params:
    - text (text, required): Text
    - algo (string, one of (sha256 | sha512 | sha1 | md5), optional): Algorithm
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/hash?text=hello&algo=sha256 — SHA-256 of "hello"
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/hash?text=test%20seed%20phrase&algo=sha512 — SHA-512 of a seed phrase
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/hash?text=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog&algo=md5 — MD5 of the classic pangram
  - FAQ: Is MD5 safe? → No for security (collisions are practical), yes for non-adversarial checksums like dedup keys. Prefer SHA-256 everywhere new.
  - FAQ: Is the input hashed as UTF-8? → Yes — text is encoded as UTF-8 first. Hashing binary files requires hashing their bytes, not a text rendering.

### UUID Generator / Validator

Generate cryptographically random UUIDv4s or time-sortable UUIDv7s from a real CSPRNG, and validate any UUID's format, version and variant bits.

- [UUID Generator / Validator](https://agenttools-hub.vercel.app/dev/uuid): Generate cryptographically random UUIDv4s or time-sortable UUIDv7s from a real CSPRNG, and validate any UUID's format, version and variant bits.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/uuid?op=generate&version=v4 — $0.001/call
  - Params:
    - op (string, one of (generate | validate), optional): Operation
    - version (string, one of (v4 | v7), optional): Version (generate)
    - value (text, optional): UUID (validate)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/uuid?op=generate&version=v4 — Generate v4
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/uuid?op=generate&version=v7 — Generate v7 (sortable)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/uuid?op=validate&value=123e4567-e89b-42d3-a456-426614174000 — Validate a UUID
  - FAQ: v4 or v7? → v4 when randomness should leak nothing; v7 when IDs double as sort keys — it embeds the millisecond timestamp, making B-tree inserts sequential.
  - FAQ: Are generated UUIDs unique? → v4 has 122 random bits — collision odds are negligible for any realistic volume. v7 uniqueness rests on the timestamp plus 74 random bits.

### Text Extractor

Scan unstructured text and extract structured entities: email addresses, URLs, IPv4 addresses, phone numbers and domains. Deduplicated, categorized, machine-ready.

- [Text Extractor](https://agenttools-hub.vercel.app/dev/text-extract): Scan unstructured text and extract structured entities: email addresses, URLs, IPv4 addresses, phone numbers and domains. Deduplicated, categorized, machine-ready.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/text-extract?text=Reach%20Jane%20at%20jane.doe%40acme-corp.io%2C%20sales%40acme-corp.io%20or%20%2B49%2030%201234567.%20Site%3A%20https%3A%2F%2Facme-corp.io%2Fpricing%20and%20CDN%20151.101.1.140.%20Backup%20mail%20host%3A%20mail.acme-corp.io — $0.002/call
  - Params:
    - text (text, required): Text
    - what (string, one of (all | emails | urls | ips | phones | domains), optional): Extract
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/text-extract?text=Reach%20Jane%20at%20jane.doe%40acme-corp.io%2C%20sales%40acme-corp.io%20or%20%2B49%2030%201234567.%20Site%3A%20https%3A%2F%2Facme-corp.io%2Fpricing%20and%20CDN%20151.101.1.140.%20Backup%20mail%20host%3A%20mail.acme-corp.io — Mixed contact info
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/text-extract?text=Docs%20at%20https%3A%2F%2Fdocs.example.com%2Fapi%20and%20http%3A%2F%2Fblog.example.org%3Fv%3D2%23section&what=urls — URLs only
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/text-extract?text=Connected%20to%208.8.8.8%2C%20then%20192.168.1.1%20(local)%2C%20then%202606%3Afalse%20fallback%201.1.1.1&what=ips — IPs in a log line
  - FAQ: How reliable is phone extraction? → Phones are the loosest pattern (formats vary wildly worldwide). Results are 'candidates' — for decision-grade phone validation, combine with a libphonenumber-based service.
  - FAQ: Does URL extraction catch domains without protocol? → Bare domains are matched by the separate `domains` pattern with a curated TLD list; full URLs require http/https prefixes.

### Text Diff

Compare two texts line by line using an LCS diff: exact additions, removals and context — in unified-diff style. Deterministic, unlike asking a model to 'find the differences'.

- [Text Diff](https://agenttools-hub.vercel.app/dev/diff): Compare two texts line by line using an LCS diff: exact additions, removals and context — in unified-diff style. Deterministic, unlike asking a model to 'find the differences'.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/diff?a=price%3A%20100%0Aquantity%3A%202%0Atotal%3A%20200&b=price%3A%20100%0Aquantity%3A%203%0Atotal%3A%20300&context=1 — $0.002/call
  - Params:
    - a (text, required): Use 
 for line breaks
    - b (text, required): Changed text
    - context (number, optional): Context lines
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/diff?a=price%3A%20100%0Aquantity%3A%202%0Atotal%3A%20200&b=price%3A%20100%0Aquantity%3A%203%0Atotal%3A%20300&context=1 — One line changed
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/diff?a=alpha%0Abeta%0Agamma&b=alpha%0Adelta%0Agamma%0Aepsilon&context=1 — Line added and removed
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/diff?a=same%0Alines&b=same%0Alines — Identical inputs
  - FAQ: How large can the inputs be? → The DP table caps around 5,000 lines per side; larger inputs are rejected with a clear error rather than hanging.
  - FAQ: Is it compatible with `git diff`? → It's unified-style (space/-/+ prefixes, context windows) — great for humans and agents. It omits @@ hunk headers, so it isn't a strict patch file.

### URL Parser

Parse a URL into all its components: protocol, hostname, port, path segments, query parameters (as a clean object), hash and credentials. Exact — no guessing by eye.

- [URL Parser](https://agenttools-hub.vercel.app/dev/url-parser): Parse a URL into all its components: protocol, hostname, port, path segments, query parameters (as a clean object), hash and credentials. Exact — no guessing by eye.
  - API: GET https://agenttools-hub.vercel.app/api/v1/dev/url-parser?url=https%3A%2F%2Fuser%3Apw%40api.example.com%3A8443%2Fv1%2Fusers%3Fpage%3D2%26sort%3Dname%26tag%3Da%26tag%3Db%23results — $0.001/call
  - Params:
    - url (text, required): URL
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-parser?url=https%3A%2F%2Fuser%3Apw%40api.example.com%3A8443%2Fv1%2Fusers%3Fpage%3D2%26sort%3Dname%26tag%3Da%26tag%3Db%23results — API URL with params
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-parser?url=https%3A%2F%2Fexample.com%2Fabout — Simple URL
  - Example: GET https://agenttools-hub.vercel.app/api/v1/dev/url-parser?url=https%3A%2F%2Fsearch.example.com%2Ffind%3Fq%3Dhello%2520world%26lang%3Den — URL with encoded params
  - FAQ: Do query values arrive decoded? → Yes — URLSearchParams decodes percent-encoding, so `q=hello%20world` becomes `hello world`. Repeated keys (e.g. `tag=a&tag=b`) are grouped into arrays.
  - FAQ: Does it work with relative URLs? → No — an absolute URL with protocol is required; relative references have no host to anchor components to.

## Crypto & Web3

### Wei / Gwei / ETH Converter

Convert between wei, kwei, mwei, gwei, microether, milliether and ether with exact BigInt arithmetic. Decimal strings of any magnitude convert without floating-point error.

- [Wei / Gwei / ETH Converter](https://agenttools-hub.vercel.app/crypto/wei-eth-converter): Convert between wei, kwei, mwei, gwei, microether, milliether and ether with exact BigInt arithmetic. Decimal strings of any magnitude convert without floating-point error.
  - API: GET https://agenttools-hub.vercel.app/api/v1/crypto/wei-eth-converter?value=21000&from=gwei&to=eth — $0.001/call
  - Params:
    - value (text, required): Decimal string for exact precision
    - from (string, one of (wei | kwei | mwei | gwei | microeth | millieth | eth), optional): From
    - to (string, one of (wei | kwei | mwei | gwei | microeth | millieth | eth), optional): To
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/wei-eth-converter?value=21000&from=gwei&to=eth — 21,000 gwei → ETH
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/wei-eth-converter?value=1&from=eth&to=wei — 1 ETH → wei
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/wei-eth-converter?value=0.1&from=eth&to=wei — 0.1 ETH → wei (exact)
  - Method: atoms(value × 10^fromExp) → atoms × 10^(fromExp − toExp) rendered exactly
  - FAQ: What is gwei used for? → Gas prices are quoted in gwei (1 gwei = 10⁻⁹ ETH). A 21,000-gas transfer at 10 gwei costs 0.00021 ETH.
  - FAQ: Why not just use floating point? → Floats cannot represent 0.1 exactly, so wei amounts come out wrong by hundreds of units. All conversions here use exact integer math on decimal strings.

### Gas Fee Calculator

Calculate a transaction's gas fee: gas units × gas price (gwei) gives the ETH cost, multiplied by the ETH price for USD. Exact BigInt math for the wei amounts.

- [Gas Fee Calculator](https://agenttools-hub.vercel.app/crypto/gas-fee-calculator): Calculate a transaction's gas fee: gas units × gas price (gwei) gives the ETH cost, multiplied by the ETH price for USD. Exact BigInt math for the wei amounts.
  - API: GET https://agenttools-hub.vercel.app/api/v1/crypto/gas-fee-calculator?gasUnits=21000&gweiPrice=10&ethPriceUsd=3000 — $0.001/call
  - Params:
    - gasUnits (number, required): Gas units
    - gweiPrice (number, required): Gas price (gwei)
    - ethPriceUsd (number, required): ETH price (USD)
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/gas-fee-calculator?gasUnits=21000&gweiPrice=10&ethPriceUsd=3000 — Plain transfer: 21,000 gas @ 10 gwei
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/gas-fee-calculator?gasUnits=65000&gweiPrice=15&ethPriceUsd=3000 — ERC-20 transfer: 65,000 gas @ 15 gwei
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/gas-fee-calculator?gasUnits=150000&gweiPrice=25&ethPriceUsd=3000 — Swap: 150,000 gas @ 25 gwei
  - Method: fee(wei) = gasUnits × gweiPrice × 10⁹ · fee(USD) = fee(ETH) × ETH price
  - FAQ: Where do I find current gas prices? → Wallets and block explorers show live 'base fee' values in gwei; under EIP-1559 you pay base fee + tip, capped by your max fee setting.
  - FAQ: What happens if I set the gas price too low? → The transaction waits in the mempool until the base fee drops to your price, or is dropped after a timeout. It cannot get 'stuck mid-payment'.

### Crypto Price (Live)

Live cryptocurrency prices from CoinGecko's public API: current price in USD/EUR/GBP/JPY plus 24-hour change for any coin by id or common ticker (btc, eth, sol…). Cached 60 seconds.

- [Crypto Price (Live)](https://agenttools-hub.vercel.app/crypto/price): Live cryptocurrency prices from CoinGecko's public API: current price in USD/EUR/GBP/JPY plus 24-hour change for any coin by id or common ticker (btc, eth, sol…). Cached 60 seconds.
  - API: GET https://agenttools-hub.vercel.app/api/v1/crypto/price?ids=bitcoin%2Cethereum&vs=usd — $0.002/call
  - Params:
    - ids (text, required): Coin ids or tickers
    - vs (string, one of (usd | eur | gbp | jpy), optional): Quote currency
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/price?ids=bitcoin%2Cethereum&vs=usd — BTC & ETH in USD
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/price?ids=sol&vs=usd — By ticker: sol
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/price?ids=usd-coin%2Ctether%2Cdai&vs=eur — Stablecoins in EUR
  - FAQ: Which ids can I use? → Any CoinGecko coin id (bitcoin, ethereum, chainlink…) or one of ~20 common tickers (btc, eth, sol, link, usdc…) which are mapped automatically.
  - FAQ: How current is 'live'? → CoinGecko aggregates exchange feeds in real time; this endpoint caches responses for 60 seconds to stay inside the free tier.

### Secure Random Generator

Generate cryptographically secure randomness: passwords with charset rules, hex keys of any byte length, and uniform random integers (rejection sampling, no modulo bias). Never use Math.random for secrets.

- [Secure Random Generator](https://agenttools-hub.vercel.app/crypto/random-generator): Generate cryptographically secure randomness: passwords with charset rules, hex keys of any byte length, and uniform random integers (rejection sampling, no modulo bias). Never use Math.random for secrets.
  - API: GET https://agenttools-hub.vercel.app/api/v1/crypto/random-generator?mode=password&length=24 — $0.001/call
  - Params:
    - mode (string, one of (password | hex | int), optional): Mode
    - length (number, optional): Length (password/hex)
    - min (number, optional): Int minimum
    - max (number, optional): Int maximum
    - upper (string, one of (true | false), optional): Include A–Z
    - digits (string, one of (true | false), optional): Include 0–9
    - symbols (string, one of (true | false), optional): Include symbols
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/random-generator?mode=password&length=24 — 24-char password, all charsets
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/random-generator?mode=hex&length=64 — 64-char hex API key
  - Example: GET https://agenttools-hub.vercel.app/api/v1/crypto/random-generator?mode=int&min=1&max=6&length=24 — Random dice roll 1–6
  - FAQ: Why not Math.random? → Math.random is a fast PRNG whose output is predictable from a few observations. Anything guarding value — passwords, keys, session tokens — must come from a CSPRNG.
  - FAQ: How much password entropy is enough? → 80+ bits for most purposes, 100+ for high-value secrets. At 24 characters with all charsets (~72 symbols) this tool produces ≈148 bits.

## Finance & Business

### ROI Calculator

Calculate return on investment: profit (or loss) and the percentage return relative to the initial amount invested.

- [ROI Calculator](https://agenttools-hub.vercel.app/finance/roi-calculator): Calculate return on investment: profit (or loss) and the percentage return relative to the initial amount invested.
  - API: GET https://agenttools-hub.vercel.app/api/v1/finance/roi-calculator?initial=10000&final=12500 — $0.001/call
  - Params:
    - initial (number, required): Amount invested
    - final (number, required): Final value
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/roi-calculator?initial=10000&final=12500 — 10,000 → 12,500
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/roi-calculator?initial=5000&final=4200 — Losing trade: 5,000 → 4,200
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/roi-calculator?initial=300000&final=371000 — House flip: 300,000 → 371,000
  - Method: ROI % = (final − initial) ÷ initial × 100
  - FAQ: Why is ROI misleading across different timeframes? → A 50% ROI in one year beats 50% over ten years, but ROI ignores time. Use the CAGR calculator to annualize returns before comparing.
  - FAQ: Does ROI include fees? → Only if you subtract them yourself — use the net final value (after fees, taxes and costs) for an honest number.

### CAGR Calculator

Calculate the compound annual growth rate that takes an initial value to a final value over a given number of years — the standard way to annualize returns.

- [CAGR Calculator](https://agenttools-hub.vercel.app/finance/cagr-calculator): Calculate the compound annual growth rate that takes an initial value to a final value over a given number of years — the standard way to annualize returns.
  - API: GET https://agenttools-hub.vercel.app/api/v1/finance/cagr-calculator?initial=10000&final=16000&years=3 — $0.001/call
  - Params:
    - initial (number, required): Initial value
    - final (number, required): Final value
    - years (number, required): Years
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/cagr-calculator?initial=10000&final=16000&years=3 — 10,000 → 16,000 in 3 years
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/cagr-calculator?initial=20000&final=69000&years=1.5 — Bitcoin-style run: 20,000 → 69,000 in 18 months
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/cagr-calculator?initial=1200000&final=2100000&years=4 — Revenue: 1.2M → 2.1M in 4 years
  - Method: CAGR % = (final ÷ initial)^(1 ÷ years) − 1, × 100
  - FAQ: CAGR vs ROI — which should I use? → ROI shows total return; CAGR annualizes it. A 100% ROI over 5 years is only 14.9% CAGR — CAGR is what makes comparisons honest.
  - FAQ: Can CAGR handle losses? → It handles final values lower than initial (negative CAGR), but cannot be computed from a zero or negative initial value.

### Margin & Markup Calculator

Calculate gross profit, profit margin (profit as % of price) and markup (profit as % of cost) from a unit cost and selling price — the two numbers people constantly mix up.

- [Margin & Markup Calculator](https://agenttools-hub.vercel.app/finance/margin-calculator): Calculate gross profit, profit margin (profit as % of price) and markup (profit as % of cost) from a unit cost and selling price — the two numbers people constantly mix up.
  - API: GET https://agenttools-hub.vercel.app/api/v1/finance/margin-calculator?cost=60&price=100 — $0.001/call
  - Params:
    - cost (number, required): Cost
    - price (number, required): Selling price
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/margin-calculator?cost=60&price=100 — Cost 60, price 100
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/margin-calculator?cost=4&price=29 — SaaS seat: cost 4, price 29
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/margin-calculator?cost=18&price=22 — Retail: cost 18, price 22
  - Method: margin % = (price − cost) ÷ price × 100 · markup % = (price − cost) ÷ cost × 100
  - FAQ: Why is markup always higher than margin? → Markup divides by the smaller number (cost), margin by the larger (price). 100% markup equals only a 50% margin.
  - FAQ: What margin should I aim for? → It depends on the industry: grocery runs on 20–30% margins, software often exceeds 80%. Compare within your sector, and make sure margin covers your fixed costs at your sales volume.

### IBAN Validator

Validate an International Bank Account Number: country code, country-specific length and the ISO 7064 MOD 97-10 check digits — with the pretty-printed grouping returned when valid.

- [IBAN Validator](https://agenttools-hub.vercel.app/finance/iban-validator): Validate an International Bank Account Number: country code, country-specific length and the ISO 7064 MOD 97-10 check digits — with the pretty-printed grouping returned when valid.
  - API: GET https://agenttools-hub.vercel.app/api/v1/finance/iban-validator?iban=DE89%203704%200044%200532%200130%2000 — $0.001/call
  - Params:
    - iban (text, required): Spaces are ignored
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/iban-validator?iban=DE89%203704%200044%200532%200130%2000 — Valid German IBAN
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/iban-validator?iban=GB29%20NWBK%206016%201331%209268%2019 — Valid UK IBAN
  - Example: GET https://agenttools-hub.vercel.app/api/v1/finance/iban-validator?iban=DE89%203704%200044%200532%200130%2001 — Bad checksum
  - Method: rearrange (BBAN + country + check digits) → letters A=10…Z=35 → value mod 97 must equal 1
  - FAQ: Does a valid IBAN mean the account exists? → No. The checksum only detects typos. Whether the account is open and reachable requires a bank-side lookup or confirmation-of-payee service.
  - FAQ: Why is my US account rejected? → The US has no IBAN system — US banks use ABA routing + account numbers. Only ~90 countries participate in the IBAN registry.

