# AgentTools — full tool reference for AI agents

Complete reference for every tool API at https://agentstoolshub.com. All endpoints are GET, return JSON, and require x402 payment (https://agentstoolshub.com/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. Use this when an agent needs to percent of a number, ratios and percent change.

- [Percentage Calculator](https://agentstoolshub.com/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. Use this when an agent needs to percent of a number, ratios and percent change.
  - API: GET https://agentstoolshub.com/api/v1/calculators/percentage-calculator?x=15&y=200&op=percent_of — $0.002/call
  - Params:
    - x (number, required): X
    - y (number, required): Y
    - op (string, one of (percent_of | what_percent | change), optional): Operation
  - Example: GET https://agentstoolshub.com/api/v1/calculators/percentage-calculator?x=15&y=200&op=percent_of — 15% of 200
  - Example: GET https://agentstoolshub.com/api/v1/calculators/percentage-calculator?x=45&y=360&op=what_percent — 45 is what percent of 360
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to sale price and savings from a percent off.

- [Discount Calculator](https://agentstoolshub.com/calculators/discount-calculator): Calculate the final sale price and the amount saved for any price and percent-off discount, with the working shown. Use this when an agent needs to sale price and savings from a percent off.
  - API: GET https://agentstoolshub.com/api/v1/calculators/discount-calculator?price=79.99&discount=20 — $0.002/call
  - Params:
    - price (number, required): Original price
    - discount (number, required): Discount %
  - Example: GET https://agentstoolshub.com/api/v1/calculators/discount-calculator?price=79.99&discount=20 — 20% off 79.99
  - Example: GET https://agentstoolshub.com/api/v1/calculators/discount-calculator?price=240&discount=50 — 50% off 240
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to tip amount, total and per-person split.

- [Tip Calculator](https://agentstoolshub.com/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. Use this when an agent needs to tip amount, total and per-person split.
  - API: GET https://agentstoolshub.com/api/v1/calculators/tip-calculator?bill=64.5&tipPercent=15&people=1 — $0.002/call
  - Params:
    - bill (number, required): Bill amount
    - tipPercent (number, optional): Tip %
    - people (number, optional): Split between
  - Example: GET https://agentstoolshub.com/api/v1/calculators/tip-calculator?bill=64.5&tipPercent=15&people=1 — 64.50 with 15% tip
  - Example: GET https://agentstoolshub.com/api/v1/calculators/tip-calculator?bill=120&tipPercent=20&people=4 — 120 with 20% tip, 4 people
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to add or remove VAT at standard rates for 36 countries.

- [VAT Calculator](https://agentstoolshub.com/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. Use this when an agent needs to add or remove VAT at standard rates for 36 countries.
  - API: GET https://agentstoolshub.com/api/v1/calculators/vat-calculator?amount=100&country=DE&op=add — $0.003/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://agentstoolshub.com/api/v1/calculators/vat-calculator?amount=100&country=DE&op=add — Add 19% VAT to 100 (DE)
  - Example: GET https://agentstoolshub.com/api/v1/calculators/vat-calculator?amount=240&country=GB&op=remove — Remove 20% VAT from 240 (GB)
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to body Mass Index with WHO category.

- [BMI Calculator](https://agentstoolshub.com/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. Use this when an agent needs to body Mass Index with WHO category.
  - API: GET https://agentstoolshub.com/api/v1/calculators/bmi-calculator?weight=70&height=175 — $0.002/call
  - Params:
    - weight (number, required): Weight (kg)
    - height (number, required): Height (cm)
  - Example: GET https://agentstoolshub.com/api/v1/calculators/bmi-calculator?weight=70&height=175 — 70 kg, 175 cm
  - Example: GET https://agentstoolshub.com/api/v1/calculators/bmi-calculator?weight=55&height=160 — 55 kg, 160 cm
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to days, weeks and calendar time between two dates.

- [Date Difference Calculator](https://agentstoolshub.com/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. Use this when an agent needs to days, weeks and calendar time between two dates.
  - API: GET https://agentstoolshub.com/api/v1/calculators/date-difference-calculator?start=2024-01-01&end=2024-12-31 — $0.002/call
  - Params:
    - start (text, required): ISO format YYYY-MM-DD
    - end (text, required): ISO format YYYY-MM-DD
  - Example: GET https://agentstoolshub.com/api/v1/calculators/date-difference-calculator?start=2024-01-01&end=2024-12-31 — 2024-01-01 → 2024-12-31
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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). Use this when an agent needs to exact age in years, months and days.

- [Age Calculator](https://agentstoolshub.com/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). Use this when an agent needs to exact age in years, months and days.
  - API: GET https://agentstoolshub.com/api/v1/calculators/age-calculator?birth=1990-06-15&on=2026-09-01 — $0.002/call
  - Params:
    - birth (text, required): YYYY-MM-DD
    - on (text, optional): Defaults to today, YYYY-MM-DD
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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). Use this when an agent needs to monthly payment, total cost and interest for any loan.

- [Loan Payment Calculator](https://agentstoolshub.com/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). Use this when an agent needs to monthly payment, total cost and interest for any loan.
  - API: GET https://agentstoolshub.com/api/v1/calculators/loan-payment-calculator?principal=300000&annualRate=4.5&years=30 — $0.003/call
  - Params:
    - principal (number, required): Loan amount
    - annualRate (number, required): Annual rate %
    - years (number, required): Term (years)
  - Example: GET https://agentstoolshub.com/api/v1/calculators/loan-payment-calculator?principal=300000&annualRate=4.5&years=30 — 300,000 at 4.5% for 30 years
  - Example: GET https://agentstoolshub.com/api/v1/calculators/loan-payment-calculator?principal=20000&annualRate=6.9&years=4 — 20,000 at 6.9% for 4 years
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to future value with any compounding frequency.

- [Compound Interest Calculator](https://agentstoolshub.com/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. Use this when an agent needs to future value with any compounding frequency.
  - API: GET https://agentstoolshub.com/api/v1/calculators/compound-interest-calculator?principal=10000&annualRate=5&years=10&timesPerYear=12 — $0.003/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://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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. Use this when an agent needs to trip fuel and cost, splitable between people.

- [Fuel Cost Calculator](https://agentstoolshub.com/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. Use this when an agent needs to trip fuel and cost, splitable between people.
  - API: GET https://agentstoolshub.com/api/v1/calculators/fuel-cost-calculator?distance=450&consumption=6.5&pricePerLiter=1.75&people=1 — $0.002/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://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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. Use this when an agent needs to how long a text takes to read, by word count.

- [Reading Time Calculator](https://agentstoolshub.com/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. Use this when an agent needs to how long a text takes to read, by word count.
  - API: GET https://agentstoolshub.com/api/v1/calculators/reading-time-calculator?words=1500&wpm=200 — $0.002/call
  - Params:
    - words (number, required): Word count
    - wpm (number, optional): 200 = silent reading · 130 = read aloud
  - Example: GET https://agentstoolshub.com/api/v1/calculators/reading-time-calculator?words=1500&wpm=200 — 1,500-word article
  - Example: GET https://agentstoolshub.com/api/v1/calculators/reading-time-calculator?words=300&wpm=200 — 300-word intro
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to metric and imperial distance units, instantly.

- [Length Converter](https://agentstoolshub.com/converters/length-converter): Convert between metric and imperial length units: kilometers, meters, centimeters, millimeters, micrometers, nanometers, miles, yards, feet, inches and nautical miles. Use this when an agent needs to metric and imperial distance units, instantly.
  - API: GET https://agentstoolshub.com/api/v1/converters/length-converter?value=1&from=km&to=m — $0.002/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://agentstoolshub.com/api/v1/converters/length-converter?value=1&from=km&to=m — 1 Kilometers in Meters
  - Example: GET https://agentstoolshub.com/api/v1/converters/length-converter?value=100&from=km&to=m — 100 Kilometers in Meters
  - Example: GET https://agentstoolshub.com/api/v1/converters/length-converter?value=5&from=m&to=km — 5 Meters in Kilometers
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to kilograms, pounds, ounces and more.

- [Weight Converter](https://agentstoolshub.com/converters/weight-converter): Convert between weight and mass units: metric tons, kilograms, grams, milligrams, pounds, ounces and stones with exact international definitions. Use this when an agent needs to kilograms, pounds, ounces and more.
  - API: GET https://agentstoolshub.com/api/v1/converters/weight-converter?value=1&from=t&to=kg — $0.002/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://agentstoolshub.com/api/v1/converters/weight-converter?value=1&from=t&to=kg — 1 Metric tons in Kilograms
  - Example: GET https://agentstoolshub.com/api/v1/converters/weight-converter?value=100&from=t&to=kg — 100 Metric tons in Kilograms
  - Example: GET https://agentstoolshub.com/api/v1/converters/weight-converter?value=5&from=kg&to=t — 5 Kilograms in Metric tons
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to celsius, Fahrenheit and Kelvin, both ways.

- [Temperature Converter](https://agentstoolshub.com/converters/temperature-converter): Convert between Celsius, Fahrenheit and Kelvin with exact formulas, reference points (freezing and boiling water) and step-by-step working. Use this when an agent needs to celsius, Fahrenheit and Kelvin, both ways.
  - API: GET https://agentstoolshub.com/api/v1/converters/temperature-converter?value=20&from=c&to=f — $0.002/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://agentstoolshub.com/api/v1/converters/temperature-converter?value=20&from=c&to=f — 20 °C in Fahrenheit
  - Example: GET https://agentstoolshub.com/api/v1/converters/temperature-converter?value=98.6&from=f&to=c — 98.6 °F in Celsius
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to decimal (KB/MB/GB) and binary (KiB/MiB/GiB) units.

- [Data Size Converter](https://agentstoolshub.com/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. Use this when an agent needs to decimal (KB/MB/GB) and binary (KiB/MiB/GiB) units.
  - API: GET https://agentstoolshub.com/api/v1/converters/data-size-converter?value=1&from=TB&to=GB — $0.002/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://agentstoolshub.com/api/v1/converters/data-size-converter?value=1&from=TB&to=GB — 1 Terabytes in Gigabytes
  - Example: GET https://agentstoolshub.com/api/v1/converters/data-size-converter?value=100&from=TB&to=GB — 100 Terabytes in Gigabytes
  - Example: GET https://agentstoolshub.com/api/v1/converters/data-size-converter?value=5&from=GB&to=TB — 5 Gigabytes in Terabytes
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to km/h, mph, m/s, knots and ft/s.

- [Speed Converter](https://agentstoolshub.com/converters/speed-converter): Convert speed units: kilometers per hour, miles per hour, meters per second, knots and feet per second with exact definitions. Use this when an agent needs to km/h, mph, m/s, knots and ft/s.
  - API: GET https://agentstoolshub.com/api/v1/converters/speed-converter?value=1&from=kmh&to=mph — $0.002/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://agentstoolshub.com/api/v1/converters/speed-converter?value=1&from=kmh&to=mph — 1 Kilometers per hour in Miles per hour
  - Example: GET https://agentstoolshub.com/api/v1/converters/speed-converter?value=100&from=kmh&to=mph — 100 Kilometers per hour in Miles per hour
  - Example: GET https://agentstoolshub.com/api/v1/converters/speed-converter?value=5&from=mph&to=kmh — 5 Miles per hour in Kilometers per hour
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to square meters, feet, acres, hectares.

- [Area Converter](https://agentstoolshub.com/converters/area-converter): Convert area units: square millimeters, centimeters, meters and kilometers, hectares, acres, square feet and square miles. Use this when an agent needs to square meters, feet, acres, hectares.
  - API: GET https://agentstoolshub.com/api/v1/converters/area-converter?value=1&from=km2&to=ha — $0.002/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://agentstoolshub.com/api/v1/converters/area-converter?value=1&from=km2&to=ha — 1 Square kilometers in Hectares
  - Example: GET https://agentstoolshub.com/api/v1/converters/area-converter?value=100&from=km2&to=ha — 100 Square kilometers in Hectares
  - Example: GET https://agentstoolshub.com/api/v1/converters/area-converter?value=5&from=ha&to=km2 — 5 Hectares in Square kilometers
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to liters, gallons, cups, milliliters.

- [Volume Converter](https://agentstoolshub.com/converters/volume-converter): Convert cooking and liquid volume units: milliliters, liters, cubic meters, US gallons, quarts, pints, cups, fluid ounces, tablespoons and teaspoons. Use this when an agent needs to liters, gallons, cups, milliliters.
  - API: GET https://agentstoolshub.com/api/v1/converters/volume-converter?value=1&from=m3&to=L — $0.002/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://agentstoolshub.com/api/v1/converters/volume-converter?value=1&from=m3&to=L — 1 Cubic meters in Liters
  - Example: GET https://agentstoolshub.com/api/v1/converters/volume-converter?value=100&from=m3&to=L — 100 Cubic meters in Liters
  - Example: GET https://agentstoolshub.com/api/v1/converters/volume-converter?value=5&from=L&to=m3 — 5 Liters in Cubic meters
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to epoch seconds ↔ human dates, both directions.

- [Unix Timestamp Converter](https://agentstoolshub.com/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. Use this when an agent needs to epoch seconds ↔ human dates, both directions.
  - API: GET https://agentstoolshub.com/api/v1/converters/unix-timestamp-converter?op=to_date&value=1735689600 — $0.002/call
  - Params:
    - op (string, one of (to_date | to_timestamp), optional): Direction
    - value (text, required): Timestamp or date
  - Example: GET https://agentstoolshub.com/api/v1/converters/unix-timestamp-converter?op=to_date&value=1735689600 — 1735689600 → date
  - Example: GET https://agentstoolshub.com/api/v1/converters/unix-timestamp-converter?op=to_date&value=0 — 0 (epoch) → date
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to numbers ↔ Roman numerals, with validation.

- [Roman Numeral Converter](https://agentstoolshub.com/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. Use this when an agent needs to numbers ↔ Roman numerals, with validation.
  - API: GET https://agentstoolshub.com/api/v1/converters/roman-numeral-converter?value=2026&op=to_roman — $0.002/call
  - Params:
    - value (text, required): Number or numeral
    - op (string, one of (to_roman | from_roman), optional): Direction
  - Example: GET https://agentstoolshub.com/api/v1/converters/roman-numeral-converter?value=2026&op=to_roman — 2026 → Roman
  - Example: GET https://agentstoolshub.com/api/v1/converters/roman-numeral-converter?value=mmxxvi&op=from_roman — MMXXVI → number
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to 250 countries: codes, capitals, currencies, populations.

- [Countries Database](https://agentstoolshub.com/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. Use this when an agent needs to 250 countries: codes, capitals, currencies, populations.
  - API: GET https://agentstoolshub.com/api/v1/databases/countries?country=Germany — $0.003/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://agentstoolshub.com/api/v1/databases/countries?country=Germany — Profile for Germany
  - Example: GET https://agentstoolshub.com/api/v1/databases/countries?country=JP — Profile by ISO code
  - Example: GET https://agentstoolshub.com/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.

### US Area Codes

Look up any US telephone area code to find the state or territory it serves, or list every area code in a given state. Covers all 404 NANP codes in use, including overlays. Use this when an agent needs to all 404 NANP area codes → state lookup.

- [US Area Codes](https://agentstoolshub.com/databases/area-codes): Look up any US telephone area code to find the state or territory it serves, or list every area code in a given state. Covers all 404 NANP codes in use, including overlays. Use this when an agent needs to all 404 NANP area codes → state lookup.
  - API: GET https://agentstoolshub.com/api/v1/databases/area-codes?code=415 — $0.002/call
  - Params:
    - code (text, optional): Leave empty to list by state instead
    - state (text, optional): State filter
    - limit (number, optional): Max rows
  - Example: GET https://agentstoolshub.com/api/v1/databases/area-codes?code=415 — What state is 415?
  - Example: GET https://agentstoolshub.com/api/v1/databases/area-codes?state=California&limit=15 — All California codes
  - Example: GET https://agentstoolshub.com/api/v1/databases/area-codes?code=212 — What state is 212?
  - FAQ: Do overlay codes appear separately? → Yes — overlay codes (two codes serving the same region) are listed as distinct entries, each mapped to its state.
  - FAQ: Does this cover Canada and the Caribbean? → The dataset focuses on US area codes. Canadian and Caribbean NANP codes are planned for a future expansion.

## 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'. Use this when an agent needs to the current date/time in any time zone — agents have no clock.

- [Current Time](https://agentstoolshub.com/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'. Use this when an agent needs to the current date/time in any time zone — agents have no clock.
  - API: GET https://agentstoolshub.com/api/v1/live/now?tz=UTC — $0.001/call
  - Params:
    - tz (text, optional): e.g. America/New_York, Europe/Berlin, Asia/Tokyo
  - Example: GET https://agentstoolshub.com/api/v1/live/now?tz=UTC — Now in UTC
  - Example: GET https://agentstoolshub.com/api/v1/live/now?tz=America%2FNew_York — Now in New York
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to working days between dates, optionally minus public holidays.

- [Business Days Calculator](https://agentstoolshub.com/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. Use this when an agent needs to working days between dates, optionally minus public holidays.
  - API: GET https://agentstoolshub.com/api/v1/live/business-days?start=2026-09-01&end=2026-09-30 — $0.003/call
  - Params:
    - start (text, required): Start date
    - end (text, required): End date
    - country (text, optional): Excludes that country's public holidays
  - Example: GET https://agentstoolshub.com/api/v1/live/business-days?start=2026-09-01&end=2026-09-30 — September 2026, no holidays
  - Example: GET https://agentstoolshub.com/api/v1/live/business-days?start=2026-10-01&end=2026-12-31&country=DE — Q4 2026 in Germany (holidays excluded)
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to live ECB reference rates for 30 currencies.

- [Exchange Rates (Live)](https://agentstoolshub.com/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. Use this when an agent needs to live ECB reference rates for 30 currencies.
  - API: GET https://agentstoolshub.com/api/v1/live/exchange-rates?op=rates&base=USD — $0.005/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
    - date (text, optional): YYYY-MM-DD — ECB business days
  - Example: GET https://agentstoolshub.com/api/v1/live/exchange-rates?op=rates&base=USD — All rates vs USD
  - Example: GET https://agentstoolshub.com/api/v1/live/exchange-rates?op=convert&from=USD&to=EUR&amount=100 — 100 USD → EUR
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to current conditions + 3-day forecast for any city.

- [Weather (Live)](https://agentstoolshub.com/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. Use this when an agent needs to current conditions + 3-day forecast for any city.
  - API: GET https://agentstoolshub.com/api/v1/live/weather?city=Berlin — $0.005/call
  - Params:
    - city (text, optional): Or provide lat/lon instead
    - lat (number, optional): Latitude
    - lon (number, optional): Longitude
  - Example: GET https://agentstoolshub.com/api/v1/live/weather?city=Berlin — Weather in Berlin
  - Example: GET https://agentstoolshub.com/api/v1/live/weather?city=New%20York — Weather in New York
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to upcoming public holidays for ~110 countries.

- [Public Holidays (Live)](https://agentstoolshub.com/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. Use this when an agent needs to upcoming public holidays for ~110 countries.
  - API: GET https://agentstoolshub.com/api/v1/live/holidays?country=DE&op=next&count=8 — $0.005/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://agentstoolshub.com/api/v1/live/holidays?country=DE&op=next&count=8 — Upcoming in Germany
  - Example: GET https://agentstoolshub.com/api/v1/live/holidays?country=US&op=year&year=2026&count=12 — US holidays 2026
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to where is an IP address? Country, city, ASN, timezone.

- [IP Geolocation (Live)](https://agentstoolshub.com/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. Use this when an agent needs to where is an IP address? Country, city, ASN, timezone.
  - API: GET https://agentstoolshub.com/api/v1/live/ip-lookup?ip=8.8.8.8 — $0.005/call
  - Params:
    - ip (text, optional): Leave empty to look up the caller's IP
  - Example: GET https://agentstoolshub.com/api/v1/live/ip-lookup?ip=8.8.8.8 — Google DNS
  - Example: GET https://agentstoolshub.com/api/v1/live/ip-lookup?ip=1.1.1.1 — Cloudflare DNS
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to real DNS records via Cloudflare DNS-over-HTTPS.

- [DNS Lookup (Live)](https://agentstoolshub.com/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. Use this when an agent needs to real DNS records via Cloudflare DNS-over-HTTPS.
  - API: GET https://agentstoolshub.com/api/v1/live/dns-lookup?domain=example.com&type=A — $0.005/call
  - Params:
    - domain (text, required): Domain
    - type (string, one of (A | AAAA | MX | TXT | NS | CNAME | SOA), optional): Record type
  - Example: GET https://agentstoolshub.com/api/v1/live/dns-lookup?domain=example.com&type=A — A records for example.com
  - Example: GET https://agentstoolshub.com/api/v1/live/dns-lookup?domain=gmail.com&type=MX — MX records for gmail.com
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to title, description, OG image and favicon of any page.

- [URL Metadata (Live)](https://agentstoolshub.com/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. Use this when an agent needs to title, description, OG image and favicon of any page.
  - API: GET https://agentstoolshub.com/api/v1/live/url-metadata?url=https%3A%2F%2Fexample.com — $0.005/call
  - Params:
    - url (text, required): URL
  - Example: GET https://agentstoolshub.com/api/v1/live/url-metadata?url=https%3A%2F%2Fexample.com — Inspect example.com
  - Example: GET https://agentstoolshub.com/api/v1/live/url-metadata?url=https%3A%2F%2Fwww.x402.org — x402 protocol site
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to any text or URL as a QR code (SVG + PNG data URI).

- [QR Code Generator](https://agentstoolshub.com/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. Use this when an agent needs to any text or URL as a QR code (SVG + PNG data URI).
  - API: GET https://agentstoolshub.com/api/v1/live/qr-code?text=https%3A%2F%2Fexample.com&size=300&ec=M — $0.003/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://agentstoolshub.com/api/v1/live/qr-code?text=https%3A%2F%2Fexample.com&size=300&ec=M — QR for a URL
  - Example: GET https://agentstoolshub.com/api/v1/live/qr-code?text=bitcoin%3Abc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh&size=400&ec=Q — QR for a crypto address
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to uTF-8 safe base64 in both directions.

- [Base64 Encoder / Decoder](https://agentstoolshub.com/dev/base64-encode): Encode text to base64 or decode base64 back to text. Full UTF-8 support including emoji and non-Latin scripts. Use this when an agent needs to uTF-8 safe base64 in both directions.
  - API: GET https://agentstoolshub.com/api/v1/dev/base64-encode?text=Hello%2C%20world!&direction=encode — $0.002/call
  - Params:
    - text (text, required): Text
    - direction (string, one of (encode | decode), optional): Direction
  - Example: GET https://agentstoolshub.com/api/v1/dev/base64-encode?text=Hello%2C%20world!&direction=encode — Encode "Hello, world!"
  - Example: GET https://agentstoolshub.com/api/v1/dev/base64-encode?text=h%C3%A9llo%20%F0%9F%8C%8D&direction=encode — Encode "héllo 🌍"
  - Example: GET https://agentstoolshub.com/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). Use this when an agent needs to binary, octal, decimal, hex — any base 2–36.

- [Number Base Converter](https://agentstoolshub.com/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). Use this when an agent needs to binary, octal, decimal, hex — any base 2–36.
  - API: GET https://agentstoolshub.com/api/v1/dev/number-base-converter?value=ff&from=16&to=10 — $0.002/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://agentstoolshub.com/api/v1/dev/number-base-converter?value=ff&from=16&to=10 — ff hex → decimal
  - Example: GET https://agentstoolshub.com/api/v1/dev/number-base-converter?value=1010&from=2&to=16 — 1010 binary → hex
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to camelCase, snake_case, kebab-case and more.

- [Case Converter](https://agentstoolshub.com/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. Use this when an agent needs to camelCase, snake_case, kebab-case and more.
  - API: GET https://agentstoolshub.com/api/v1/dev/case-converter?text=hello%20world&style=camel — $0.002/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://agentstoolshub.com/api/v1/dev/case-converter?text=hello%20world&style=camel — "hello world" → camelCase
  - Example: GET https://agentstoolshub.com/api/v1/dev/case-converter?text=UserProfileView&style=snake — "UserProfileView" → snake_case
  - Example: GET https://agentstoolshub.com/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. Accepts standard and URL-safe base64 with or without padding; claims like exp and iat are rendered as dates. Use this when an agent needs to decode header and payload — no verification.

- [JWT Decoder](https://agentstoolshub.com/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. Accepts standard and URL-safe base64 with or without padding; claims like exp and iat are rendered as dates. Use this when an agent needs to decode header and payload — no verification.
  - API: GET https://agentstoolshub.com/api/v1/dev/jwt-decoder?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNzAwMDAwMDAwfQ.dummy_signature_part — $0.003/call
  - Params:
    - token (text, required): header.payload.signature
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to percent-encoding for query strings and URLs.

- [URL Encoder / Decoder](https://agentstoolshub.com/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. Use this when an agent needs to percent-encoding for query strings and URLs.
  - API: GET https://agentstoolshub.com/api/v1/dev/url-encoder?text=hello%20world%20%26%20more&op=encode — $0.002/call
  - Params:
    - text (text, required): Text
    - op (string, one of (encode | decode), optional): Direction
  - Example: GET https://agentstoolshub.com/api/v1/dev/url-encoder?text=hello%20world%20%26%20more&op=encode — Encode "hello world & more"
  - Example: GET https://agentstoolshub.com/api/v1/dev/url-encoder?text=Gr%C3%BC%C3%9Fe%20%E2%98%BA&op=encode — Encode "Grüße ☺"
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to validate, pretty-print and inspect JSON.

- [JSON Formatter / Validator](https://agentstoolshub.com/dev/json-formatter): Validate JSON with precise error messages, pretty-print it with any indent, and inspect its top-level type and element counts. Use this when an agent needs to validate, pretty-print and inspect JSON.
  - API: GET https://agentstoolshub.com/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.002/call
  - Params:
    - json (text, required): JSON
    - indent (number, optional): Indent spaces
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/api/v1/dev/json-formatter?json=%5B1%2C2%2C3%5D&indent=2 — Array of numbers
  - Example: GET https://agentstoolshub.com/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). Use this when an agent needs to look up any HTTP status code's meaning.

- [HTTP Status Codes Database](https://agentstoolshub.com/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). Use this when an agent needs to look up any HTTP status code's meaning.
  - API: GET https://agentstoolshub.com/api/v1/dev/http-status-codes?code=402 — $0.002/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://agentstoolshub.com/api/v1/dev/http-status-codes?code=402 — What is HTTP 402?
  - Example: GET https://agentstoolshub.com/api/v1/dev/http-status-codes?category=client-error&limit=20 — All client errors
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to content-Type lookup by type or file extension.

- [MIME Types Database](https://agentstoolshub.com/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. Use this when an agent needs to content-Type lookup by type or file extension.
  - API: GET https://agentstoolshub.com/api/v1/dev/mime-types?query=.png — $0.002/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://agentstoolshub.com/api/v1/dev/mime-types?query=.png — What MIME type is .png?
  - Example: GET https://agentstoolshub.com/api/v1/dev/mime-types?query=json — JSON-related types
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to approximate token counts per LLM family, ±10%.

- [Token Estimator](https://agentstoolshub.com/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. Use this when an agent needs to approximate token counts per LLM family, ±10%.
  - API: GET https://agentstoolshub.com/api/v1/dev/token-estimator?text=The%20quick%20brown%20fox%20jumps%20over%20the%20lazy%20dog.%20Pack%20my%20box%20with%20five%20dozen%20liquor%20jugs. — $0.002/call
  - Params:
    - text (text, required): Text
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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. Use this when an agent needs to tokens × current per-model prices = USD.

- [LLM API Cost Calculator](https://agentstoolshub.com/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. Use this when an agent needs to tokens × current per-model prices = USD.
  - API: GET https://agentstoolshub.com/api/v1/dev/llm-cost-calculator?inputTokens=12000&outputTokens=1500&model=gpt-4o&calls=1 — $0.002/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://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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 October 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. Use this when an agent needs to rAG-ready chunks with token budgets and overlap.

- [Text Chunker](https://agentstoolshub.com/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. Use this when an agent needs to rAG-ready chunks with token budgets and overlap.
  - API: GET https://agentstoolshub.com/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.005/call
  - Params:
    - text (text, required): Text
    - targetTokens (number, optional): Target tokens per chunk
    - overlapTokens (number, optional): Overlap tokens
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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. Use this when an agent needs to sHA-256 / SHA-512 / SHA-1 / MD5, exact digests.

- [Hash Calculator](https://agentstoolshub.com/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. Use this when an agent needs to sHA-256 / SHA-512 / SHA-1 / MD5, exact digests.
  - API: GET https://agentstoolshub.com/api/v1/dev/hash?text=hello&algo=sha256 — $0.002/call
  - Params:
    - text (text, required): Text
    - algo (string, one of (sha256 | sha512 | sha1 | md5), optional): Algorithm
  - Example: GET https://agentstoolshub.com/api/v1/dev/hash?text=hello&algo=sha256 — SHA-256 of "hello"
  - Example: GET https://agentstoolshub.com/api/v1/dev/hash?text=test%20seed%20phrase&algo=sha512 — SHA-512 of a seed phrase
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to random v4, sortable v7, plus strict validation.

- [UUID Generator / Validator](https://agentstoolshub.com/dev/uuid): Generate cryptographically random UUIDv4s or time-sortable UUIDv7s from a real CSPRNG, and validate any UUID's format, version and variant bits. Use this when an agent needs to random v4, sortable v7, plus strict validation.
  - API: GET https://agentstoolshub.com/api/v1/dev/uuid?op=generate&version=v4 — $0.002/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://agentstoolshub.com/api/v1/dev/uuid?op=generate&version=v4 — Generate v4
  - Example: GET https://agentstoolshub.com/api/v1/dev/uuid?op=generate&version=v7 — Generate v7 (sortable)
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to pull emails, URLs, IPs, phones and domains from raw text.

- [Text Extractor](https://agentstoolshub.com/dev/text-extract): Scan unstructured text and extract structured entities: email addresses, URLs, IPv4 addresses, phone numbers and domains. Deduplicated, categorized, machine-ready. Use this when an agent needs to pull emails, URLs, IPs, phones and domains from raw text.
  - API: GET https://agentstoolshub.com/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.005/call
  - Params:
    - text (text, required): Text
    - what (string, one of (all | emails | urls | ips | phones | domains), optional): Extract
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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://agentstoolshub.com/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'. Use this when an agent needs to exact line-level diff with unified-style output.

- [Text Diff](https://agentstoolshub.com/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'. Use this when an agent needs to exact line-level diff with unified-style output.
  - API: GET https://agentstoolshub.com/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.005/call
  - Params:
    - a (text, required): Use 
 for line breaks
    - b (text, required): Changed text
    - context (number, optional): Context lines
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/api/v1/dev/diff?a=alpha%0Abeta%0Agamma&b=alpha%0Adelta%0Agamma%0Aepsilon&context=1 — Line added and removed
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to break any URL into protocol, host, path and params.

- [URL Parser](https://agentstoolshub.com/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. Use this when an agent needs to break any URL into protocol, host, path and params.
  - API: GET https://agentstoolshub.com/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.002/call
  - Params:
    - url (text, required): URL
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/api/v1/dev/url-parser?url=https%3A%2F%2Fexample.com%2Fabout — Simple URL
  - Example: GET https://agentstoolshub.com/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.

### PDF to Text

Fetch a PDF (by URL, SSRF-guarded) or accept it as base64 and extract all readable text with page count. Deterministic parsing — no language model, so nothing is invented. Text-based PDFs only; scanned images need OCR (not included). Use this when an agent needs to extract readable text from any PDF — agents can't read PDFs.

- [PDF to Text](https://agentstoolshub.com/dev/pdf-to-text): Fetch a PDF (by URL, SSRF-guarded) or accept it as base64 and extract all readable text with page count. Deterministic parsing — no language model, so nothing is invented. Text-based PDFs only; scanned images need OCR (not included). Use this when an agent needs to extract readable text from any PDF — agents can't read PDFs.
  - API: GET https://agentstoolshub.com/api/v1/dev/pdf-to-text?url=https%3A%2F%2Fwww.w3.org%2FWAI%2FER%2Ftests%2Fxhtml%2Ftestfiles%2Fresources%2Fpdf%2Fdummy.pdf — $0.010/call
  - Params:
    - url (text, optional): Or provide base64 instead
    - base64 (text, optional): Base64 content
    - maxChars (number, optional): Max text length
  - Example: GET https://agentstoolshub.com/api/v1/dev/pdf-to-text?url=https%3A%2F%2Fwww.w3.org%2FWAI%2FER%2Ftests%2Fxhtml%2Ftestfiles%2Fresources%2Fpdf%2Fdummy.pdf — Extract from a URL
  - FAQ: Does it work on scanned documents? → No — scanned PDFs are images and need OCR. The tool detects this and returns a clear error instead of empty text.
  - FAQ: What are the limits? → 10MB per file, 150 pages, and a configurable text cap (default 50k characters, extendable to 200k). Fetches are SSRF-guarded.

### URL Reader (Markdown)

Fetch a web page server-side and convert it to clean markdown — headings, links, lists, tables and text, with scripts, styles and boilerplate stripped. The 'reader' pattern agents use to actually understand web pages. SSRF-guarded with redirects re-validated, 10s timeout, 1MB cap. Use this when an agent needs to fetch any page and get clean markdown an LLM can read.

- [URL Reader (Markdown)](https://agentstoolshub.com/dev/url-reader): Fetch a web page server-side and convert it to clean markdown — headings, links, lists, tables and text, with scripts, styles and boilerplate stripped. The 'reader' pattern agents use to actually understand web pages. SSRF-guarded with redirects re-validated, 10s timeout, 1MB cap. Use this when an agent needs to fetch any page and get clean markdown an LLM can read.
  - API: GET https://agentstoolshub.com/api/v1/dev/url-reader?url=https%3A%2F%2Fexample.com&maxChars=5000 — $0.010/call
  - Params:
    - url (text, required): URL
    - maxChars (number, optional): Max markdown length
  - Example: GET https://agentstoolshub.com/api/v1/dev/url-reader?url=https%3A%2F%2Fexample.com&maxChars=5000 — Read example.com
  - Example: GET https://agentstoolshub.com/api/v1/dev/url-reader?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FProof_of_work&maxChars=8000 — Read a docs page
  - FAQ: How is this different from url-metadata? → url-metadata returns the page's *summary* (title, description, OG image). url-reader returns the page's *full content* as markdown for actual reading.
  - FAQ: Does it render JavaScript? → No — it converts the served HTML. Static pages and server-rendered sites work fully; client-rendered apps return little text and the tool says so rather than pretending.

### Find an API (Directory Search)

Describe what you need and get back matching x402-paid APIs: our own catalog (54 tools) plus, optionally, the live x402 Bazaar of third-party sellers. The agent's meta-tool — instead of knowing an API exists, ask for the capability. Use this when an agent needs to "I need a tool that does X" → matched paid APIs.

- [Find an API (Directory Search)](https://agentstoolshub.com/dev/directory-search): Describe what you need and get back matching x402-paid APIs: our own catalog (54 tools) plus, optionally, the live x402 Bazaar of third-party sellers. The agent's meta-tool — instead of knowing an API exists, ask for the capability. Use this when an agent needs to "I need a tool that does X" → matched paid APIs.
  - API: GET https://agentstoolshub.com/api/v1/dev/directory-search?query=convert%20pdf%20to%20text&includeBazaar=true&limit=5 — $0.003/call
  - Params:
    - query (text, required): What do you need?
    - includeBazaar (string, one of (true | false), optional): Include third-party Bazaar results
    - limit (number, optional): Max results per source
  - Example: GET https://agentstoolshub.com/api/v1/dev/directory-search?query=convert%20pdf%20to%20text&includeBazaar=true&limit=5 — Need PDF text extraction
  - Example: GET https://agentstoolshub.com/api/v1/dev/directory-search?query=weather%20forecast&includeBazaar=false — Weather capability
  - Example: GET https://agentstoolshub.com/api/v1/dev/directory-search?query=wallet%20analysis%20crypto&includeBazaar=true&limit=6 — Wallet analysis
  - FAQ: Which sources are searched? → Always our own catalog (all tools, scored by keyword relevance to your intent). Optionally the live x402 Bazaar — the facilitator-hosted index of other sellers' paid endpoints.
  - FAQ: Why is this useful when I could search the web? → Web search returns marketing pages. This returns directly callable x402 endpoints with exact per-call prices — the difference between research and action.

### Natural Date Parser

Parse natural-language date and time expressions — "in two weeks", "next friday at 3pm", "dec 25th" — into exact ISO 8601 dates. Deterministic parsing (no LLM guessing); relative expressions resolve against a reference moment you control. Use this when an agent needs to "next friday 3pm" → exact ISO dates.

- [Natural Date Parser](https://agentstoolshub.com/dev/natural-date): Parse natural-language date and time expressions — "in two weeks", "next friday at 3pm", "dec 25th" — into exact ISO 8601 dates. Deterministic parsing (no LLM guessing); relative expressions resolve against a reference moment you control. Use this when an agent needs to "next friday 3pm" → exact ISO dates.
  - API: GET https://agentstoolshub.com/api/v1/dev/natural-date?text=next%20friday%20at%203pm&ref=2026-10-01T09%3A00%3A00Z — $0.002/call
  - Params:
    - text (text, required): Expression
    - ref (text, optional): Defaults to now
  - Example: GET https://agentstoolshub.com/api/v1/dev/natural-date?text=next%20friday%20at%203pm&ref=2026-10-01T09%3A00%3A00Z — "next friday at 3pm"
  - Example: GET https://agentstoolshub.com/api/v1/dev/natural-date?text=remind%20me%20in%20two%20weeks&ref=2026-10-01 — "in two weeks"
  - Example: GET https://agentstoolshub.com/api/v1/dev/natural-date?text=deadline%20is%20dec%2025%202026&ref=2026-10-01 — "dec 25 2026"
  - Method: chrono.parse(text, reference, { forwardDate: true }) → ISO 8601 (UTC)
  - FAQ: Why not just ask an LLM for the date? → Language models invent dates — especially for relative expressions anchored to 'now'. This parser is deterministic: same input and reference always produce the same timestamp.
  - FAQ: Which expressions are supported? → Most English patterns: 'tomorrow 9am', 'next friday', 'in 2 weeks', 'dec 25', '3 days ago', 'this weekend', plus times like 'at 3pm'.

### Cron Explainer

Turn a cron expression into plain English, validate it, and compute the exact next execution times. Deterministic — the answer to 'when does this cron actually fire?' without guessing. Use this when an agent needs to explain a cron expression and compute the next runs.

- [Cron Explainer](https://agentstoolshub.com/dev/cron-describe): Turn a cron expression into plain English, validate it, and compute the exact next execution times. Deterministic — the answer to 'when does this cron actually fire?' without guessing. Use this when an agent needs to explain a cron expression and compute the next runs.
  - API: GET https://agentstoolshub.com/api/v1/dev/cron-describe?expr=0%209%20*%20*%201-5&ref=2026-10-01T09%3A00%3A00Z — $0.002/call
  - Params:
    - expr (text, required): 5 fields: minute hour day month weekday
    - ref (text, optional): Reference date (optional)
  - Example: GET https://agentstoolshub.com/api/v1/dev/cron-describe?expr=0%209%20*%20*%201-5&ref=2026-10-01T09%3A00%3A00Z — Weekdays at 9am
  - Example: GET https://agentstoolshub.com/api/v1/dev/cron-describe?expr=*%2F15%20*%20*%20*%20*&ref=2026-10-01T09%3A00%3A00Z — Every 15 minutes
  - Example: GET https://agentstoolshub.com/api/v1/dev/cron-describe?expr=0%200%201%20*%20*&ref=2026-10-01T09%3A00%3A00Z — First of month, midnight
  - Method: description = cronstrue(expr) · next runs = schedule iteration from reference moment
  - FAQ: Which cron dialect is supported? → Standard 5-field cron (minute, hour, day-of-month, month, day-of-week) with common syntax like */n, ranges and lists. Year fields and seconds are not part of the 5-field dialect.
  - FAQ: Are the next runs in UTC? → Yes — cron expressions are timezone-less; the times shown are UTC. Convert to your local zone with the current-time tool if needed.

### RSS / Atom Feed Parser

Fetch an RSS or Atom feed and return normalized JSON items: title, link, publication date (ISO) and summary. Server-side fetching with SSRF guard; handles both RSS 2.0 and Atom dialects. Use this when an agent needs to any feed → clean JSON items, no XML parsing on your side.

- [RSS / Atom Feed Parser](https://agentstoolshub.com/dev/feed-parser): Fetch an RSS or Atom feed and return normalized JSON items: title, link, publication date (ISO) and summary. Server-side fetching with SSRF guard; handles both RSS 2.0 and Atom dialects. Use this when an agent needs to any feed → clean JSON items, no XML parsing on your side.
  - API: GET https://agentstoolshub.com/api/v1/dev/feed-parser?url=https%3A%2F%2Fhnrss.org%2Ffrontpage&limit=10 — $0.005/call
  - Params:
    - url (text, required): Feed URL
    - limit (number, optional): Max items
  - Example: GET https://agentstoolshub.com/api/v1/dev/feed-parser?url=https%3A%2F%2Fhnrss.org%2Ffrontpage&limit=10 — Hacker News front page
  - Example: GET https://agentstoolshub.com/api/v1/dev/feed-parser?url=https%3A%2F%2Ffeeds.bbci.co.uk%2Fnews%2Fworld%2Frss.xml&limit=10 — BBC world news
  - Example: GET https://agentstoolshub.com/api/v1/dev/feed-parser?url=https%3A%2F%2Fwww.nasa.gov%2Fnews-release%2Ffeed%2F&limit=5 — NASA news
  - FAQ: Which formats are supported? → RSS 2.0 and Atom. The parser detects the dialect automatically and normalizes both to the same item shape.
  - FAQ: Where is the full item content? → Summaries appear in the table; the complete item array (title, link, isoDate, contentSnippet) is in `result.artifacts.items` as JSON.

### Archive Lookup (Wayback)

Query the Internet Archive's Wayback index for any URL: when it was first archived, the most recent snapshot, how many years it spans, and recent capture dates. Useful for fact-checking page history, finding deleted content and due-diligence. Use this when an agent needs to how the Internet Archive remembers a URL.

- [Archive Lookup (Wayback)](https://agentstoolshub.com/dev/archive-lookup): Query the Internet Archive's Wayback index for any URL: when it was first archived, the most recent snapshot, how many years it spans, and recent capture dates. Useful for fact-checking page history, finding deleted content and due-diligence. Use this when an agent needs to how the Internet Archive remembers a URL.
  - API: GET https://agentstoolshub.com/api/v1/dev/archive-lookup?url=example.com — $0.005/call
  - Params:
    - url (text, required): URL or domain
  - Example: GET https://agentstoolshub.com/api/v1/dev/archive-lookup?url=example.com — example.com history
  - Example: GET https://agentstoolshub.com/api/v1/dev/archive-lookup?url=wikipedia.org — A long-archived site
  - Example: GET https://agentstoolshub.com/api/v1/dev/archive-lookup?url=example.com%2Fpricing — Specific page
  - FAQ: Does no result mean the site never existed? → It means the Archive has no successful (HTTP 200) capture. Sites can exist uncrawled, and failed captures (4xx/5xx) are filtered out here.
  - FAQ: Can I read the archived page? → Yes — the response includes a replay URL for the latest snapshot in the form web.archive.org/web/{timestamp}/{url}.

### ICS Calendar Parser

Parse iCalendar (.ics) content — meeting invites, conference calendars, exports from Google/Outlook — into structured event JSON: title, start/end, location, organizer and description. Use this when an agent needs to turn .ics calendar files into clean event JSON.

- [ICS Calendar Parser](https://agentstoolshub.com/dev/ics-parser): Parse iCalendar (.ics) content — meeting invites, conference calendars, exports from Google/Outlook — into structured event JSON: title, start/end, location, organizer and description. Use this when an agent needs to turn .ics calendar files into clean event JSON.
  - API: GET https://agentstoolshub.com/api/v1/dev/ics-parser?ics=BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0ABEGIN%3AVEVENT%0ASUMMARY%3AQuarterly%20Review%0ADTSTART%3A20261103T140000Z%0ADTEND%3A20261103T150000Z%0ALOCATION%3ARoom%204%20%2F%20Zoom%0AORGANIZER%3BCN%3DPM%20Office%3Amailto%3Apm%40example.com%0AEND%3AVEVENT%0AEND%3AVCALENDAR — $0.003/call
  - Params:
    - ics (text, required): .ics content
    - limit (number, optional): Max events
  - Example: GET https://agentstoolshub.com/api/v1/dev/ics-parser?ics=BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0ABEGIN%3AVEVENT%0ASUMMARY%3AQuarterly%20Review%0ADTSTART%3A20261103T140000Z%0ADTEND%3A20261103T150000Z%0ALOCATION%3ARoom%204%20%2F%20Zoom%0AORGANIZER%3BCN%3DPM%20Office%3Amailto%3Apm%40example.com%0AEND%3AVEVENT%0AEND%3AVCALENDAR — Simple meeting invite
  - Example: GET https://agentstoolshub.com/api/v1/dev/ics-parser?ics=BEGIN%3AVCALENDAR%0AVERSION%3A2.0%0ABEGIN%3AVEVENT%0ASUMMARY%3AStandup%0ADTSTART%3A20261020T090000Z%0ADTEND%3A20261020T091500Z%0ADESCRIPTION%3ADaily%20sync%0AEND%3AVEVENT%0ABEGIN%3AVEVENT%0ASUMMARY%3ARetro%0ADTSTART%3A20261023T160000Z%0ADTEND%3A20261023T170000Z%0AEND%3AVEVENT%0AEND%3AVCALENDAR — Two events with descriptions
  - Method: ical.js parse → VCALENDAR → VEVENT[] → { summary, start, end, location, organizer, description }
  - FAQ: Does it handle recurring events? → It returns the base event with its RRULE in the description context; expanding recurrence instances needs a recurrence library (planned).
  - FAQ: Are times normalized? → Yes — every start/end is converted to an ISO 8601 UTC timestamp, whatever timezone the file used.

### Email Validator

Validate an email address in two layers: strict RFC-style syntax, then a live DNS MX lookup on the domain to confirm the recipient actually runs mail servers. Catches the typos and fake domains that pure regex misses. Use this when an agent needs to syntax + live MX check — can this address receive mail?.

- [Email Validator](https://agentstoolshub.com/dev/email-validator): Validate an email address in two layers: strict RFC-style syntax, then a live DNS MX lookup on the domain to confirm the recipient actually runs mail servers. Catches the typos and fake domains that pure regex misses. Use this when an agent needs to syntax + live MX check — can this address receive mail?.
  - API: GET https://agentstoolshub.com/api/v1/dev/email-validator?email=someone%40gmail.com — $0.002/call
  - Params:
    - email (text, required): Email address
  - Example: GET https://agentstoolshub.com/api/v1/dev/email-validator?email=someone%40gmail.com — Gmail address
  - Example: GET https://agentstoolshub.com/api/v1/dev/email-validator?email=info%40microsoft.com — Corporate domain
  - Example: GET https://agentstoolshub.com/api/v1/dev/email-validator?email=user%40this-domain-does-not-exist-12345.com — Nonexistent domain
  - Method: valid = syntax ∧ (MX ∃ ∨ A/AAAA ∃) — with the lowest-priority MX as the mail host
  - FAQ: Does a positive result guarantee delivery? → No — it proves the domain can receive mail. Whether the specific mailbox exists is only knowable by sending (or an SMTP-level probe, which many providers block).
  - FAQ: Why check A records when there's no MX? → RFC 5321 implicit MX: domains without MX records must still accept mail at their A/AAAA address. Skipping that check would reject valid addresses.

### Domain Availability Check

Check whether a domain name is registered or available, via the official RDAP registry protocol (404 = available). For registered domains it also returns the registrar and creation/expiration dates — useful when an agent needs to name a product or verify how long a business has existed. Use this when an agent needs to is this domain taken? Registry answer, not a landing page.

- [Domain Availability Check](https://agentstoolshub.com/dev/domain-availability): Check whether a domain name is registered or available, via the official RDAP registry protocol (404 = available). For registered domains it also returns the registrar and creation/expiration dates — useful when an agent needs to name a product or verify how long a business has existed. Use this when an agent needs to is this domain taken? Registry answer, not a landing page.
  - API: GET https://agentstoolshub.com/api/v1/dev/domain-availability?domain=example.com — $0.003/call
  - Params:
    - domain (text, required): Domain
  - Example: GET https://agentstoolshub.com/api/v1/dev/domain-availability?domain=example.com — Registered domain
  - Example: GET https://agentstoolshub.com/api/v1/dev/domain-availability?domain=qx7v2-availability-check.com — Available-sounding domain
  - Example: GET https://agentstoolshub.com/api/v1/dev/domain-availability?domain=vercel.com — io domain
  - FAQ: Why does 'available' have a caveat? → RDAP covers most gTLDs (.com, .io, .ai…) but not every ccTLD has a public RDAP service. A 404 from an uncovered TLD means 'no RDAP data', not necessarily 'available'.
  - FAQ: Is this WHOIS? → It's RDAP — the structured, rate-limit-friendly JSON successor to port-43 WHOIS, run by the same registries.

### Page Claim Verifier

Verify a claim about a web page's content: fetches the page (SSRF-guarded) and reports whether the expected text appears, with the surrounding excerpt as evidence. The deterministic way for an agent to confirm 'the site says X' before acting on it. Use this when an agent needs to does this page actually say that? Checked, not guessed.

- [Page Claim Verifier](https://agentstoolshub.com/dev/page-verify): Verify a claim about a web page's content: fetches the page (SSRF-guarded) and reports whether the expected text appears, with the surrounding excerpt as evidence. The deterministic way for an agent to confirm 'the site says X' before acting on it. Use this when an agent needs to does this page actually say that? Checked, not guessed.
  - API: GET https://agentstoolshub.com/api/v1/dev/page-verify?url=https%3A%2F%2Fexample.com&expect=documentation — $0.005/call
  - Params:
    - url (text, optional): Or provide raw HTML instead
    - html (text, optional): Raw HTML
    - expect (text, required): Expected text
    - caseSensitive (string, one of (false | true), optional): Case sensitive
  - Example: GET https://agentstoolshub.com/api/v1/dev/page-verify?url=https%3A%2F%2Fexample.com&expect=documentation — Does example.com mention documentation?
  - Example: GET https://agentstoolshub.com/api/v1/dev/page-verify?html=%3Chtml%3E%3Cbody%3E30-day%20money-back%20guarantee%20on%20all%20plans%3C%2Fbody%3E%3C%2Fhtml%3E&expect=money-back — Inline HTML check
  - FAQ: What kinds of claims can this verify? → Claims about page CONTENT: pricing mentions, policy phrases, feature names, guarantees. It cannot verify truth about the physical world — only what the page literally contains.
  - FAQ: JavaScript-rendered pages? → No — like all server-side fetchers it reads served HTML. Most pricing/policy claims live in static HTML or metadata.

### API Health Check

Probe a GET endpoint several times and report status codes and latency statistics (min/avg/max). The cheap way for an agent to verify an API — for example one found on the x402 Bazaar — responds before spending real money calling it. Use this when an agent needs to status and latency stats — test an API before relying on it.

- [API Health Check](https://agentstoolshub.com/dev/api-health-check): Probe a GET endpoint several times and report status codes and latency statistics (min/avg/max). The cheap way for an agent to verify an API — for example one found on the x402 Bazaar — responds before spending real money calling it. Use this when an agent needs to status and latency stats — test an API before relying on it.
  - API: GET https://agentstoolshub.com/api/v1/dev/api-health-check?url=https%3A%2F%2Fapi.frankfurter.dev%2Fv1%2Flatest%3Fbase%3DUSD&runs=3 — $0.005/call
  - Params:
    - url (text, required): GET endpoint
    - runs (number, optional): Test requests
    - timeoutMs (number, optional): Timeout per request (ms)
  - Example: GET https://agentstoolshub.com/api/v1/dev/api-health-check?url=https%3A%2F%2Fapi.frankfurter.dev%2Fv1%2Flatest%3Fbase%3DUSD&runs=3 — Check a public API
  - Example: GET https://agentstoolshub.com/api/v1/dev/api-health-check?url=https%3A%2F%2Fthis-domain-does-not-exist-xyz987.com%2Fapi&runs=2 — Unreliable endpoint demo
  - FAQ: Only GET requests? → Yes — health probes must be side-effect free. POST/PUT testing would trigger real actions on the target system.
  - FAQ: Why might latency differ for me? → Probes run from our server's network path. Treat relative results (unstable vs stable, fast vs slow) as reliable; absolute ms depend on geography.

### User-Agent Parser

Parse a User-Agent header into structured data: browser (name/version), rendering engine, operating system, and device type/vendor/model. Deterministic — the same string always parses identically. Use this when an agent needs to uA string → browser, engine, OS and device.

- [User-Agent Parser](https://agentstoolshub.com/dev/useragent-parse): Parse a User-Agent header into structured data: browser (name/version), rendering engine, operating system, and device type/vendor/model. Deterministic — the same string always parses identically. Use this when an agent needs to uA string → browser, engine, OS and device.
  - API: GET https://agentstoolshub.com/api/v1/dev/useragent-parse?userAgent=Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F126.0.0.0%20Safari%2F537.36 — $0.002/call
  - Params:
    - userAgent (text, required): User-Agent string
  - Example: GET https://agentstoolshub.com/api/v1/dev/useragent-parse?userAgent=Mozilla%2F5.0%20(Windows%20NT%2010.0%3B%20Win64%3B%20x64)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F126.0.0.0%20Safari%2F537.36 — Chrome on Windows
  - Example: GET https://agentstoolshub.com/api/v1/dev/useragent-parse?userAgent=Mozilla%2F5.0%20(iPhone%3B%20CPU%20iPhone%20OS%2017_5%20like%20Mac%20OS%20X)%20AppleWebKit%2F605.1.15%20(KHTML%2C%20like%20Gecko)%20Version%2F17.5%20Mobile%2F15E148%20Safari%2F604.1 — iPhone Safari
  - Example: GET https://agentstoolshub.com/api/v1/dev/useragent-parse?userAgent=GPTBot%2F1.1%20(%2Bhttps%3A%2F%2Fopenai.com%2Fgptbot) — An agent's own client
  - FAQ: Can I trust UA strings? → No — they're client-supplied and trivially spoofed. Great for analytics and formatting; never for security decisions.

### Table Extractor

Extract every HTML table from a page (or raw HTML) as structured JSON: headers and rows kept intact. The deterministic answer to 'get the pricing table / comparison table / stats table from this page' — no vision model needed. Use this when an agent needs to hTML tables → structured JSON rows and columns.

- [Table Extractor](https://agentstoolshub.com/dev/table-extract): Extract every HTML table from a page (or raw HTML) as structured JSON: headers and rows kept intact. The deterministic answer to 'get the pricing table / comparison table / stats table from this page' — no vision model needed. Use this when an agent needs to hTML tables → structured JSON rows and columns.
  - API: GET https://agentstoolshub.com/api/v1/dev/table-extract?html=%3Chtml%3E%3Cbody%3E%3Ctable%3E%3Ctr%3E%3Cth%3EPlan%3C%2Fth%3E%3Cth%3EPrice%3C%2Fth%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3EFree%3C%2Ftd%3E%3Ctd%3E%240%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3EPro%3C%2Ftd%3E%3Ctd%3E%2429%3C%2Ftd%3E%3C%2Ftr%3E%3C%2Ftable%3E%3C%2Fbody%3E%3C%2Fhtml%3E — $0.010/call
  - Params:
    - url (text, optional): Or provide raw HTML instead
    - html (text, optional): Raw HTML
    - limit (number, optional): Max tables
  - Example: GET https://agentstoolshub.com/api/v1/dev/table-extract?html=%3Chtml%3E%3Cbody%3E%3Ctable%3E%3Ctr%3E%3Cth%3EPlan%3C%2Fth%3E%3Cth%3EPrice%3C%2Fth%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3EFree%3C%2Ftd%3E%3Ctd%3E%240%3C%2Ftd%3E%3C%2Ftr%3E%3Ctr%3E%3Ctd%3EPro%3C%2Ftd%3E%3Ctd%3E%2429%3C%2Ftd%3E%3C%2Ftr%3E%3C%2Ftable%3E%3C%2Fbody%3E%3C%2Fhtml%3E — Inline HTML table
  - Example: GET https://agentstoolshub.com/api/v1/dev/table-extract?url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FList_of_countries_by_GDP_(nominal)&limit=3 — From a page
  - FAQ: JavaScript-rendered tables? → No — server-side fetches see served HTML only. Tables injected by client-side scripts are invisible; the tool says when it finds none.
  - FAQ: Where is the structured data? → `result.artifacts.tables` — a JSON array of { headers, rows, markdown } per table.

## 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. Use this when an agent needs to exact Ethereum unit conversion — no float errors.

- [Wei / Gwei / ETH Converter](https://agentstoolshub.com/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. Use this when an agent needs to exact Ethereum unit conversion — no float errors.
  - API: GET https://agentstoolshub.com/api/v1/crypto/wei-eth-converter?value=21000&from=gwei&to=eth — $0.002/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://agentstoolshub.com/api/v1/crypto/wei-eth-converter?value=21000&from=gwei&to=eth — 21,000 gwei → ETH
  - Example: GET https://agentstoolshub.com/api/v1/crypto/wei-eth-converter?value=1&from=eth&to=wei — 1 ETH → wei
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to transaction cost in ETH and USD from gas × gwei.

- [Gas Fee Calculator](https://agentstoolshub.com/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. Use this when an agent needs to transaction cost in ETH and USD from gas × gwei.
  - API: GET https://agentstoolshub.com/api/v1/crypto/gas-fee-calculator?gasUnits=21000&gweiPrice=10&ethPriceUsd=3000 — $0.003/call
  - Params:
    - gasUnits (number, required): Gas units
    - gweiPrice (number, required): Gas price (gwei)
    - ethPriceUsd (number, required): ETH price (USD)
  - Example: GET https://agentstoolshub.com/api/v1/crypto/gas-fee-calculator?gasUnits=21000&gweiPrice=10&ethPriceUsd=3000 — Plain transfer: 21,000 gas @ 10 gwei
  - Example: GET https://agentstoolshub.com/api/v1/crypto/gas-fee-calculator?gasUnits=65000&gweiPrice=15&ethPriceUsd=3000 — ERC-20 transfer: 65,000 gas @ 15 gwei
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to live token prices and 24h change via CoinGecko.

- [Crypto Price (Live)](https://agentstoolshub.com/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. Use this when an agent needs to live token prices and 24h change via CoinGecko.
  - API: GET https://agentstoolshub.com/api/v1/crypto/price?ids=bitcoin%2Cethereum&vs=usd — $0.005/call
  - Params:
    - ids (text, required): Coin ids or tickers
    - vs (string, one of (usd | eur | gbp | jpy), optional): Quote currency
  - Example: GET https://agentstoolshub.com/api/v1/crypto/price?ids=bitcoin%2Cethereum&vs=usd — BTC & ETH in USD
  - Example: GET https://agentstoolshub.com/api/v1/crypto/price?ids=sol&vs=usd — By ticker: sol
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to cSPRNG passwords, hex keys and uniform integers.

- [Secure Random Generator](https://agentstoolshub.com/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. Use this when an agent needs to cSPRNG passwords, hex keys and uniform integers.
  - API: GET https://agentstoolshub.com/api/v1/crypto/random-generator?mode=password&length=24 — $0.002/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://agentstoolshub.com/api/v1/crypto/random-generator?mode=password&length=24 — 24-char password, all charsets
  - Example: GET https://agentstoolshub.com/api/v1/crypto/random-generator?mode=hex&length=64 — 64-char hex API key
  - Example: GET https://agentstoolshub.com/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.

### Wallet Snapshot (Live)

One-call on-chain profile of any Ethereum or Base wallet via Blockscout: native balance, transaction and transfer counts, activity recency, top token holdings, and most frequent recent counterparties — with fresh-wallet and high-volume flags. The 'who is this address?' conclusion, not raw RPC data. Use this when an agent needs to on-chain wallet profile: balance, activity, tokens, counterparties.

- [Wallet Snapshot (Live)](https://agentstoolshub.com/crypto/wallet-snapshot): One-call on-chain profile of any Ethereum or Base wallet via Blockscout: native balance, transaction and transfer counts, activity recency, top token holdings, and most frequent recent counterparties — with fresh-wallet and high-volume flags. The 'who is this address?' conclusion, not raw RPC data. Use this when an agent needs to on-chain wallet profile: balance, activity, tokens, counterparties.
  - API: GET https://agentstoolshub.com/api/v1/crypto/wallet-snapshot?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum — $0.010/call
  - Params:
    - address (text, required): Wallet address
    - chain (string, one of (base | ethereum), optional): Chain
  - Example: GET https://agentstoolshub.com/api/v1/crypto/wallet-snapshot?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum — vitalik.eth on Ethereum
  - Example: GET https://agentstoolshub.com/api/v1/crypto/wallet-snapshot?address=0x4200000000000000000000000000000000000010&chain=base — Base bridge on Base
  - Example: GET https://agentstoolshub.com/api/v1/crypto/wallet-snapshot?address=0x71660c4005BA85c37ccec55d0C4493E66Fe775d3&chain=ethereum — Coinbase 1 hot wallet
  - FAQ: Why a snapshot instead of raw transaction data? → Raw RPC gives you 10,000 transactions; an agent needs the five signals that describe a wallet. This tool computes the conclusions — counts, counterparties, flags — so the agent spends tokens on decisions, not parsing.
  - FAQ: Does it track profit and loss? → Not yet. P&L requires historical prices per acquisition — planned as a premium deep-analysis tier (Phase 4).

### New Pool Scanner

Scan newly created DEX pools on Solana, Base, Ethereum, BSC, Arbitrum or Polygon, filtered by minimum liquidity and maximum age. Each pool comes with liquidity (USD), 24h volume, FDV, buy/sell counts and automatic risk flags (too fresh, thin liquidity, sell pressure). Powered by GeckoTerminal's public API. Use this when an agent needs to fresh DEX launches with liquidity, volume and risk flags.

- [New Pool Scanner](https://agentstoolshub.com/crypto/new-pools): Scan newly created DEX pools on Solana, Base, Ethereum, BSC, Arbitrum or Polygon, filtered by minimum liquidity and maximum age. Each pool comes with liquidity (USD), 24h volume, FDV, buy/sell counts and automatic risk flags (too fresh, thin liquidity, sell pressure). Powered by GeckoTerminal's public API. Use this when an agent needs to fresh DEX launches with liquidity, volume and risk flags.
  - API: GET https://agentstoolshub.com/api/v1/crypto/new-pools?network=solana&minLiquidityUsd=5000&maxAgeHours=24&limit=10 — $0.005/call
  - Params:
    - network (string, one of (solana | base | eth | bsc | arbitrum | polygon), optional): Network
    - minLiquidityUsd (number, optional): Min liquidity (USD)
    - maxAgeHours (number, optional): Max age (hours)
    - limit (number, optional): Max pools
  - Example: GET https://agentstoolshub.com/api/v1/crypto/new-pools?network=solana&minLiquidityUsd=5000&maxAgeHours=24&limit=10 — Fresh Solana pools, $5k+ liquidity
  - Example: GET https://agentstoolshub.com/api/v1/crypto/new-pools?network=base&minLiquidityUsd=2000&maxAgeHours=6&limit=10 — Base launches, last 6h
  - Example: GET https://agentstoolshub.com/api/v1/crypto/new-pools?network=eth&minLiquidityUsd=20000&maxAgeHours=24&limit=10 — Ethereum new pools, $20k+
  - FAQ: What liquidity threshold should I use? → Under $5k means you likely cannot exit a position cleanly. $5k–$50k is still speculative; serious launches usually graduate past $50k.
  - FAQ: Does a flag mean avoid? → Flags are filters, not verdicts — 'newborn' is expected in a launches feed. Combine with token-safety for contract-level honeypot/mint checks.

### Transaction Explainer

Explain what an EVM transaction would actually do: decodes the calldata (ERC-20 transfers/approvals via known ABIs, unknown selectors via the 4byte directory) and simulates the call against live chain state to report the outcome — including unlimited-approval warnings — without sending anything. Use this when an agent needs to decode and simulate a transaction — before signing it.

- [Transaction Explainer](https://agentstoolshub.com/crypto/tx-explain): Explain what an EVM transaction would actually do: decodes the calldata (ERC-20 transfers/approvals via known ABIs, unknown selectors via the 4byte directory) and simulates the call against live chain state to report the outcome — including unlimited-approval warnings — without sending anything. Use this when an agent needs to decode and simulate a transaction — before signing it.
  - API: GET https://agentstoolshub.com/api/v1/crypto/tx-explain?chain=base&to=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&data=0xa9059cbb000000000000000000000000d8dA6BF26964aF9D7eEd9e03E53415D37aA960450000000000000000000000000000000000000000000000000000000000002710 — $0.015/call
  - Params:
    - chain (string, one of (base | ethereum), optional): Chain
    - to (text, required): To address
    - data (text, required): Calldata (0x hex)
    - value (text, optional): Value (wei, optional)
  - Example: GET https://agentstoolshub.com/api/v1/crypto/tx-explain?chain=base&to=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&data=0xa9059cbb000000000000000000000000d8dA6BF26964aF9D7eEd9e03E53415D37aA960450000000000000000000000000000000000000000000000000000000000002710 — USDC transfer on Base (0.01 USDC)
  - Example: GET https://agentstoolshub.com/api/v1/crypto/tx-explain?chain=ethereum&to=0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2&data=0x095ea7b30000000000000000000000006921c7aa9ca6d1f9c7a29e48a5d0c99c5c8caf39ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff — Unlimited approval attempt
  - Example: GET https://agentstoolshub.com/api/v1/crypto/tx-explain?chain=base&to=0x4200000000000000000000000000000000000006&data=0x&value=1000000000000000 — Plain ETH value send (no calldata)
  - FAQ: Does simulation cost gas or send anything? → No. It uses eth_call — a read-only execution against the current chain state. Nothing is broadcast.
  - FAQ: What should I do about an UNLIMITED approval warning? → Prefer exact-amount approvals, or revoke after use. Unlimited approvals are the most common way wallet drainers operate.

## NFT Intelligence

### NFT Collection Due Diligence

Full on-chain due-diligence report for any NFT collection: mint supply, unique holders, top-10 ownership concentration with a verdict, wash-trading indicators from transfer patterns, and recent activity trend. Read straight from the chain — the check an agent runs before its human buys. Use this when an agent needs to the Carfax for NFT collections — holders, concentration, wash signals.

- [NFT Collection Due Diligence](https://agentstoolshub.com/nft/collection-due-diligence): Full on-chain due-diligence report for any NFT collection: mint supply, unique holders, top-10 ownership concentration with a verdict, wash-trading indicators from transfer patterns, and recent activity trend. Read straight from the chain — the check an agent runs before its human buys. Use this when an agent needs to the Carfax for NFT collections — holders, concentration, wash signals.
  - API: GET https://agentstoolshub.com/api/v1/nft/collection-due-diligence?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum — $0.025/call
  - Params:
    - contract (text, required): Collection contract
    - chain (string, one of (ethereum | base), optional): Chain
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-due-diligence?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum — Bored Ape Yacht Club
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-due-diligence?contract=0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af16eA857&chain=ethereum — ENS names (ERC-721)
  - FAQ: Does a low wash score guarantee genuine trading? → No — the heuristics detect common wash patterns (self-transfers, back-and-forth flows) in recent history. Sophisticated wash trading across many fresh wallets can evade them.
  - FAQ: Does it include floor price and marketplace listings? → No — floor data requires marketplace APIs. This report is deliberately chain-only: ownership, concentration and activity are the parts that can't be manipulated by listing prices.

### NFT Holder Distribution

Top holders of any NFT collection with exact quantities, individual and cumulative ownership percentages, and concentration statistics — the distribution picture agents need before valuing or recommending a collection. Use this when an agent needs to who owns the collection, and how concentrated is it.

- [NFT Holder Distribution](https://agentstoolshub.com/nft/holder-distribution): Top holders of any NFT collection with exact quantities, individual and cumulative ownership percentages, and concentration statistics — the distribution picture agents need before valuing or recommending a collection. Use this when an agent needs to who owns the collection, and how concentrated is it.
  - API: GET https://agentstoolshub.com/api/v1/nft/holder-distribution?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum&limit=20 — $0.010/call
  - Params:
    - contract (text, required): Collection contract
    - chain (string, one of (ethereum | base), optional): Chain
    - limit (number, optional): Holders to show
  - Example: GET https://agentstoolshub.com/api/v1/nft/holder-distribution?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum&limit=20 — BAYC top 20 holders
  - Example: GET https://agentstoolshub.com/api/v1/nft/holder-distribution?contract=0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af16eA857&chain=ethereum&limit=10 — ENS top 10
  - FAQ: Do marketplace contracts show as holders? → Sometimes — items listed on custodial marketplaces appear under the marketplace contract. Large single-address holdings that look like marketplaces should be interpreted accordingly.
  - FAQ: How concentrated is too concentrated? → Rules of thumb: top-10 under ~20% is well distributed, 30–50% elevated, above 50% means a handful of wallets control the floor.

### NFT Collection Activity

Live transfer feed of an NFT collection with per-address accumulation analysis: net quantities received vs sent over recent activity, ranking the buyers adding to positions and the wallets exiting. The actionable view behind the raw transfer list. Use this when an agent needs to who is accumulating and who is exiting — right now.

- [NFT Collection Activity](https://agentstoolshub.com/nft/collection-activity): Live transfer feed of an NFT collection with per-address accumulation analysis: net quantities received vs sent over recent activity, ranking the buyers adding to positions and the wallets exiting. The actionable view behind the raw transfer list. Use this when an agent needs to who is accumulating and who is exiting — right now.
  - API: GET https://agentstoolshub.com/api/v1/nft/collection-activity?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum&limit=20 — $0.005/call
  - Params:
    - contract (text, required): Collection contract
    - chain (string, one of (ethereum | base), optional): Chain
    - limit (number, optional): Transfers to analyze
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-activity?contract=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&chain=ethereum&limit=20 — BAYC recent activity
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-activity?contract=0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af16eA857&chain=ethereum&limit=20 — ENS activity
  - FAQ: What window does 'recent' cover? → The most recent transfers returned by the chain (typically the last few blocks to a few hours depending on collection velocity). It's a live pulse, not a historical report.
  - FAQ: Do marketplace settlements count as accumulation? → Purchases via custodial marketplace contracts show the contract as the counterparty — genuine buyer accumulation is visible as net-receiving wallets.

### Wallet NFT Portfolio

Look up an address's NFT portfolio across collections: each collection held, quantity owned, sorted by size. The enrichment endpoint for agents profiling wallets — pairs with wallet-snapshot for the full picture. Use this when an agent needs to every NFT collection a wallet holds, in one call.

- [Wallet NFT Portfolio](https://agentstoolshub.com/nft/wallet-nfts): Look up an address's NFT portfolio across collections: each collection held, quantity owned, sorted by size. The enrichment endpoint for agents profiling wallets — pairs with wallet-snapshot for the full picture. Use this when an agent needs to every NFT collection a wallet holds, in one call.
  - API: GET https://agentstoolshub.com/api/v1/nft/wallet-nfts?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum&limit=20 — $0.005/call
  - Params:
    - address (text, required): Wallet address
    - chain (string, one of (ethereum | base), optional): Chain
    - limit (number, optional): Max collections
  - Example: GET https://agentstoolshub.com/api/v1/nft/wallet-nfts?address=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&chain=ethereum&limit=20 — vitalik.eth NFT portfolio
  - Example: GET https://agentstoolshub.com/api/v1/nft/wallet-nfts?address=0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6&chain=base&limit=10 — Base portfolio
  - FAQ: Does it include item-level detail? → It returns per-collection quantities. Item-level metadata (images, traits) would multiply the payload — available as a follow-up parameter if needed.

### NFT Collection Comparison

Compare any two NFT collections on the full due-diligence metric set: supply, holders, holder ratio, top-10 concentration, wash-trading score and activity trend — with a winner per metric. The head-to-head an agent runs before recommending one collection over another. Use this when an agent needs to two collections side-by-side, metric by metric verdicts.

- [NFT Collection Comparison](https://agentstoolshub.com/nft/collection-compare): Compare any two NFT collections on the full due-diligence metric set: supply, holders, holder ratio, top-10 concentration, wash-trading score and activity trend — with a winner per metric. The head-to-head an agent runs before recommending one collection over another. Use this when an agent needs to two collections side-by-side, metric by metric verdicts.
  - API: GET https://agentstoolshub.com/api/v1/nft/collection-compare?contractA=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&contractB=0x60E4d786628Fea6478F785A6d7e704777c86a7c6&chain=ethereum — $0.025/call
  - Params:
    - contractA (text, required): Collection A
    - contractB (text, required): Collection B
    - chain (string, one of (ethereum | base), optional): Chain
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-compare?contractA=0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D&contractB=0x60E4d786628Fea6478F785A6d7e704777c86a7c6&chain=ethereum — BAYC vs MAYC
  - Example: GET https://agentstoolshub.com/api/v1/nft/collection-compare?contractA=0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af16eA857&contractB=0x03b8C62aF4C6cAe530594f3E6ABDf4e704f5d9c6&chain=ethereum — ENS vs Base, Introduced
  - FAQ: How is the winner decided? → Per metric, not overall: larger community, better holder spread, lower concentration, cleaner wash score, more activity. Agents weigh metrics according to their own use case.

## Finance & Business

### ROI Calculator

Calculate return on investment: profit (or loss) and the percentage return relative to the initial amount invested. Use this when an agent needs to return on investment as a percentage.

- [ROI Calculator](https://agentstoolshub.com/finance/roi-calculator): Calculate return on investment: profit (or loss) and the percentage return relative to the initial amount invested. Use this when an agent needs to return on investment as a percentage.
  - API: GET https://agentstoolshub.com/api/v1/finance/roi-calculator?initial=10000&final=12500 — $0.002/call
  - Params:
    - initial (number, required): Amount invested
    - final (number, required): Final value
  - Example: GET https://agentstoolshub.com/api/v1/finance/roi-calculator?initial=10000&final=12500 — 10,000 → 12,500
  - Example: GET https://agentstoolshub.com/api/v1/finance/roi-calculator?initial=5000&final=4200 — Losing trade: 5,000 → 4,200
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to compound annual growth rate, time-normalized.

- [CAGR Calculator](https://agentstoolshub.com/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. Use this when an agent needs to compound annual growth rate, time-normalized.
  - API: GET https://agentstoolshub.com/api/v1/finance/cagr-calculator?initial=10000&final=16000&years=3 — $0.002/call
  - Params:
    - initial (number, required): Initial value
    - final (number, required): Final value
    - years (number, required): Years
  - Example: GET https://agentstoolshub.com/api/v1/finance/cagr-calculator?initial=10000&final=16000&years=3 — 10,000 → 16,000 in 3 years
  - Example: GET https://agentstoolshub.com/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://agentstoolshub.com/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. Use this when an agent needs to profit margin vs markup, both computed.

- [Margin & Markup Calculator](https://agentstoolshub.com/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. Use this when an agent needs to profit margin vs markup, both computed.
  - API: GET https://agentstoolshub.com/api/v1/finance/margin-calculator?cost=60&price=100 — $0.002/call
  - Params:
    - cost (number, required): Cost
    - price (number, required): Selling price
  - Example: GET https://agentstoolshub.com/api/v1/finance/margin-calculator?cost=60&price=100 — Cost 60, price 100
  - Example: GET https://agentstoolshub.com/api/v1/finance/margin-calculator?cost=4&price=29 — SaaS seat: cost 4, price 29
  - Example: GET https://agentstoolshub.com/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. Use this when an agent needs to structure, length and mod-97 checksum validation.

- [IBAN Validator](https://agentstoolshub.com/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. Use this when an agent needs to structure, length and mod-97 checksum validation.
  - API: GET https://agentstoolshub.com/api/v1/finance/iban-validator?iban=DE89%203704%200044%200532%200130%2000 — $0.003/call
  - Params:
    - iban (text, required): Spaces are ignored
  - Example: GET https://agentstoolshub.com/api/v1/finance/iban-validator?iban=DE89%203704%200044%200532%200130%2000 — Valid German IBAN
  - Example: GET https://agentstoolshub.com/api/v1/finance/iban-validator?iban=GB29%20NWBK%206016%201331%209268%2019 — Valid UK IBAN
  - Example: GET https://agentstoolshub.com/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.

