{"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://agentstoolshub.com/for-agents, tool map at https://agentstoolshub.com/llms.txt. Tip jar: GET https://agentstoolshub.com/api/tip?amount=1.00 (dynamic price).","x-logo":{"altText":"AgentTools"}},"servers":[{"url":"https://agentstoolshub.com"}],"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. Use this when an agent needs to percent of a number, ratios and percent change.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to uTF-8 safe base64 in both directions.\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":"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.002","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. Use this when an agent needs to 250 countries: codes, capitals, currencies, populations.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to sale price and savings from a percent off.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to tip amount, total and per-person split.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to add or remove VAT at standard rates for 36 countries.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to body Mass Index with WHO category.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to days, weeks and calendar time between two dates.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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). Use this when an agent needs to exact age in years, months and days.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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). Use this when an agent needs to monthly payment, total cost and interest for any loan.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to future value with any compounding frequency.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to trip fuel and cost, splitable between people.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to how long a text takes to read, by word count.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to metric and imperial distance units, instantly.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to kilograms, pounds, ounces and more.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to celsius, Fahrenheit and Kelvin, both ways.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to decimal (KB/MB/GB) and binary (KiB/MiB/GiB) units.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to km/h, mph, m/s, knots and ft/s.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to square meters, feet, acres, hectares.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to liters, gallons, cups, milliliters.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to epoch seconds ↔ human dates, both directions.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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). Use this when an agent needs to binary, octal, decimal, hex — any base 2–36.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to numbers ↔ Roman numerals, with validation.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to camelCase, snake_case, kebab-case and more.\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":"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.002","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. Accepts standard and URL-safe base64 with or without padding; claims like exp and iat are rendered as dates. Use this when an agent needs to decode header and payload — no verification.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to percent-encoding for query strings and URLs.\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":"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.002","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. Use this when an agent needs to validate, pretty-print and inspect JSON.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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). Use this when an agent needs to look up any HTTP status code's meaning.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to content-Type lookup by type or file extension.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to exact Ethereum unit conversion — no float errors.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to transaction cost in ETH and USD from gas × gwei.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to return on investment as a percentage.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to compound annual growth rate, time-normalized.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to profit margin vs markup, both computed.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to structure, length and mod-97 checksum validation.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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'. Use this when an agent needs to the current date/time in any time zone — agents have no clock.\n\nx402 payment required: USDC on eip155:8453, $0.001 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":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":{"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. Use this when an agent needs to working days between dates, optionally minus public holidays.\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to live ECB reference rates for 30 currencies.\n\nx402 payment required: USDC on eip155:8453, $0.005 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"}},{"name":"date","in":"query","required":false,"description":"YYYY-MM-DD — ECB business days","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/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.005","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"},"date":{"type":"string","description":"YYYY-MM-DD — ECB business days"}},"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. Use this when an agent needs to current conditions + 3-day forecast for any city.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to upcoming public holidays for ~110 countries.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to live token prices and 24h change via CoinGecko.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to where is an IP address? Country, city, ASN, timezone.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to real DNS records via Cloudflare DNS-over-HTTPS.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to title, description, OG image and favicon of any page.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to any text or URL as a QR code (SVG + PNG data URI).\n\nx402 payment required: USDC on eip155:8453, $0.003 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.003","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. Use this when an agent needs to approximate token counts per LLM family, ±10%.\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"}}],"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.002","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. Use this when an agent needs to tokens × current per-model prices = USD.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to rAG-ready chunks with token budgets and overlap.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to sHA-256 / SHA-512 / SHA-1 / MD5, exact digests.\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":"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.002","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. Use this when an agent needs to random v4, sortable v7, plus strict validation.\n\nx402 payment required: USDC on eip155:8453, $0.002 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":"8570faa1-8829-4489-8426-daf35261f2db","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.002","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. Use this when an agent needs to pull emails, URLs, IPs, phones and domains from raw text.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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'. Use this when an agent needs to exact line-level diff with unified-style output.\n\nx402 payment required: USDC on eip155:8453, $0.005 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.005","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. Use this when an agent needs to break any URL into protocol, host, path and params.\n\nx402 payment required: USDC on eip155:8453, $0.002 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.002","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. Use this when an agent needs to cSPRNG passwords, hex keys and uniform integers.\n\nx402 payment required: USDC on eip155:8453, $0.002 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":"vlzlposrlmkqcljnqyfgkscg","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.002","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":[]}}},"/api/v1/crypto/wallet-snapshot":{"get":{"operationId":"crypto_wallet_snapshot","summary":"Wallet Snapshot (Live)","description":"One-call on-chain profile of any Ethereum or Base wallet via Blockscout: native balance, transaction and transfer counts, activity recency, top token holdings, and most frequent recent counterparties — with fresh-wallet and high-volume flags. The 'who is this address?' conclusion, not raw RPC data. Use this when an agent needs to on-chain wallet profile: balance, activity, tokens, counterparties.\n\nx402 payment required: USDC on eip155:8453, $0.010 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"address","in":"query","required":true,"description":"Wallet address","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["base","ethereum"]}}],"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/wallet-snapshot","input":{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum"},"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.010","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address"},"chain":{"type":"string","enum":["base","ethereum"],"description":"Chain"}},"required":["address"]}}},"/api/v1/dev/pdf-to-text":{"get":{"operationId":"dev_pdf_to_text","summary":"PDF to Text","description":"Fetch a PDF (by URL, SSRF-guarded) or accept it as base64 and extract all readable text with page count. Deterministic parsing — no language model, so nothing is invented. Text-based PDFs only; scanned images need OCR (not included). Use this when an agent needs to extract readable text from any PDF — agents can't read PDFs.\n\nx402 payment required: USDC on eip155:8453, $0.010 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":false,"description":"Or provide base64 instead","schema":{"type":"string"}},{"name":"base64","in":"query","required":false,"description":"Base64 content","schema":{"type":"string"}},{"name":"maxChars","in":"query","required":false,"description":"Max text length","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/pdf-to-text","input":{"url":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"},"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.010","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"Or provide base64 instead"},"base64":{"type":"string","description":"Base64 content"},"maxChars":{"type":"number","description":"Max text length"}},"required":[]}}},"/api/v1/dev/url-reader":{"get":{"operationId":"dev_url_reader","summary":"URL Reader (Markdown)","description":"Fetch a web page server-side and convert it to clean markdown — headings, links, lists, tables and text, with scripts, styles and boilerplate stripped. The 'reader' pattern agents use to actually understand web pages. SSRF-guarded with redirects re-validated, 10s timeout, 1MB cap. Use this when an agent needs to fetch any page and get clean markdown an LLM can read.\n\nx402 payment required: USDC on eip155:8453, $0.010 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":true,"description":"URL","schema":{"type":"string"}},{"name":"maxChars","in":"query","required":false,"description":"Max markdown length","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/url-reader","input":{"url":"https://example.com","maxChars":5000},"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.010","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"URL"},"maxChars":{"type":"number","description":"Max markdown length"}},"required":["url"]}}},"/api/v1/dev/directory-search":{"get":{"operationId":"dev_directory_search","summary":"Find an API (Directory Search)","description":"Describe what you need and get back matching x402-paid APIs: our own catalog (54 tools) plus, optionally, the live x402 Bazaar of third-party sellers. The agent's meta-tool — instead of knowing an API exists, ask for the capability. Use this when an agent needs to \"I need a tool that does X\" → matched paid APIs.\n\nx402 payment required: USDC on eip155:8453, $0.003 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"query","in":"query","required":true,"description":"What do you need?","schema":{"type":"string"}},{"name":"includeBazaar","in":"query","required":false,"description":"Include third-party Bazaar results","schema":{"type":"string","enum":["true","false"]}},{"name":"limit","in":"query","required":false,"description":"Max results per source","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/directory-search","input":{"query":"convert pdf to text","includeBazaar":"true","limit":5},"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":{"query":{"type":"string","description":"What do you need?"},"includeBazaar":{"type":"string","enum":["true","false"],"description":"Include third-party Bazaar results"},"limit":{"type":"number","description":"Max results per source"}},"required":["query"]}}},"/api/v1/dev/natural-date":{"get":{"operationId":"dev_natural_date","summary":"Natural Date Parser","description":"Parse natural-language date and time expressions — \"in two weeks\", \"next friday at 3pm\", \"dec 25th\" — into exact ISO 8601 dates. Deterministic parsing (no LLM guessing); relative expressions resolve against a reference moment you control. Use this when an agent needs to \"next friday 3pm\" → exact ISO dates.\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":"Expression","schema":{"type":"string"}},{"name":"ref","in":"query","required":false,"description":"Defaults to now","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/natural-date","input":{"text":"next friday at 3pm","ref":"2026-10-01T09:00:00Z"},"result":{"value":1791558000000,"answer":"2026-10-09T15:00:00.000Z","answerLabel":"1 date parsed","table":{"columns":["#","Matched text","ISO 8601 (UTC)"],"rows":[[1,"next friday at 3pm","2026-10-09T15:00:00.000Z"]]},"details":[{"label":"First match span","value":"\"next friday at 3pm\""},{"label":"Reference","value":"2026-10-01T09:00:00.000Z"}],"artifacts":{"dates":"[{\"matched\":\"next friday at 3pm\",\"iso\":\"2026-10-09T15:00:00.000Z\"}]"},"steps":["Chrono deterministic parse with fixed reference","1 match(es) extracted"]}}}}},"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":"Expression"},"ref":{"type":"string","description":"Defaults to now"}},"required":["text"]}}},"/api/v1/dev/cron-describe":{"get":{"operationId":"dev_cron_describe","summary":"Cron Explainer","description":"Turn a cron expression into plain English, validate it, and compute the exact next execution times. Deterministic — the answer to 'when does this cron actually fire?' without guessing. Use this when an agent needs to explain a cron expression and compute the next runs.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"expr","in":"query","required":true,"description":"5 fields: minute hour day month weekday","schema":{"type":"string"}},{"name":"ref","in":"query","required":false,"description":"Reference date (optional)","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/cron-describe","input":{"expr":"0 9 * * 1-5","ref":"2026-10-01T09:00:00Z"},"result":{"value":null,"answer":"At 09:00 AM, Monday through Friday","answerLabel":"\"0 9 * * 1-5\"","table":{"columns":["#","Next execution (UTC)"],"rows":[[1,"2026-10-02T09:00:00.000Z"],[2,"2026-10-05T09:00:00.000Z"],[3,"2026-10-06T09:00:00.000Z"],[4,"2026-10-07T09:00:00.000Z"],[5,"2026-10-08T09:00:00.000Z"]]},"details":[{"label":"Fields","value":"5 (minute hour day month weekday)"},{"label":"Reference","value":"2026-10-01T09:00:00.000Z"}],"steps":["Validate 5-field cron syntax","Render plain-English description","Iterate the schedule 5 times from the reference moment"]}}}}},"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":{"expr":{"type":"string","description":"5 fields: minute hour day month weekday"},"ref":{"type":"string","description":"Reference date (optional)"}},"required":["expr"]}}},"/api/v1/dev/feed-parser":{"get":{"operationId":"dev_feed_parser","summary":"RSS / Atom Feed Parser","description":"Fetch an RSS or Atom feed and return normalized JSON items: title, link, publication date (ISO) and summary. Server-side fetching with SSRF guard; handles both RSS 2.0 and Atom dialects. Use this when an agent needs to any feed → clean JSON items, no XML parsing on your side.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":true,"description":"Feed URL","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max items","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/feed-parser","input":{"url":"https://hnrss.org/frontpage","limit":10},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"Feed URL"},"limit":{"type":"number","description":"Max items"}},"required":["url"]}}},"/api/v1/dev/archive-lookup":{"get":{"operationId":"dev_archive_lookup","summary":"Archive Lookup (Wayback)","description":"Query the Internet Archive's Wayback index for any URL: when it was first archived, the most recent snapshot, how many years it spans, and recent capture dates. Useful for fact-checking page history, finding deleted content and due-diligence. Use this when an agent needs to how the Internet Archive remembers a URL.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":true,"description":"URL or domain","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/archive-lookup","input":{"url":"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"URL or domain"}},"required":["url"]}}},"/api/v1/dev/ics-parser":{"get":{"operationId":"dev_ics_parser","summary":"ICS Calendar Parser","description":"Parse iCalendar (.ics) content — meeting invites, conference calendars, exports from Google/Outlook — into structured event JSON: title, start/end, location, organizer and description. Use this when an agent needs to turn .ics calendar files into clean event JSON.\n\nx402 payment required: USDC on eip155:8453, $0.003 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"ics","in":"query","required":true,"description":".ics content","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max events","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/ics-parser","input":{"ics":"BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nSUMMARY:Quarterly Review\nDTSTART:20261103T140000Z\nDTEND:20261103T150000Z\nLOCATION:Room 4 / Zoom\nORGANIZER;CN=PM Office:mailto:pm@example.com\nEND:VEVENT\nEND:VCALENDAR"},"result":{"value":1,"answer":"1 event","answerLabel":"First: Quarterly Review — 2026-11-03T14:00:00.000Z","table":{"columns":["Event","Start (UTC)","Location"],"rows":[["Quarterly Review","2026-11-03T14:00:00.000Z","Room 4 / Zoom"]]},"details":[{"label":"Total events","value":"1"},{"label":"Next upcoming","value":"Quarterly Review — 2026-11-03T14:00:00.000Z"}],"artifacts":{"events":"[{\"summary\":\"Quarterly Review\",\"start\":\"2026-11-03T14:00:00.000Z\",\"end\":\"2026-11-03T15:00:00.000Z\",\"location\":\"Room 4 / Zoom\",\"description\":null,\"organizer\":\"mailto:pm@example.com\"}]"},"steps":["Parse VCALENDAR with ical.js","Extract 1 VEVENT components","Normalize dates to ISO 8601 (UTC)"]}}}}},"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":{"ics":{"type":"string","description":".ics content"},"limit":{"type":"number","description":"Max events"}},"required":["ics"]}}},"/api/v1/dev/email-validator":{"get":{"operationId":"dev_email_validator","summary":"Email Validator","description":"Validate an email address in two layers: strict RFC-style syntax, then a live DNS MX lookup on the domain to confirm the recipient actually runs mail servers. Catches the typos and fake domains that pure regex misses. Use this when an agent needs to syntax + live MX check — can this address receive mail?.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"email","in":"query","required":true,"description":"Email address","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/email-validator","input":{"email":"someone@gmail.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.002","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"email":{"type":"string","description":"Email address"}},"required":["email"]}}},"/api/v1/databases/area-codes":{"get":{"operationId":"databases_area_codes","summary":"US Area Codes","description":"Look up any US telephone area code to find the state or territory it serves, or list every area code in a given state. Covers all 404 NANP codes in use, including overlays. Use this when an agent needs to all 404 NANP area codes → state lookup.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["databases"],"parameters":[{"name":"code","in":"query","required":false,"description":"Leave empty to list by state instead","schema":{"type":"string"}},{"name":"state","in":"query","required":false,"description":"State filter","schema":{"type":"string"}},{"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/area-codes","input":{"code":"415"},"result":{"value":415,"answer":"Area code 415 — California","answerLabel":"US area code","details":[{"label":"Area code","value":"415"},{"label":"State / territory","value":"California"},{"label":"Other codes in state","value":"209, 213, 279, 310, 323, 341, 408, 424"}],"steps":["Exact-match lookup in the NANP area code dataset"]}}}}},"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":{"code":{"type":"string","description":"Leave empty to list by state instead"},"state":{"type":"string","description":"State filter"},"limit":{"type":"number","description":"Max rows"}},"required":[]}}},"/api/v1/crypto/new-pools":{"get":{"operationId":"crypto_new_pools","summary":"New Pool Scanner","description":"Scan newly created DEX pools on Solana, Base, Ethereum, BSC, Arbitrum or Polygon, filtered by minimum liquidity and maximum age. Each pool comes with liquidity (USD), 24h volume, FDV, buy/sell counts and automatic risk flags (too fresh, thin liquidity, sell pressure). Powered by GeckoTerminal's public API. Use this when an agent needs to fresh DEX launches with liquidity, volume and risk flags.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"network","in":"query","required":false,"description":"Network","schema":{"type":"string","enum":["solana","base","eth","bsc","arbitrum","polygon"]}},{"name":"minLiquidityUsd","in":"query","required":false,"description":"Min liquidity (USD)","schema":{"type":"number"}},{"name":"maxAgeHours","in":"query","required":false,"description":"Max age (hours)","schema":{"type":"number"}},{"name":"limit","in":"query","required":false,"description":"Max pools","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/new-pools","input":{"network":"solana","minLiquidityUsd":5000,"maxAgeHours":24,"limit":10},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"network":{"type":"string","enum":["solana","base","eth","bsc","arbitrum","polygon"],"description":"Network"},"minLiquidityUsd":{"type":"number","description":"Min liquidity (USD)"},"maxAgeHours":{"type":"number","description":"Max age (hours)"},"limit":{"type":"number","description":"Max pools"}},"required":[]}}},"/api/v1/crypto/tx-explain":{"get":{"operationId":"crypto_tx_explain","summary":"Transaction Explainer","description":"Explain what an EVM transaction would actually do: decodes the calldata (ERC-20 transfers/approvals via known ABIs, unknown selectors via the 4byte directory) and simulates the call against live chain state to report the outcome — including unlimited-approval warnings — without sending anything. Use this when an agent needs to decode and simulate a transaction — before signing it.\n\nx402 payment required: USDC on eip155:8453, $0.015 per call. Unpaid requests return 402 with payment instructions.","tags":["crypto"],"parameters":[{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["base","ethereum"]}},{"name":"to","in":"query","required":true,"description":"To address","schema":{"type":"string"}},{"name":"data","in":"query","required":true,"description":"Calldata (0x hex)","schema":{"type":"string"}},{"name":"value","in":"query","required":false,"description":"Value (wei, optional)","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":"crypto/tx-explain","input":{"chain":"base","to":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","data":"0xa9059cbb000000000000000000000000d8dA6BF26964aF9D7eEd9e03E53415D37aA960450000000000000000000000000000000000000000000000000000000000002710"},"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.015","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"chain":{"type":"string","enum":["base","ethereum"],"description":"Chain"},"to":{"type":"string","description":"To address"},"data":{"type":"string","description":"Calldata (0x hex)"},"value":{"type":"string","description":"Value (wei, optional)"}},"required":["to","data"]}}},"/api/v1/dev/domain-availability":{"get":{"operationId":"dev_domain_availability","summary":"Domain Availability Check","description":"Check whether a domain name is registered or available, via the official RDAP registry protocol (404 = available). For registered domains it also returns the registrar and creation/expiration dates — useful when an agent needs to name a product or verify how long a business has existed. Use this when an agent needs to is this domain taken? Registry answer, not a landing page.\n\nx402 payment required: USDC on eip155:8453, $0.003 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"domain","in":"query","required":true,"description":"Domain","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/domain-availability","input":{"domain":"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":{"domain":{"type":"string","description":"Domain"}},"required":["domain"]}}},"/api/v1/dev/page-verify":{"get":{"operationId":"dev_page_verify","summary":"Page Claim Verifier","description":"Verify a claim about a web page's content: fetches the page (SSRF-guarded) and reports whether the expected text appears, with the surrounding excerpt as evidence. The deterministic way for an agent to confirm 'the site says X' before acting on it. Use this when an agent needs to does this page actually say that? Checked, not guessed.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":false,"description":"Or provide raw HTML instead","schema":{"type":"string"}},{"name":"html","in":"query","required":false,"description":"Raw HTML","schema":{"type":"string"}},{"name":"expect","in":"query","required":true,"description":"Expected text","schema":{"type":"string"}},{"name":"caseSensitive","in":"query","required":false,"description":"Case sensitive","schema":{"type":"string","enum":["false","true"]}}],"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/page-verify","input":{"url":"https://example.com","expect":"documentation"},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"Or provide raw HTML instead"},"html":{"type":"string","description":"Raw HTML"},"expect":{"type":"string","description":"Expected text"},"caseSensitive":{"type":"string","enum":["false","true"],"description":"Case sensitive"}},"required":["expect"]}}},"/api/v1/dev/api-health-check":{"get":{"operationId":"dev_api_health_check","summary":"API Health Check","description":"Probe a GET endpoint several times and report status codes and latency statistics (min/avg/max). The cheap way for an agent to verify an API — for example one found on the x402 Bazaar — responds before spending real money calling it. Use this when an agent needs to status and latency stats — test an API before relying on it.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":true,"description":"GET endpoint","schema":{"type":"string"}},{"name":"runs","in":"query","required":false,"description":"Test requests","schema":{"type":"number"}},{"name":"timeoutMs","in":"query","required":false,"description":"Timeout per request (ms)","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/api-health-check","input":{"url":"https://api.frankfurter.dev/v1/latest?base=USD","runs":3},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"GET endpoint"},"runs":{"type":"number","description":"Test requests"},"timeoutMs":{"type":"number","description":"Timeout per request (ms)"}},"required":["url"]}}},"/api/v1/dev/useragent-parse":{"get":{"operationId":"dev_useragent_parse","summary":"User-Agent Parser","description":"Parse a User-Agent header into structured data: browser (name/version), rendering engine, operating system, and device type/vendor/model. Deterministic — the same string always parses identically. Use this when an agent needs to uA string → browser, engine, OS and device.\n\nx402 payment required: USDC on eip155:8453, $0.002 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"userAgent","in":"query","required":true,"description":"User-Agent string","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/useragent-parse","input":{"userAgent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36"},"result":{"value":null,"answer":"Chrome 126.0.0.0 on Windows 10","answerLabel":"Parsed User-Agent","details":[{"label":"Browser","value":"Chrome 126.0.0.0"},{"label":"Engine","value":"Blink 126.0.0.0"},{"label":"OS","value":"Windows 10"},{"label":"Device type","value":"desktop"},{"label":"Device","value":"—"}],"steps":["Tokenize the UA string","Match browser, engine, OS and device patterns (ua-parser-js)"]}}}}},"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":{"userAgent":{"type":"string","description":"User-Agent string"}},"required":["userAgent"]}}},"/api/v1/dev/table-extract":{"get":{"operationId":"dev_table_extract","summary":"Table Extractor","description":"Extract every HTML table from a page (or raw HTML) as structured JSON: headers and rows kept intact. The deterministic answer to 'get the pricing table / comparison table / stats table from this page' — no vision model needed. Use this when an agent needs to hTML tables → structured JSON rows and columns.\n\nx402 payment required: USDC on eip155:8453, $0.010 per call. Unpaid requests return 402 with payment instructions.","tags":["dev"],"parameters":[{"name":"url","in":"query","required":false,"description":"Or provide raw HTML instead","schema":{"type":"string"}},{"name":"html","in":"query","required":false,"description":"Raw HTML","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Max tables","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/table-extract","input":{"html":"<html><body><table><tr><th>Plan</th><th>Price</th></tr><tr><td>Free</td><td>$0</td></tr><tr><td>Pro</td><td>$29</td></tr></table></body></html>"},"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.010","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"url":{"type":"string","description":"Or provide raw HTML instead"},"html":{"type":"string","description":"Raw HTML"},"limit":{"type":"number","description":"Max tables"}},"required":[]}}},"/api/v1/nft/collection-due-diligence":{"get":{"operationId":"nft_collection_due_diligence","summary":"NFT Collection Due Diligence","description":"Full on-chain due-diligence report for any NFT collection: mint supply, unique holders, top-10 ownership concentration with a verdict, wash-trading indicators from transfer patterns, and recent activity trend. Read straight from the chain — the check an agent runs before its human buys. Use this when an agent needs to the Carfax for NFT collections — holders, concentration, wash signals.\n\nx402 payment required: USDC on eip155:8453, $0.025 per call. Unpaid requests return 402 with payment instructions.","tags":["nft"],"parameters":[{"name":"contract","in":"query","required":true,"description":"Collection contract","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["ethereum","base"]}}],"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":"nft/collection-due-diligence","input":{"contract":"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D","chain":"ethereum"},"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.025","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"contract":{"type":"string","description":"Collection contract"},"chain":{"type":"string","enum":["ethereum","base"],"description":"Chain"}},"required":["contract"]}}},"/api/v1/nft/holder-distribution":{"get":{"operationId":"nft_holder_distribution","summary":"NFT Holder Distribution","description":"Top holders of any NFT collection with exact quantities, individual and cumulative ownership percentages, and concentration statistics — the distribution picture agents need before valuing or recommending a collection. Use this when an agent needs to who owns the collection, and how concentrated is it.\n\nx402 payment required: USDC on eip155:8453, $0.010 per call. Unpaid requests return 402 with payment instructions.","tags":["nft"],"parameters":[{"name":"contract","in":"query","required":true,"description":"Collection contract","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["ethereum","base"]}},{"name":"limit","in":"query","required":false,"description":"Holders to show","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":"nft/holder-distribution","input":{"contract":"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D","chain":"ethereum","limit":20},"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.010","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"contract":{"type":"string","description":"Collection contract"},"chain":{"type":"string","enum":["ethereum","base"],"description":"Chain"},"limit":{"type":"number","description":"Holders to show"}},"required":["contract"]}}},"/api/v1/nft/collection-activity":{"get":{"operationId":"nft_collection_activity","summary":"NFT Collection Activity","description":"Live transfer feed of an NFT collection with per-address accumulation analysis: net quantities received vs sent over recent activity, ranking the buyers adding to positions and the wallets exiting. The actionable view behind the raw transfer list. Use this when an agent needs to who is accumulating and who is exiting — right now.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["nft"],"parameters":[{"name":"contract","in":"query","required":true,"description":"Collection contract","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["ethereum","base"]}},{"name":"limit","in":"query","required":false,"description":"Transfers to analyze","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":"nft/collection-activity","input":{"contract":"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D","chain":"ethereum","limit":20},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"contract":{"type":"string","description":"Collection contract"},"chain":{"type":"string","enum":["ethereum","base"],"description":"Chain"},"limit":{"type":"number","description":"Transfers to analyze"}},"required":["contract"]}}},"/api/v1/nft/wallet-nfts":{"get":{"operationId":"nft_wallet_nfts","summary":"Wallet NFT Portfolio","description":"Look up an address's NFT portfolio across collections: each collection held, quantity owned, sorted by size. The enrichment endpoint for agents profiling wallets — pairs with wallet-snapshot for the full picture. Use this when an agent needs to every NFT collection a wallet holds, in one call.\n\nx402 payment required: USDC on eip155:8453, $0.005 per call. Unpaid requests return 402 with payment instructions.","tags":["nft"],"parameters":[{"name":"address","in":"query","required":true,"description":"Wallet address","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["ethereum","base"]}},{"name":"limit","in":"query","required":false,"description":"Max collections","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":"nft/wallet-nfts","input":{"address":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","chain":"ethereum","limit":20},"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.005","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"address":{"type":"string","description":"Wallet address"},"chain":{"type":"string","enum":["ethereum","base"],"description":"Chain"},"limit":{"type":"number","description":"Max collections"}},"required":["address"]}}},"/api/v1/nft/collection-compare":{"get":{"operationId":"nft_collection_compare","summary":"NFT Collection Comparison","description":"Compare any two NFT collections on the full due-diligence metric set: supply, holders, holder ratio, top-10 concentration, wash-trading score and activity trend — with a winner per metric. The head-to-head an agent runs before recommending one collection over another. Use this when an agent needs to two collections side-by-side, metric by metric verdicts.\n\nx402 payment required: USDC on eip155:8453, $0.025 per call. Unpaid requests return 402 with payment instructions.","tags":["nft"],"parameters":[{"name":"contractA","in":"query","required":true,"description":"Collection A","schema":{"type":"string"}},{"name":"contractB","in":"query","required":true,"description":"Collection B","schema":{"type":"string"}},{"name":"chain","in":"query","required":false,"description":"Chain","schema":{"type":"string","enum":["ethereum","base"]}}],"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":"nft/collection-compare","input":{"contractA":"0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D","contractB":"0x60E4d786628Fea6478F785A6d7e704777c86a7c6","chain":"ethereum"},"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.025","payTo":"0x8a0F2b0a6C82D1c54B16E2e4DEcd18fF0802b0f6","facilitator":"https://x402.org/facilitator"},"x-input-schema":{"type":"object","properties":{"contractA":{"type":"string","description":"Collection A"},"contractB":{"type":"string","description":"Collection B"},"chain":{"type":"string","enum":["ethereum","base"],"description":"Chain"}},"required":["contractA","contractB"]}}}}}