{"openapi":"3.1.0","info":{"title":"AgentTools API","version":"0.1.0","description":"Paid JSON APIs for AI agents. Every endpoint is monetized with the x402 protocol: request without payment → 402 with instructions → pay USDC on eip155:8453 → retry with X-PAYMENT header → 200. Free docs at https://agenttools-hub.vercel.app/for-agents, tool map at https://agenttools-hub.vercel.app/llms.txt. Tip jar: GET https://agenttools-hub.vercel.app/api/tip?amount=1.00 (dynamic price).","x-logo":{"altText":"AgentTools"}},"servers":[{"url":"https://agenttools-hub.vercel.app"}],"paths":{"/api/v1/calculators/percentage-calculator":{"get":{"operationId":"calculators_percentage_calculator","summary":"Percentage Calculator","description":"Calculate X% of Y, what percent X is of Y, and the percent change between two values — with step-by-step working shown.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"x","in":"query","required":true,"description":"X","schema":{"type":"number"}},{"name":"y","in":"query","required":true,"description":"Y","schema":{"type":"number"}},{"name":"op","in":"query","required":false,"description":"Operation","schema":{"type":"string","enum":["percent_of","what_percent","change"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/percentage-calculator","input":{"x":15,"y":200,"op":"percent_of"},"result":{"value":30,"answer":"30","answerLabel":"15% of 200","steps":["15% of 200 = 15 ÷ 100 × 200 = 30"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"x":{"type":"number","description":"X"},"y":{"type":"number","description":"Y"},"op":{"type":"string","enum":["percent_of","what_percent","change"],"description":"Operation"}},"required":["x","y"]}}},"/api/v1/dev/base64-encode":{"get":{"operationId":"dev_base64_encode","summary":"Base64 Encoder / Decoder","description":"Encode text to base64 or decode base64 back to text. Full UTF-8 support including emoji and non-Latin scripts.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"direction","in":"query","required":false,"description":"Direction","schema":{"type":"string","enum":["encode","decode"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/base64-encode","input":{"text":"Hello, world!","direction":"encode"},"result":{"value":null,"answer":"SGVsbG8sIHdvcmxkIQ==","answerLabel":"Base64","details":[{"label":"Input length","value":"13 characters"},{"label":"Encoded length","value":"20 characters"}],"steps":["UTF-8 encode the input","Map each 3-byte group to 4 base64 characters"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"direction":{"type":"string","enum":["encode","decode"],"description":"Direction"}},"required":["text"]}}},"/api/v1/databases/countries":{"get":{"operationId":"databases_countries","summary":"Countries Database","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["databases"],"parameters":[{"name":"country","in":"query","required":false,"description":"Leave empty to list countries instead.","schema":{"type":"string"}},{"name":"region","in":"query","required":false,"description":"Region filter","schema":{"type":"string","enum":["","Africa","Americas","Asia","Europe","Oceania","Antarctic"]}},{"name":"limit","in":"query","required":false,"description":"Max rows","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"databases/countries","input":{"country":"Germany"},"result":{"value":null,"answer":"🇩🇪 Germany (DE)","answerLabel":"Country profile","details":[{"label":"Capital","value":"Berlin"},{"label":"Region","value":"Europe — Western Europe"},{"label":"Population","value":"83,491,249"},{"label":"Area","value":"357,114 km²"},{"label":"Currency","value":"EUR (Euro)"},{"label":"Languages","value":"German"},{"label":"Internet TLD","value":".de"},{"label":"Calling code","value":"+49"}],"table":{"columns":["Field","Value"],"rows":[["ISO code","DE"],["Capital","Berlin"],["Region","Europe — Western Europe"],["Population",83491249],["Area (km²)",357114],["Currency","EUR (Euro)"],["Languages","German"],["Calling code","+49"],["TLD",".de"]]}}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"country":{"type":"string","description":"Leave empty to list countries instead."},"region":{"type":"string","enum":["","Africa","Americas","Asia","Europe","Oceania","Antarctic"],"description":"Region filter"},"limit":{"type":"number","description":"Max rows"}},"required":[]}}},"/api/v1/calculators/discount-calculator":{"get":{"operationId":"calculators_discount_calculator","summary":"Discount Calculator","description":"Calculate the final sale price and the amount saved for any price and percent-off discount, with the working shown.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"price","in":"query","required":true,"description":"Original price","schema":{"type":"number"}},{"name":"discount","in":"query","required":true,"description":"Discount %","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/discount-calculator","input":{"price":79.99,"discount":20},"result":{"value":63.992,"answer":"63.99","answerLabel":"Final price after 20% off","details":[{"label":"You save","value":"16"},{"label":"Original price","value":"79.99"}],"steps":["Savings = 79.99 × 20 ÷ 100 = 16","Final price = 79.99 − 16 = 63.99"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"price":{"type":"number","description":"Original price"},"discount":{"type":"number","description":"Discount %"}},"required":["price","discount"]}}},"/api/v1/calculators/tip-calculator":{"get":{"operationId":"calculators_tip_calculator","summary":"Tip Calculator","description":"Calculate the tip for any bill, the grand total, and how much each person pays when splitting. Defaults to a 15% tip.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"bill","in":"query","required":true,"description":"Bill amount","schema":{"type":"number"}},{"name":"tipPercent","in":"query","required":false,"description":"Tip %","schema":{"type":"number"}},{"name":"people","in":"query","required":false,"description":"Split between","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/tip-calculator","input":{"bill":64.5,"tipPercent":15,"people":1},"result":{"value":74.175,"answer":"74.18","answerLabel":"Total with 15% tip","details":[{"label":"Tip amount","value":"9.68"},{"label":"Bill","value":"64.5"}],"steps":["Tip = 64.5 × 15 ÷ 100 = 9.68","Total = 64.5 + 9.68 = 74.18"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"bill":{"type":"number","description":"Bill amount"},"tipPercent":{"type":"number","description":"Tip %"},"people":{"type":"number","description":"Split between"}},"required":["bill"]}}},"/api/v1/calculators/vat-calculator":{"get":{"operationId":"calculators_vat_calculator","summary":"VAT Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"amount","in":"query","required":true,"description":"Amount","schema":{"type":"number"}},{"name":"country","in":"query","required":false,"description":"Country (standard rate)","schema":{"type":"string","enum":["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"]}},{"name":"op","in":"query","required":false,"description":"Direction","schema":{"type":"string","enum":["add","remove"]}},{"name":"rate","in":"query","required":false,"description":"Custom rate % (optional)","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/vat-calculator","input":{"amount":100,"country":"DE","op":"add"},"result":{"value":119,"answer":"119","answerLabel":"Gross (incl. 19% VAT)","details":[{"label":"VAT amount","value":"19"},{"label":"Net (excl. VAT)","value":"100"},{"label":"Rate used","value":"19% (DE standard)"}],"steps":["VAT = 100 × 19 ÷ 100 = 19","Gross = 100 + 19 = 119"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"amount":{"type":"number","description":"Amount"},"country":{"type":"string","enum":["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"],"description":"Country (standard rate)"},"op":{"type":"string","enum":["add","remove"],"description":"Direction"},"rate":{"type":"number","description":"Custom rate % (optional)"}},"required":["amount"]}}},"/api/v1/calculators/bmi-calculator":{"get":{"operationId":"calculators_bmi_calculator","summary":"BMI Calculator","description":"Calculate Body Mass Index from weight (kg) and height (cm), with the WHO weight category and the healthy BMI weight range for your height.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"weight","in":"query","required":true,"description":"Weight (kg)","schema":{"type":"number"}},{"name":"height","in":"query","required":true,"description":"Height (cm)","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/bmi-calculator","input":{"weight":70,"height":175},"result":{"value":22.857143,"answer":"22.86","answerLabel":"BMI — Healthy weight","details":[{"label":"WHO category","value":"Healthy weight"},{"label":"Healthy range for height","value":"56.66–76.26 kg"}],"steps":["70 ÷ (1.75 m)² = 70 ÷ 3.06 = 22.86"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"weight":{"type":"number","description":"Weight (kg)"},"height":{"type":"number","description":"Height (cm)"}},"required":["weight","height"]}}},"/api/v1/calculators/date-difference-calculator":{"get":{"operationId":"calculators_date_difference_calculator","summary":"Date Difference Calculator","description":"Count the total days between two dates, plus the breakdown in weeks and days and in calendar years, months and days.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"start","in":"query","required":true,"description":"ISO format YYYY-MM-DD","schema":{"type":"string"}},{"name":"end","in":"query","required":true,"description":"ISO format YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/date-difference-calculator","input":{"start":"2024-01-01","end":"2024-12-31"},"result":{"value":365,"answer":"365 days","answerLabel":"2024-01-01 → 2024-12-31","details":[{"label":"Weeks + days","value":"52 weeks, 1 days"},{"label":"Calendar breakdown","value":"11 months, 30 days"},{"label":"Total hours","value":"8,760"}],"steps":["Both dates converted to UTC timestamps","(2024-12-31 − 2024-01-01) ÷ 86,400 = 365 days"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"start":{"type":"string","description":"ISO format YYYY-MM-DD"},"end":{"type":"string","description":"ISO format YYYY-MM-DD"}},"required":["start","end"]}}},"/api/v1/calculators/age-calculator":{"get":{"operationId":"calculators_age_calculator","summary":"Age Calculator","description":"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).\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"birth","in":"query","required":true,"description":"YYYY-MM-DD","schema":{"type":"string"}},{"name":"on","in":"query","required":false,"description":"Defaults to today, YYYY-MM-DD","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/age-calculator","input":{"birth":"1990-06-15","on":"2026-09-01"},"result":{"value":36,"answer":"36 years, 2 months, 17 days","answerLabel":"Age at 2026-09-01","details":[{"label":"Total days lived","value":"13,227"},{"label":"Total weeks","value":"1,889"},{"label":"Next birthday in","value":"287 days"}],"steps":["Birth 1990-06-15 → reference 2026-09-01 (UTC)","Calendar difference = 36y 2m 17d"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"birth":{"type":"string","description":"YYYY-MM-DD"},"on":{"type":"string","description":"Defaults to today, YYYY-MM-DD"}},"required":["birth"]}}},"/api/v1/calculators/loan-payment-calculator":{"get":{"operationId":"calculators_loan_payment_calculator","summary":"Loan Payment Calculator","description":"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).\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"principal","in":"query","required":true,"description":"Loan amount","schema":{"type":"number"}},{"name":"annualRate","in":"query","required":true,"description":"Annual rate %","schema":{"type":"number"}},{"name":"years","in":"query","required":true,"description":"Term (years)","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/loan-payment-calculator","input":{"principal":300000,"annualRate":4.5,"years":30},"result":{"value":1520.055929,"answer":"1,520.06 / month","answerLabel":"360 monthly payments","details":[{"label":"Total repaid","value":"547,220.13"},{"label":"Total interest","value":"247,220.13"},{"label":"Interest as % of principal","value":"82.41%"}],"steps":["r = 4.5% ÷ 12 = 0.375% monthly","n = 30 × 12 = 360 payments","M = P · r · (1+r)ⁿ ÷ ((1+r)ⁿ − 1) = 1,520.06"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"principal":{"type":"number","description":"Loan amount"},"annualRate":{"type":"number","description":"Annual rate %"},"years":{"type":"number","description":"Term (years)"}},"required":["principal","annualRate","years"]}}},"/api/v1/calculators/compound-interest-calculator":{"get":{"operationId":"calculators_compound_interest_calculator","summary":"Compound Interest Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"principal","in":"query","required":true,"description":"Principal","schema":{"type":"number"}},{"name":"annualRate","in":"query","required":true,"description":"Annual rate %","schema":{"type":"number"}},{"name":"years","in":"query","required":true,"description":"Years","schema":{"type":"number"}},{"name":"timesPerYear","in":"query","required":false,"description":"Compounding","schema":{"type":"string","enum":["1","2","4","12","52","365"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/compound-interest-calculator","input":{"principal":10000,"annualRate":5,"years":10,"timesPerYear":12},"result":{"value":16470.094977,"answer":"16,470.09","answerLabel":"Future value after 10 years","details":[{"label":"Interest earned","value":"6,470.09"},{"label":"Principal","value":"10,000"},{"label":"vs simple interest","value":"+1,470.09"}],"steps":["r/n = 5% ÷ 12 = 41.67% per period","periods = 12 × 10 = 120","A = P × (1 + r/n)^120 = 16,470.09"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"principal":{"type":"number","description":"Principal"},"annualRate":{"type":"number","description":"Annual rate %"},"years":{"type":"number","description":"Years"},"timesPerYear":{"type":"number","enum":[1,2,4,12,52,365],"description":"Compounding"}},"required":["principal","annualRate","years"]}}},"/api/v1/calculators/fuel-cost-calculator":{"get":{"operationId":"calculators_fuel_cost_calculator","summary":"Fuel Cost Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"distance","in":"query","required":true,"description":"Distance (km)","schema":{"type":"number"}},{"name":"consumption","in":"query","required":true,"description":"Consumption (L/100km)","schema":{"type":"number"}},{"name":"pricePerLiter","in":"query","required":true,"description":"Price per liter","schema":{"type":"number"}},{"name":"people","in":"query","required":false,"description":"Split between","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/fuel-cost-calculator","input":{"distance":450,"consumption":6.5,"pricePerLiter":1.75,"people":1},"result":{"value":51.1875,"answer":"51.19","answerLabel":"Fuel cost for 450 km","details":[{"label":"Fuel needed","value":"29.25 L"},{"label":"Distance","value":"450 km"}],"steps":["Liters = 450 × 6.5 ÷ 100 = 29.25 L","Cost = 29.25 L × 1.75 = 51.19"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"distance":{"type":"number","description":"Distance (km)"},"consumption":{"type":"number","description":"Consumption (L/100km)"},"pricePerLiter":{"type":"number","description":"Price per liter"},"people":{"type":"number","description":"Split between"}},"required":["distance","consumption","pricePerLiter"]}}},"/api/v1/calculators/reading-time-calculator":{"get":{"operationId":"calculators_reading_time_calculator","summary":"Reading Time Calculator","description":"Estimate reading time from a word count at any reading speed. Defaults to 200 words per minute — the typical silent-reading speed for adults.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["calculators"],"parameters":[{"name":"words","in":"query","required":true,"description":"Word count","schema":{"type":"number"}},{"name":"wpm","in":"query","required":false,"description":"200 = silent reading · 130 = read aloud","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"calculators/reading-time-calculator","input":{"words":1500,"wpm":200},"result":{"value":7.5,"answer":"7 min 30s","answerLabel":"1,500 words at 200 wpm","details":[{"label":"Total seconds","value":"450"},{"label":"Total minutes","value":"7.5"}],"steps":["1,500 ÷ 200 = 7.5 minutes"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"words":{"type":"number","description":"Word count"},"wpm":{"type":"number","description":"200 = silent reading · 130 = read aloud"}},"required":["words"]}}},"/api/v1/converters/length-converter":{"get":{"operationId":"converters_length_converter","summary":"Length Converter","description":"Convert between metric and imperial length units: kilometers, meters, centimeters, millimeters, micrometers, nanometers, miles, yards, feet, inches and nautical miles.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["km","m","cm","mm","um","nm","mi","yd","ft","in","nmi"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["km","m","cm","mm","um","nm","mi","yd","ft","in","nmi"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/length-converter","input":{"value":1,"from":"km","to":"m"},"result":{"value":1000,"answer":"1,000 m","answerLabel":"1 Kilometers = ? Meters","details":[{"label":"Exact factor","value":"1 km = 1000 m"},{"label":"Reverse","value":"1 m = 0.001 km"}],"steps":["1 km × 1000 = 1,000 m","1,000 m ÷ 1 = 1,000 m"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["km","m","cm","mm","um","nm","mi","yd","ft","in","nmi"],"description":"From"},"to":{"type":"string","enum":["km","m","cm","mm","um","nm","mi","yd","ft","in","nmi"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/weight-converter":{"get":{"operationId":"converters_weight_converter","summary":"Weight Converter","description":"Convert between weight and mass units: metric tons, kilograms, grams, milligrams, pounds, ounces and stones with exact international definitions.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["t","kg","g","mg","lb","oz","st"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["t","kg","g","mg","lb","oz","st"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/weight-converter","input":{"value":1,"from":"t","to":"kg"},"result":{"value":1000,"answer":"1,000 kg","answerLabel":"1 Metric tons = ? Kilograms","details":[{"label":"Exact factor","value":"1 t = 1000 kg"},{"label":"Reverse","value":"1 kg = 0.001 t"}],"steps":["1 t × 1000 = 1,000 kg","1,000 kg ÷ 1 = 1,000 kg"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["t","kg","g","mg","lb","oz","st"],"description":"From"},"to":{"type":"string","enum":["t","kg","g","mg","lb","oz","st"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/temperature-converter":{"get":{"operationId":"converters_temperature_converter","summary":"Temperature Converter","description":"Convert between Celsius, Fahrenheit and Kelvin with exact formulas, reference points (freezing and boiling water) and step-by-step working.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Temperature","schema":{"type":"number"}},{"name":"from","in":"query","required":false,"description":"From","schema":{"type":"string","enum":["c","f","k"]}},{"name":"to","in":"query","required":false,"description":"To","schema":{"type":"string","enum":["f","c","k"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/temperature-converter","input":{"value":20,"from":"c","to":"f"},"result":{"value":68,"answer":"68 °F","answerLabel":"20 °C = ? °F","details":[{"label":"Formula","value":"°F = °C × 1.8 + 32"},{"label":"Water freezes at","value":"0 °C · 32 °F · 273.15 K"},{"label":"Water boils at","value":"100 °C · 212 °F · 373.15 K"}],"steps":["Convert 20 °C to Celsius: 20 °C","Convert to Fahrenheit: 68 °F"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Temperature"},"from":{"type":"string","enum":["c","f","k"],"description":"From"},"to":{"type":"string","enum":["f","c","k"],"description":"To"}},"required":["value"]}}},"/api/v1/converters/data-size-converter":{"get":{"operationId":"converters_data_size_converter","summary":"Data Size Converter","description":"Convert digital storage units: bits, bytes, KB, MB, GB, TB (decimal, ×1000) and KiB, MiB, GiB, TiB (binary, ×1024) — both systems side by side.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["TB","GB","MB","KB","B","TiB","GiB","MiB","KiB"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["TB","GB","MB","KB","B","TiB","GiB","MiB","KiB"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/data-size-converter","input":{"value":1,"from":"TB","to":"GB"},"result":{"value":1000,"answer":"1,000 GB","answerLabel":"1 Terabytes = ? Gigabytes","details":[{"label":"Exact factor","value":"1 TB = 1000 GB"},{"label":"Reverse","value":"1 GB = 0.001 TB"}],"steps":["1 TB × 1000000000000 = 1,000,000,000,000 B","1,000,000,000,000 B ÷ 1000000000 = 1,000 GB"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["TB","GB","MB","KB","B","TiB","GiB","MiB","KiB"],"description":"From"},"to":{"type":"string","enum":["TB","GB","MB","KB","B","TiB","GiB","MiB","KiB"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/speed-converter":{"get":{"operationId":"converters_speed_converter","summary":"Speed Converter","description":"Convert speed units: kilometers per hour, miles per hour, meters per second, knots and feet per second with exact definitions.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["kmh","mph","ms","kn","fts"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["kmh","mph","ms","kn","fts"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/speed-converter","input":{"value":1,"from":"kmh","to":"mph"},"result":{"value":0.621371,"answer":"0.621371 mph","answerLabel":"1 Kilometers per hour = ? Miles per hour","details":[{"label":"Exact factor","value":"1 km/h = 0.621371 mph"},{"label":"Reverse","value":"1 mph = 1.61 km/h"}],"steps":["1 km/h × 0.2777777777777778 = 0.277778 m/s","0.277778 m/s ÷ 0.44704 = 0.621371 mph"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["kmh","mph","ms","kn","fts"],"description":"From"},"to":{"type":"string","enum":["kmh","mph","ms","kn","fts"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/area-converter":{"get":{"operationId":"converters_area_converter","summary":"Area Converter","description":"Convert area units: square millimeters, centimeters, meters and kilometers, hectares, acres, square feet and square miles.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["km2","ha","acre","m2","ft2","mi2","cm2"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["km2","ha","acre","m2","ft2","mi2","cm2"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/area-converter","input":{"value":1,"from":"km2","to":"ha"},"result":{"value":100,"answer":"100 ha","answerLabel":"1 Square kilometers = ? Hectares","details":[{"label":"Exact factor","value":"1 km² = 100 ha"},{"label":"Reverse","value":"1 ha = 0.01 km²"}],"steps":["1 km² × 1000000 = 1,000,000 m²","1,000,000 m² ÷ 10000 = 100 ha"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["km2","ha","acre","m2","ft2","mi2","cm2"],"description":"From"},"to":{"type":"string","enum":["km2","ha","acre","m2","ft2","mi2","cm2"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/volume-converter":{"get":{"operationId":"converters_volume_converter","summary":"Volume Converter","description":"Convert cooking and liquid volume units: milliliters, liters, cubic meters, US gallons, quarts, pints, cups, fluid ounces, tablespoons and teaspoons.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Value","schema":{"type":"number"}},{"name":"from","in":"query","required":true,"description":"From","schema":{"type":"string","enum":["m3","L","ml","gal","qt","pt","cup","floz","tbsp","tsp"]}},{"name":"to","in":"query","required":true,"description":"To","schema":{"type":"string","enum":["m3","L","ml","gal","qt","pt","cup","floz","tbsp","tsp"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/volume-converter","input":{"value":1,"from":"m3","to":"L"},"result":{"value":1000,"answer":"1,000 L","answerLabel":"1 Cubic meters = ? Liters","details":[{"label":"Exact factor","value":"1 m³ = 1000 L"},{"label":"Reverse","value":"1 L = 0.001 m³"}],"steps":["1 m³ × 1000 = 1,000 L","1,000 L ÷ 1 = 1,000 L"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"number","description":"Value"},"from":{"type":"string","enum":["m3","L","ml","gal","qt","pt","cup","floz","tbsp","tsp"],"description":"From"},"to":{"type":"string","enum":["m3","L","ml","gal","qt","pt","cup","floz","tbsp","tsp"],"description":"To"}},"required":["value","from","to"]}}},"/api/v1/converters/unix-timestamp-converter":{"get":{"operationId":"converters_unix_timestamp_converter","summary":"Unix Timestamp Converter","description":"Convert Unix epoch timestamps to ISO/UTC dates and back. Millisecond timestamps are detected automatically; invalid dates are rejected with clear errors.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"op","in":"query","required":false,"description":"Direction","schema":{"type":"string","enum":["to_date","to_timestamp"]}},{"name":"value","in":"query","required":true,"description":"Timestamp or date","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/unix-timestamp-converter","input":{"op":"to_date","value":"1735689600"},"result":{"value":1735689600000,"answer":"2025-01-01T00:00:00.000Z","answerLabel":"1735689600 → UTC","details":[{"label":"Seconds","value":"1735689600"},{"label":"Milliseconds","value":"1735689600000"},{"label":"Date only (UTC)","value":"2025-01-01"},{"label":"Day of week (UTC)","value":"Wed"}],"steps":["Detected seconds","new Date(1735689600000).toISOString()"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"op":{"type":"string","enum":["to_date","to_timestamp"],"description":"Direction"},"value":{"type":"string","description":"Timestamp or date"}},"required":["value"]}}},"/api/v1/dev/number-base-converter":{"get":{"operationId":"dev_number_base_converter","summary":"Number Base Converter","description":"Convert integers between any bases from 2 to 36 — binary, octal, decimal, hexadecimal and beyond — with BigInt precision (no limit on magnitude).\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"value","in":"query","required":true,"description":"Digits valid for the source base","schema":{"type":"string"}},{"name":"from","in":"query","required":true,"description":"From base (2–36)","schema":{"type":"number"}},{"name":"to","in":"query","required":true,"description":"To base (2–36)","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/number-base-converter","input":{"value":"ff","from":16,"to":10},"result":{"value":null,"answer":"255","answerLabel":"Base 16 ff in base 10","details":[{"label":"Binary","value":"11111111"},{"label":"Octal","value":"377"},{"label":"Decimal","value":"255"},{"label":"Hexadecimal","value":"FF"}],"steps":["Parse \"ff\" in base 16 → decimal 255","Render decimal 255 in base 10 → \"255\""]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"string","description":"Digits valid for the source base"},"from":{"type":"number","description":"From base (2–36)"},"to":{"type":"number","description":"To base (2–36)"}},"required":["value","from","to"]}}},"/api/v1/converters/roman-numeral-converter":{"get":{"operationId":"converters_roman_numeral_converter","summary":"Roman Numeral Converter","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["converters"],"parameters":[{"name":"value","in":"query","required":true,"description":"Number or numeral","schema":{"type":"string"}},{"name":"op","in":"query","required":false,"description":"Direction","schema":{"type":"string","enum":["to_roman","from_roman"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"converters/roman-numeral-converter","input":{"value":"2026","op":"to_roman"},"result":{"value":2026,"answer":"MMXXVI","answerLabel":"2026 in Roman numerals","details":[{"label":"System","value":"Standard subtractive notation (IV, IX, XL, XC, CD, CM)"}],"steps":["Greedy match from M (1000) down to I (1)","2026 → MMXXVI"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"string","description":"Number or numeral"},"op":{"type":"string","enum":["to_roman","from_roman"],"description":"Direction"}},"required":["value"]}}},"/api/v1/dev/case-converter":{"get":{"operationId":"dev_case_converter","summary":"Case Converter","description":"Convert text between nine letter cases: UPPER, lower, Title, Sentence, camelCase, PascalCase, snake_case, kebab-case and CONSTANT_CASE. camelCase boundaries are split automatically.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"style","in":"query","required":false,"description":"Convert to","schema":{"type":"string","enum":["upper","lower","title","sentence","camel","pascal","snake","kebab","constant"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/case-converter","input":{"text":"hello world","style":"camel"},"result":{"value":null,"answer":"helloWorld","answerLabel":"As camelCase","details":[{"label":"Words detected","value":"2"},{"label":"As UPPER CASE","value":"HELLO WORLD"},{"label":"As lower case","value":"hello world"},{"label":"As Title Case","value":"Hello World"},{"label":"As Sentence case","value":"Hello world"}],"steps":["Split input into 2 word(s)","Apply camelCase transformation"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"style":{"type":"string","enum":["upper","lower","title","sentence","camel","pascal","snake","kebab","constant"],"description":"Convert to"}},"required":["text"]}}},"/api/v1/dev/jwt-decoder":{"get":{"operationId":"dev_jwt_decoder","summary":"JWT Decoder","description":"Decode a JSON Web Token's header and payload to readable JSON. Pure decoding: signatures are NOT verified and no secret is needed. Claims like exp and iat are rendered as dates.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"token","in":"query","required":true,"description":"header.payload.signature","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/jwt-decoder","input":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkphbmUgRG9lIiwiaWF0IjoxNzAwMDAwMDAwfQ.dummy_signature_part"},"result":{"value":null,"answer":"{\n  \"sub\": \"1234567890\",\n  \"name\": \"Jane Doe\",\n  \"iat\": 1700000000\n}","answerLabel":"Payload claims","details":[{"label":"Algorithm","value":"HS256"},{"label":"Type","value":"JWT"},{"label":"Signature","value":"present (20 chars) — NOT verified"},{"label":"Time claim","value":"iat: 2023-11-14T22:13:20.000Z"}],"steps":["Split token on dots","Base64url-decode header and payload","Parse both as JSON (signature left untouched)"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"token":{"type":"string","description":"header.payload.signature"}},"required":["token"]}}},"/api/v1/dev/url-encoder":{"get":{"operationId":"dev_url_encoder","summary":"URL Encoder / Decoder","description":"Percent-encode text for safe inclusion in URLs and query strings, or decode percent-encoded text back. Uses the standard encodeURIComponent rules.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"op","in":"query","required":false,"description":"Direction","schema":{"type":"string","enum":["encode","decode"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/url-encoder","input":{"text":"hello world & more","op":"encode"},"result":{"value":null,"answer":"hello%20world%20%26%20more","answerLabel":"Percent-encoded","details":[{"label":"Original length","value":"18 chars"},{"label":"Encoded length","value":"26 chars"},{"label":"Bytes escaped","value":"4"}],"steps":["UTF-8 encode each character","Escape all bytes except A–Z a–z 0–9 - _ . ! ~ * ' ( )"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"op":{"type":"string","enum":["encode","decode"],"description":"Direction"}},"required":["text"]}}},"/api/v1/dev/json-formatter":{"get":{"operationId":"dev_json_formatter","summary":"JSON Formatter / Validator","description":"Validate JSON with precise error messages, pretty-print it with any indent, and inspect its top-level type and element counts.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"json","in":"query","required":true,"description":"JSON","schema":{"type":"string"}},{"name":"indent","in":"query","required":false,"description":"Indent spaces","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/json-formatter","input":{"json":"{\"name\":\"Ada\",\"langs\":[\"ts\",\"py\"],\"active\":true}","indent":2},"result":{"value":null,"answer":"{\n  \"name\": \"Ada\",\n  \"langs\": [\n    \"ts\",\n    \"py\"\n  ],\n  \"active\": true\n}","answerLabel":"Valid JSON ✓","details":[{"label":"Top-level type","value":"object"},{"label":"Top-level keys","value":"3"},{"label":"Minified size","value":"48 chars"},{"label":"Formatted size","value":"74 chars"}],"steps":["JSON.parse validated the syntax","Re-stringified with 2-space indent"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"json":{"type":"string","description":"JSON"},"indent":{"type":"number","description":"Indent spaces"}},"required":["json"]}}},"/api/v1/dev/http-status-codes":{"get":{"operationId":"dev_http_status_codes","summary":"HTTP Status Codes Database","description":"Reference database of HTTP response status codes with phrase, category and explanation. Look up a specific code or list a whole category (1xx–5xx).\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"code","in":"query","required":false,"description":"Leave empty to list by category","schema":{"type":"number"}},{"name":"category","in":"query","required":false,"description":"Category","schema":{"type":"string","enum":["","informational","success","redirect","client-error","server-error"]}},{"name":"limit","in":"query","required":false,"description":"Max rows","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/http-status-codes","input":{"code":402},"result":{"value":402,"answer":"402 Payment Required","answerLabel":"HTTP status","details":[{"label":"Category","value":"client-error"},{"label":"Meaning","value":"Reserved for payment — revived by the x402 protocol: the response carries payment requirements (USDC on Base) and is retried with payment attached."},{"label":"Class","value":"4xx — 4xx Client Error"}],"table":{"columns":["Field","Value"],"rows":[["Code",402],["Phrase","Payment Required"],["Category","client-error"]]}}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"code":{"type":"number","description":"Leave empty to list by category"},"category":{"type":"string","enum":["","informational","success","redirect","client-error","server-error"],"description":"Category"},"limit":{"type":"number","description":"Max rows"}},"required":[]}}},"/api/v1/dev/mime-types":{"get":{"operationId":"dev_mime_types","summary":"MIME Types Database","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"query","in":"query","required":false,"description":"MIME substring or file extension","schema":{"type":"string"}},{"name":"category","in":"query","required":false,"description":"Category","schema":{"type":"string","enum":["","text","application","image","audio","video","font","multipart","model"]}},{"name":"limit","in":"query","required":false,"description":"Max rows","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/mime-types","input":{"query":".png"},"result":{"value":null,"answer":"image/png","answerLabel":"Best match","table":{"columns":["MIME type","Extensions","Description"],"rows":[["image/png","png","Portable Network Graphics, lossless with alpha"]]},"details":[{"label":"Matches","value":"1"}]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"query":{"type":"string","description":"MIME substring or file extension"},"category":{"type":"string","enum":["","text","application","image","audio","video","font","multipart","model"],"description":"Category"},"limit":{"type":"number","description":"Max rows"}},"required":[]}}},"/api/v1/crypto/wei-eth-converter":{"get":{"operationId":"crypto_wei_eth_converter","summary":"Wei / Gwei / ETH Converter","description":"Convert between wei, kwei, mwei, gwei, microether, milliether and ether with exact BigInt arithmetic. Decimal strings of any magnitude convert without floating-point error.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"value","in":"query","required":true,"description":"Decimal string for exact precision","schema":{"type":"string"}},{"name":"from","in":"query","required":false,"description":"From","schema":{"type":"string","enum":["wei","kwei","mwei","gwei","microeth","millieth","eth"]}},{"name":"to","in":"query","required":false,"description":"To","schema":{"type":"string","enum":["wei","kwei","mwei","gwei","microeth","millieth","eth"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"crypto/wei-eth-converter","input":{"value":"21000","from":"gwei","to":"eth"},"result":{"value":null,"answer":"0.000021000000000000 ETH","answerLabel":"21000 Gwei = ? Ether","details":[{"label":"Exact result","value":"0.000021000000000000"},{"label":"In wei","value":"21000000000000"},{"label":"In gwei","value":"21000"},{"label":"In ETH","value":"0.000021000000000000"}],"steps":["Scale to wei: 21000 Gwei = 21000000000000 wei (exact BigInt)","Render in Ether: 0.000021000000000000"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"value":{"type":"string","description":"Decimal string for exact precision"},"from":{"type":"string","enum":["wei","kwei","mwei","gwei","microeth","millieth","eth"],"description":"From"},"to":{"type":"string","enum":["wei","kwei","mwei","gwei","microeth","millieth","eth"],"description":"To"}},"required":["value"]}}},"/api/v1/crypto/gas-fee-calculator":{"get":{"operationId":"crypto_gas_fee_calculator","summary":"Gas Fee Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"gasUnits","in":"query","required":true,"description":"Gas units","schema":{"type":"number"}},{"name":"gweiPrice","in":"query","required":true,"description":"Gas price (gwei)","schema":{"type":"number"}},{"name":"ethPriceUsd","in":"query","required":true,"description":"ETH price (USD)","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"crypto/gas-fee-calculator","input":{"gasUnits":21000,"gweiPrice":10,"ethPriceUsd":3000},"result":{"value":0.63,"answer":"$0.63","answerLabel":"Transaction fee (USD)","details":[{"label":"Fee in ETH","value":"0.000210000000000000"},{"label":"Fee in wei (exact)","value":"210000000000000"},{"label":"Fee in gwei","value":"210000"},{"label":"ETH price used","value":"$3,000"}],"steps":["wei = 21000 gas × 10 gwei × 10⁹ = 210000000000000","ETH = 0.000210000000000000 · USD = 0.000210000000000000 × $3,000 = $0.63"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"gasUnits":{"type":"number","description":"Gas units"},"gweiPrice":{"type":"number","description":"Gas price (gwei)"},"ethPriceUsd":{"type":"number","description":"ETH price (USD)"}},"required":["gasUnits","gweiPrice","ethPriceUsd"]}}},"/api/v1/finance/roi-calculator":{"get":{"operationId":"finance_roi_calculator","summary":"ROI Calculator","description":"Calculate return on investment: profit (or loss) and the percentage return relative to the initial amount invested.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["finance"],"parameters":[{"name":"initial","in":"query","required":true,"description":"Amount invested","schema":{"type":"number"}},{"name":"final","in":"query","required":true,"description":"Final value","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"finance/roi-calculator","input":{"initial":10000,"final":12500},"result":{"value":25,"answer":"25%","answerLabel":"Return on investment (gain)","details":[{"label":"Profit / loss","value":"2,500"},{"label":"Invested","value":"10,000"},{"label":"Final value","value":"12,500"}],"steps":["Profit = 12,500 − 10,000 = 2,500","ROI = 2,500 ÷ 10,000 × 100 = 25%"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"initial":{"type":"number","description":"Amount invested"},"final":{"type":"number","description":"Final value"}},"required":["initial","final"]}}},"/api/v1/finance/cagr-calculator":{"get":{"operationId":"finance_cagr_calculator","summary":"CAGR Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["finance"],"parameters":[{"name":"initial","in":"query","required":true,"description":"Initial value","schema":{"type":"number"}},{"name":"final","in":"query","required":true,"description":"Final value","schema":{"type":"number"}},{"name":"years","in":"query","required":true,"description":"Years","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"finance/cagr-calculator","input":{"initial":10000,"final":16000,"years":3},"result":{"value":16.96071,"answer":"16.96%","answerLabel":"CAGR per year","details":[{"label":"Total growth multiple","value":"1.6×"},{"label":"Total period","value":"3 years"},{"label":"Value after 1 year at CAGR","value":"11,696.07"}],"steps":["multiple = 16,000 ÷ 10,000 = 1.6×","CAGR = 1.6^(1 ÷ 3) − 1 = 16.96%"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"initial":{"type":"number","description":"Initial value"},"final":{"type":"number","description":"Final value"},"years":{"type":"number","description":"Years"}},"required":["initial","final","years"]}}},"/api/v1/finance/margin-calculator":{"get":{"operationId":"finance_margin_calculator","summary":"Margin & Markup Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["finance"],"parameters":[{"name":"cost","in":"query","required":true,"description":"Cost","schema":{"type":"number"}},{"name":"price","in":"query","required":true,"description":"Selling price","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"finance/margin-calculator","input":{"cost":60,"price":100},"result":{"value":40,"answer":"40% margin","answerLabel":"Selling at 100 (cost 60)","details":[{"label":"Gross profit per unit","value":"40"},{"label":"Markup","value":"66.67% of cost"},{"label":"Price for a 50% margin","value":"120"}],"steps":["Profit = 100 − 60 = 40","Margin = 40 ÷ 100 × 100 = 40%","Markup = 40 ÷ 60 × 100 = 66.67%"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"cost":{"type":"number","description":"Cost"},"price":{"type":"number","description":"Selling price"}},"required":["cost","price"]}}},"/api/v1/finance/iban-validator":{"get":{"operationId":"finance_iban_validator","summary":"IBAN Validator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["finance"],"parameters":[{"name":"iban","in":"query","required":true,"description":"Spaces are ignored","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"finance/iban-validator","input":{"iban":"DE89 3704 0044 0532 0130 00"},"result":{"value":1,"answer":"✓ Valid IBAN — Germany","answerLabel":"DE89 3704 0044 0532 0130 00","details":[{"label":"Country","value":"DE — Germany"},{"label":"Check digits","value":"89"},{"label":"Length","value":"22 (expected 22)"},{"label":"MOD-97 checksum","value":"passed"}],"steps":["Normalize: uppercase, strip spaces and dashes","Validate structure ^[A-Z]{2}[0-9]{2}[A-Z0-9]+$ and country length","Move the first 4 chars to the end, map letters A=10…Z=35, compute mod 97 — must equal 1"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"iban":{"type":"string","description":"Spaces are ignored"}},"required":["iban"]}}},"/api/v1/live/now":{"get":{"operationId":"live_now","summary":"Current Time","description":"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'.\n\nx402 payment required: USDC on eip155:8453, $0.0005 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"tz","in":"query","required":false,"description":"e.g. America/New_York, Europe/Berlin, Asia/Tokyo","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/now","input":{"tz":"UTC"},"result":{"value":1790645759,"answer":"2026-09-29T01:35:59+00:00","answerLabel":"Now in UTC","details":[{"label":"Unix seconds","value":"1790645759"},{"label":"Unix milliseconds","value":"1790645759852"},{"label":"UTC ISO","value":"2026-09-29T01:35:59.852Z"},{"label":"Date (local)","value":"2026-09-29"},{"label":"Weekday","value":"Tuesday"},{"label":"Day of year","value":"1"}],"steps":["Read the server clock (NTP-synced infrastructure)","Render in UTC via Intl"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.0005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"tz":{"type":"string","description":"e.g. America/New_York, Europe/Berlin, Asia/Tokyo"}},"required":[]}}},"/api/v1/live/business-days":{"get":{"operationId":"live_business_days","summary":"Business Days Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"start","in":"query","required":true,"description":"Start date","schema":{"type":"string"}},{"name":"end","in":"query","required":true,"description":"End date","schema":{"type":"string"}},{"name":"country","in":"query","required":false,"description":"Excludes that country's public holidays","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/business-days","input":{"start":"2026-09-01","end":"2026-09-30"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"start":{"type":"string","description":"Start date"},"end":{"type":"string","description":"End date"},"country":{"type":"string","description":"Excludes that country's public holidays"}},"required":["start","end"]}}},"/api/v1/live/exchange-rates":{"get":{"operationId":"live_exchange_rates","summary":"Exchange Rates (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"op","in":"query","required":false,"description":"Operation","schema":{"type":"string","enum":["rates","convert"]}},{"name":"base","in":"query","required":false,"description":"Base currency","schema":{"type":"string","enum":["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"]}},{"name":"from","in":"query","required":false,"description":"Convert from","schema":{"type":"string","enum":["","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"]}},{"name":"to","in":"query","required":false,"description":"Convert to","schema":{"type":"string","enum":["","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"]}},{"name":"amount","in":"query","required":false,"description":"Amount","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/exchange-rates","input":{"op":"rates","base":"USD"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"op":{"type":"string","enum":["rates","convert"],"description":"Operation"},"base":{"type":"string","enum":["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"],"description":"Base currency"},"from":{"type":"string","enum":["","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"],"description":"Convert from"},"to":{"type":"string","enum":["","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"],"description":"Convert to"},"amount":{"type":"number","description":"Amount"}},"required":[]}}},"/api/v1/live/weather":{"get":{"operationId":"live_weather","summary":"Weather (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"city","in":"query","required":false,"description":"Or provide lat/lon instead","schema":{"type":"string"}},{"name":"lat","in":"query","required":false,"description":"Latitude","schema":{"type":"number"}},{"name":"lon","in":"query","required":false,"description":"Longitude","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/weather","input":{"city":"Berlin"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"city":{"type":"string","description":"Or provide lat/lon instead"},"lat":{"type":"number","description":"Latitude"},"lon":{"type":"number","description":"Longitude"}},"required":[]}}},"/api/v1/live/holidays":{"get":{"operationId":"live_holidays","summary":"Public Holidays (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"country","in":"query","required":true,"description":"Country (ISO-2)","schema":{"type":"string"}},{"name":"op","in":"query","required":false,"description":"Query","schema":{"type":"string","enum":["next","year"]}},{"name":"year","in":"query","required":false,"description":"Year (for full-year list)","schema":{"type":"number"}},{"name":"count","in":"query","required":false,"description":"Max results","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/holidays","input":{"country":"DE","op":"next","count":8},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"country":{"type":"string","description":"Country (ISO-2)"},"op":{"type":"string","enum":["next","year"],"description":"Query"},"year":{"type":"number","description":"Year (for full-year list)"},"count":{"type":"number","description":"Max results"}},"required":["country"]}}},"/api/v1/crypto/price":{"get":{"operationId":"crypto_price","summary":"Crypto Price (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"ids","in":"query","required":true,"description":"Coin ids or tickers","schema":{"type":"string"}},{"name":"vs","in":"query","required":false,"description":"Quote currency","schema":{"type":"string","enum":["usd","eur","gbp","jpy"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"crypto/price","input":{"ids":"bitcoin,ethereum","vs":"usd"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"ids":{"type":"string","description":"Coin ids or tickers"},"vs":{"type":"string","enum":["usd","eur","gbp","jpy"],"description":"Quote currency"}},"required":["ids"]}}},"/api/v1/live/ip-lookup":{"get":{"operationId":"live_ip_lookup","summary":"IP Geolocation (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"ip","in":"query","required":false,"description":"Leave empty to look up the caller's IP","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/ip-lookup","input":{"ip":"8.8.8.8"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"ip":{"type":"string","description":"Leave empty to look up the caller's IP"}},"required":[]}}},"/api/v1/live/dns-lookup":{"get":{"operationId":"live_dns_lookup","summary":"DNS Lookup (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain","schema":{"type":"string"}},{"name":"type","in":"query","required":false,"description":"Record type","schema":{"type":"string","enum":["A","AAAA","MX","TXT","NS","CNAME","SOA"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/dns-lookup","input":{"domain":"example.com","type":"A"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain"},"type":{"type":"string","enum":["A","AAAA","MX","TXT","NS","CNAME","SOA"],"description":"Record type"}},"required":["domain"]}}},"/api/v1/live/url-metadata":{"get":{"operationId":"live_url_metadata","summary":"URL Metadata (Live)","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.003 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"url","in":"query","required":true,"description":"URL","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/url-metadata","input":{"url":"https://example.com"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.003","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]}}},"/api/v1/live/qr-code":{"get":{"operationId":"live_qr_code","summary":"QR Code Generator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["live"],"parameters":[{"name":"text","in":"query","required":true,"description":"Content","schema":{"type":"string"}},{"name":"size","in":"query","required":false,"description":"Size (px)","schema":{"type":"number"}},{"name":"ec","in":"query","required":false,"description":"Error correction","schema":{"type":"string","enum":["L","M","Q","H"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"live/qr-code","input":{"text":"https://example.com","size":300,"ec":"M"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Content"},"size":{"type":"number","description":"Size (px)"},"ec":{"type":"string","enum":["L","M","Q","H"],"description":"Error correction"}},"required":["text"]}}},"/api/v1/dev/token-estimator":{"get":{"operationId":"dev_token_estimator","summary":"Token Estimator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/token-estimator","input":{"text":"The quick brown fox jumps over the lazy dog. Pack my box with five dozen liquor jugs."},"result":{"value":23,"answer":"23 tokens (GPT family)","answerLabel":"85 chars · ±10% estimate","table":{"columns":["Model family","Est. tokens"],"rows":[["gpt-4o / gpt-4.1 / gpt-5 (o200k)",23],["claude (Opus / Sonnet / Haiku)",25],["gemini 2.5 / 3",26],["llama 4 / mistral",28],["deepseek v3",26]]},"details":[{"label":"Characters","value":"85"},{"label":"Words","value":"17"},{"label":"CJK characters","value":"0"},{"label":"Method","value":"heuristic (chars/word mix, CJK-aware)"}],"steps":["CJK characters count ≈ 1.1 tokens each","Other scripts ≈ 3.7 chars/token, blended with words × 1.32","Model multipliers applied: 1, 1.06, 1.12, 1.18, 1.1"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"}},"required":["text"]}}},"/api/v1/dev/llm-cost-calculator":{"get":{"operationId":"dev_llm_cost_calculator","summary":"LLM API Cost Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"inputTokens","in":"query","required":true,"description":"Input tokens","schema":{"type":"number"}},{"name":"outputTokens","in":"query","required":false,"description":"Output tokens","schema":{"type":"number"}},{"name":"model","in":"query","required":false,"description":"Model","schema":{"type":"string","enum":["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"]}},{"name":"calls","in":"query","required":false,"description":"Number of calls","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/llm-cost-calculator","input":{"inputTokens":12000,"outputTokens":1500,"model":"gpt-4o","calls":1},"result":{"value":0.045,"answer":"$0.0450","answerLabel":"Cost — OpenAI gpt-4o","details":[{"label":"Input cost","value":"$0.030000 (12,000 tok × $2.5/M)"},{"label":"Output cost","value":"$0.015000 (1,500 tok × $10/M)"},{"label":"Per call","value":"$0.045000"},{"label":"Projected monthly (1 call/day)","value":"$1.3500"}],"table":{"columns":["Model","Vendor","$/M input","$/M output"],"rows":[["gpt-5","OpenAI",1.25,10],["gpt-5-mini","OpenAI",0.25,2],["gpt-4.1","OpenAI",2,8],["gpt-4.1-mini","OpenAI",0.4,1.6],["gpt-4o","OpenAI",2.5,10],["o4-mini","OpenAI",1.1,4.4],["claude-opus-4","Anthropic",15,75],["claude-sonnet-4","Anthropic",3,15],["claude-haiku-4","Anthropic",0.8,4],["gemini-2.5-pro","Google",1.25,10],["gemini-2.5-flash","Google",0.3,2.5],["gemini-2.0-flash","Google",0.1,0.4],["deepseek-v3","DeepSeek",0.27,1.1],["grok-3","xAI",3,15],["llama-4-maverick","Meta",0.22,0.88]]},"steps":["input: 12,000 ÷ 1e6 × $2.5","output: 1,500 ÷ 1e6 × $10","× 1 call(s) = total"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"inputTokens":{"type":"number","description":"Input tokens"},"outputTokens":{"type":"number","description":"Output tokens"},"model":{"type":"string","enum":["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"],"description":"Model"},"calls":{"type":"number","description":"Number of calls"}},"required":["inputTokens"]}}},"/api/v1/dev/text-chunker":{"get":{"operationId":"dev_text_chunker","summary":"Text Chunker","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"targetTokens","in":"query","required":false,"description":"Target tokens per chunk","schema":{"type":"number"}},{"name":"overlapTokens","in":"query","required":false,"description":"Overlap tokens","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/text-chunker","input":{"text":"Retrieval-augmented generation improves factuality. First, documents are split into chunks. Second, chunks are embedded into vectors. Third, the agent retrieves the top matches for a query. Overlap keeps ideas that straddle boundaries intact. Finally, the model answers with citations.","targetTokens":60,"overlapTokens":15},"result":{"value":2,"answer":"2 chunks","answerLabel":"≈65 tokens → chunks of ≤60 tokens, overlap 15","details":[{"label":"Input (chars / est. tokens)","value":"285 / ≈65"},{"label":"Avg chunk size","value":"≈39 tokens"},{"label":"Boundary strategy","value":"paragraph → sentence → word"}],"table":{"columns":["Chunk","Est. tokens","Preview"],"rows":[[0,55,"Retrieval-augmented generation improves factuality. First, d…"],[1,22,"Overlap keeps ideas that straddle boundaries intact. Finally…"]]},"steps":["Split into 6 sentence units","Pack units up to 60 estimated tokens","Carry ≈15 tokens of overlap between consecutive chunks"],"artifacts":{"chunks":"[{\"index\":0,\"estTokens\":55,\"text\":\"Retrieval-augmented generation improves factuality. First, documents are split into chunks. Second, chunks are embedded into vectors. Third, the agent retrieves the top matches for a query. Overlap keeps ideas that straddle boundaries intact.\"},{\"index\":1,\"estTokens\":22,\"text\":\"Overlap keeps ideas that straddle boundaries intact. Finally, the model answers with citations.\"}]"}}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"targetTokens":{"type":"number","description":"Target tokens per chunk"},"overlapTokens":{"type":"number","description":"Overlap tokens"}},"required":["text"]}}},"/api/v1/dev/hash":{"get":{"operationId":"dev_hash","summary":"Hash Calculator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"algo","in":"query","required":false,"description":"Algorithm","schema":{"type":"string","enum":["sha256","sha512","sha1","md5"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/hash","input":{"text":"hello","algo":"sha256"},"result":{"value":null,"answer":"live data — call the API"}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"algo":{"type":"string","enum":["sha256","sha512","sha1","md5"],"description":"Algorithm"}},"required":["text"]}}},"/api/v1/dev/uuid":{"get":{"operationId":"dev_uuid","summary":"UUID Generator / Validator","description":"Generate cryptographically random UUIDv4s or time-sortable UUIDv7s from a real CSPRNG, and validate any UUID's format, version and variant bits.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"op","in":"query","required":false,"description":"Operation","schema":{"type":"string","enum":["generate","validate"]}},{"name":"version","in":"query","required":false,"description":"Version (generate)","schema":{"type":"string","enum":["v4","v7"]}},{"name":"value","in":"query","required":false,"description":"UUID (validate)","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/uuid","input":{"op":"generate","version":"v4"},"result":{"value":null,"answer":"aa0238cd-bf05-459d-a30f-ba6f41cda595","answerLabel":"New v4","details":[{"label":"Entropy source","value":"CSPRNG (crypto.getRandomValues)"},{"label":"Version","value":"4 (122 random bits)"}],"steps":["122 random bits from CSPRNG","Set version 4 + RFC variant bits"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"op":{"type":"string","enum":["generate","validate"],"description":"Operation"},"version":{"type":"string","enum":["v4","v7"],"description":"Version (generate)"},"value":{"type":"string","description":"UUID (validate)"}},"required":[]}}},"/api/v1/dev/text-extract":{"get":{"operationId":"dev_text_extract","summary":"Text Extractor","description":"Scan unstructured text and extract structured entities: email addresses, URLs, IPv4 addresses, phone numbers and domains. Deduplicated, categorized, machine-ready.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"text","in":"query","required":true,"description":"Text","schema":{"type":"string"}},{"name":"what","in":"query","required":false,"description":"Extract","schema":{"type":"string","enum":["all","emails","urls","ips","phones","domains"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/text-extract","input":{"text":"Reach Jane at jane.doe@acme-corp.io, sales@acme-corp.io or +49 30 1234567. Site: https://acme-corp.io/pricing and CDN 151.101.1.140. Backup mail host: mail.acme-corp.io"},"result":{"value":null,"answer":""}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"text":{"type":"string","description":"Text"},"what":{"type":"string","enum":["all","emails","urls","ips","phones","domains"],"description":"Extract"}},"required":["text"]}}},"/api/v1/dev/diff":{"get":{"operationId":"dev_diff","summary":"Text Diff","description":"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'.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"a","in":"query","required":true,"description":"Use \n for line breaks","schema":{"type":"string"}},{"name":"b","in":"query","required":true,"description":"Changed text","schema":{"type":"string"}},{"name":"context","in":"query","required":false,"description":"Context lines","schema":{"type":"number"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/diff","input":{"a":"price: 100\nquantity: 2\ntotal: 200","b":"price: 100\nquantity: 3\ntotal: 300","context":1},"result":{"value":4,"answer":"+2 / −2 lines","answerLabel":"Diff result","details":[{"label":"Lines in A","value":"3"},{"label":"Lines in B","value":"3"},{"label":"Added","value":"2"},{"label":"Removed","value":"2"}],"steps":["Split both inputs into lines","Longest-common-subsequence alignment","Emit changed hunks with 1 context lines"],"artifacts":{"diff":" price: 100\n-quantity: 2\n-total: 200\n+quantity: 3\n+total: 300"}}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"a":{"type":"string","description":"Use \n for line breaks"},"b":{"type":"string","description":"Changed text"},"context":{"type":"number","description":"Context lines"}},"required":["a","b"]}}},"/api/v1/dev/url-parser":{"get":{"operationId":"dev_url_parser","summary":"URL Parser","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":true,"description":"URL","schema":{"type":"string"}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"dev/url-parser","input":{"url":"https://user:pw@api.example.com:8443/v1/users?page=2&sort=name&tag=a&tag=b#results"},"result":{"value":null,"answer":"https://api.example.com:8443/v1/users?page=2&sort=name&tag=a&tag=b#results","answerLabel":"Normalized URL","details":[{"label":"Protocol","value":"https"},{"label":"Host","value":"api.example.com"},{"label":"Port","value":"8443"},{"label":"Credentials","value":"user:•••"},{"label":"Path","value":"/v1/users"},{"label":"Path segments","value":"v1 › users"},{"label":"Query string","value":"?page=2&sort=name&tag=a&tag=b"},{"label":"Hash","value":"#results"},{"label":"Origin","value":"https://api.example.com:8443"}],"table":{"columns":["Query parameter","Value(s)"],"rows":[["page","2"],["sort","name"],["tag","a, b"]]},"artifacts":{"params":"{\"page\":\"2\",\"sort\":\"name\",\"tag\":[\"a\",\"b\"]}","segments":"[\"v1\",\"users\"]"},"steps":["new URL(input)","Extract components + parse query pairs (repeated keys become arrays)"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"}},"required":["url"]}}},"/api/v1/crypto/random-generator":{"get":{"operationId":"crypto_random_generator","summary":"Secure Random Generator","description":"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.\n\nx402 payment required: USDC on eip155:8453, $0.001 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"mode","in":"query","required":false,"description":"Mode","schema":{"type":"string","enum":["password","hex","int"]}},{"name":"length","in":"query","required":false,"description":"Length (password/hex)","schema":{"type":"number"}},{"name":"min","in":"query","required":false,"description":"Int minimum","schema":{"type":"number"}},{"name":"max","in":"query","required":false,"description":"Int maximum","schema":{"type":"number"}},{"name":"upper","in":"query","required":false,"description":"Include A–Z","schema":{"type":"string","enum":["true","false"]}},{"name":"digits","in":"query","required":false,"description":"Include 0–9","schema":{"type":"string","enum":["true","false"]}},{"name":"symbols","in":"query","required":false,"description":"Include symbols","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"Tool result","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string"},"input":{"type":"object"},"result":{"type":"object","properties":{"value":{"type":["number","null"]},"answer":{"type":"string"},"answerLabel":{"type":"string"},"details":{"type":"array"},"steps":{"type":"array","items":{"type":"string"}},"table":{"type":"object"}}}}},"example":{"tool":"crypto/random-generator","input":{"mode":"password","length":24},"result":{"value":null,"answer":"qizwzrkprgczznlocjwvygfw","answerLabel":"24-char password (≈112 bits of entropy)","details":[{"label":"Charset size","value":"26 symbols"},{"label":"Entropy","value":"≈112 bits"},{"label":"Strength","value":"excellent"}],"steps":["Charset: 26 symbols","24 uniform draws via rejection sampling","Entropy ≈ 112 bits"]}}}}},"400":{"description":"Invalid input parameters."},"402":{"description":"Payment required — pay via x402 (USDC on Base) and retry with X-PAYMENT header."},"422":{"description":"Computation failed (e.g. no matching record)."}},"x-x402":{"protocol":"x402","version":2,"scheme":"exact","network":"eip155:8453","price":"$0.001","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"mode":{"type":"string","enum":["password","hex","int"],"description":"Mode"},"length":{"type":"number","description":"Length (password/hex)"},"min":{"type":"number","description":"Int minimum"},"max":{"type":"number","description":"Int maximum"},"upper":{"type":"string","enum":["true","false"],"description":"Include A–Z"},"digits":{"type":"string","enum":["true","false"],"description":"Include 0–9"},"symbols":{"type":"string","enum":["true","false"],"description":"Include symbols"}},"required":[]}}}}}