{"version":"1.0.0","count":35,"tools":[{"name":"fetch_url","category":"web","description":"Fetch a URL server-side and return cleaned markdown/text/html plus title & description.","endpoint":"/api/v1/fetch_url","method":"POST","input_schema":{"properties":{"url":{"description":"Absolute URL to fetch","examples":["https://example.com"],"title":"Url","type":"string"},"format":{"default":"markdown","description":"markdown | text | html","title":"Format","type":"string"},"max_chars":{"default":20000,"description":"Truncate content to this many characters","title":"Max Chars","type":"integer"}},"required":["url"],"title":"FetchURL","type":"object"}},{"name":"html_to_markdown","category":"web","description":"Convert an HTML string to Markdown.","endpoint":"/api/v1/html_to_markdown","method":"POST","input_schema":{"properties":{"html":{"title":"Html","type":"string"}},"required":["html"],"title":"HtmlToMd","type":"object"}},{"name":"extract_metadata","category":"web","description":"Extract title, description, Open Graph tags, headings and links from HTML or a URL.","endpoint":"/api/v1/extract_metadata","method":"POST","input_schema":{"properties":{"html":{"default":"","description":"Raw HTML (or leave empty and pass url)","title":"Html","type":"string"},"url":{"default":"","description":"URL to fetch instead of passing html","title":"Url","type":"string"}},"title":"ExtractMeta","type":"object"}},{"name":"json_format","category":"data","description":"Validate and pretty-print or minify JSON.","endpoint":"/api/v1/json_format","method":"POST","input_schema":{"properties":{"data":{"title":"Data","type":"string"},"minify":{"default":false,"title":"Minify","type":"boolean"},"sort_keys":{"default":false,"title":"Sort Keys","type":"boolean"}},"required":["data"],"title":"JsonFormat","type":"object"}},{"name":"json_query","category":"data","description":"Query JSON with a JSONPath expression.","endpoint":"/api/v1/json_query","method":"POST","input_schema":{"properties":{"data":{"description":"JSON object/array or a JSON string","title":"Data"},"expression":{"description":"JSONPath expression","examples":["$.items[*].name"],"title":"Expression","type":"string"}},"required":["data","expression"],"title":"JsonQuery","type":"object"}},{"name":"convert_data","category":"data","description":"Convert structured data between JSON, YAML, CSV and TOML.","endpoint":"/api/v1/convert_data","method":"POST","input_schema":{"properties":{"data":{"title":"Data","type":"string"},"from_format":{"description":"json | yaml | csv | toml","title":"From Format","type":"string"},"to_format":{"description":"json | yaml | csv | toml","title":"To Format","type":"string"}},"required":["data","from_format","to_format"],"title":"ConvertData","type":"object"}},{"name":"text_diff","category":"data","description":"Unified line diff between two texts.","endpoint":"/api/v1/text_diff","method":"POST","input_schema":{"properties":{"a":{"title":"A","type":"string"},"b":{"title":"B","type":"string"}},"required":["a","b"],"title":"TextDiff","type":"object"}},{"name":"calc","category":"compute","description":"Safely evaluate an arithmetic expression (no eval); supports math functions.","endpoint":"/api/v1/calc","method":"POST","input_schema":{"properties":{"expression":{"examples":["sqrt(2) * (3 + 4)**2"],"title":"Expression","type":"string"}},"required":["expression"],"title":"Calc","type":"object"}},{"name":"datetime_convert","category":"compute","description":"Parse a date/time (ISO, epoch, or 'now') and convert it to a timezone.","endpoint":"/api/v1/datetime_convert","method":"POST","input_schema":{"properties":{"value":{"default":"now","description":"ISO date, epoch seconds/ms, or 'now'","title":"Value","type":"string"},"from_tz":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"IANA tz of naive input, e.g. Europe/Amsterdam","title":"From Tz"},"to_tz":{"default":"UTC","title":"To Tz","type":"string"}},"title":"DateTimeConvert","type":"object"}},{"name":"date_diff","category":"compute","description":"Difference between two dates incl. business days.","endpoint":"/api/v1/date_diff","method":"POST","input_schema":{"properties":{"start":{"title":"Start","type":"string"},"end":{"title":"End","type":"string"}},"required":["start","end"],"title":"DateDiff","type":"object"}},{"name":"date_add","category":"compute","description":"Add an interval (incl. business days) to a date.","endpoint":"/api/v1/date_add","method":"POST","input_schema":{"properties":{"start":{"default":"now","title":"Start","type":"string"},"days":{"default":0,"title":"Days","type":"integer"},"weeks":{"default":0,"title":"Weeks","type":"integer"},"months":{"default":0,"title":"Months","type":"integer"},"years":{"default":0,"title":"Years","type":"integer"},"business_days":{"default":0,"title":"Business Days","type":"integer"}},"title":"DateAdd","type":"object"}},{"name":"cron_next","category":"compute","description":"Next N run times for a cron expression.","endpoint":"/api/v1/cron_next","method":"POST","input_schema":{"properties":{"expression":{"examples":["*/15 9-17 * * 1-5"],"title":"Expression","type":"string"},"count":{"default":5,"title":"Count","type":"integer"},"tz":{"default":"UTC","title":"Tz","type":"string"}},"required":["expression"],"title":"CronNext","type":"object"}},{"name":"unit_convert","category":"compute","description":"Convert length, mass, data size or temperature.","endpoint":"/api/v1/unit_convert","method":"POST","input_schema":{"properties":{"value":{"title":"Value","type":"number"},"from_unit":{"examples":["mi"],"title":"From Unit","type":"string"},"to_unit":{"examples":["km"],"title":"To Unit","type":"string"}},"required":["value","from_unit","to_unit"],"title":"UnitConvert","type":"object"}},{"name":"base_convert","category":"compute","description":"Convert an integer between numeric bases (2–36).","endpoint":"/api/v1/base_convert","method":"POST","input_schema":{"properties":{"number":{"title":"Number","type":"string"},"from_base":{"default":10,"title":"From Base","type":"integer"},"to_base":{"default":16,"title":"To Base","type":"integer"}},"required":["number"],"title":"BaseConvert","type":"object"}},{"name":"base64","category":"encoding","description":"Base64 encode or decode text.","endpoint":"/api/v1/base64","method":"POST","input_schema":{"properties":{"data":{"title":"Data","type":"string"},"action":{"default":"encode","description":"encode | decode","title":"Action","type":"string"},"urlsafe":{"default":false,"title":"Urlsafe","type":"boolean"}},"required":["data"],"title":"Base64Tool","type":"object"}},{"name":"hash","category":"encoding","description":"Compute md5/sha1/sha256/sha512 (and more) hashes of text.","endpoint":"/api/v1/hash","method":"POST","input_schema":{"properties":{"text":{"title":"Text","type":"string"},"algorithms":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"examples":[["sha256","md5"]],"title":"Algorithms"}},"required":["text"],"title":"HashTool","type":"object"}},{"name":"hmac","category":"encoding","description":"Compute an HMAC of text with a key.","endpoint":"/api/v1/hmac","method":"POST","input_schema":{"properties":{"text":{"title":"Text","type":"string"},"key":{"title":"Key","type":"string"},"algorithm":{"default":"sha256","title":"Algorithm","type":"string"}},"required":["text","key"],"title":"HmacTool","type":"object"}},{"name":"jwt_decode","category":"encoding","description":"Decode a JWT header & payload (signature not verified).","endpoint":"/api/v1/jwt_decode","method":"POST","input_schema":{"properties":{"token":{"title":"Token","type":"string"}},"required":["token"],"title":"JwtDecode","type":"object"}},{"name":"uuid","category":"encoding","description":"Generate UUIDs.","endpoint":"/api/v1/uuid","method":"POST","input_schema":{"properties":{"count":{"default":1,"title":"Count","type":"integer"},"version":{"default":4,"title":"Version","type":"integer"}},"title":"UuidTool","type":"object"}},{"name":"url_encode","category":"encoding","description":"URL percent-encode or decode text.","endpoint":"/api/v1/url_encode","method":"POST","input_schema":{"properties":{"data":{"title":"Data","type":"string"},"action":{"default":"encode","description":"encode | decode","title":"Action","type":"string"},"component":{"default":true,"title":"Component","type":"boolean"}},"required":["data"],"title":"UrlTool","type":"object"}},{"name":"regex_extract","category":"text","description":"Find all regex matches (with groups) in text.","endpoint":"/api/v1/regex_extract","method":"POST","input_schema":{"properties":{"pattern":{"title":"Pattern","type":"string"},"text":{"title":"Text","type":"string"},"flags":{"default":"","description":"combination of i, m, s, x","title":"Flags","type":"string"}},"required":["pattern","text"],"title":"RegexExtract","type":"object"}},{"name":"text_stats","category":"text","description":"Character/word/line/sentence counts and an approx token count.","endpoint":"/api/v1/text_stats","method":"POST","input_schema":{"properties":{"text":{"title":"Text","type":"string"}},"required":["text"],"title":"TextStats","type":"object"}},{"name":"slugify","category":"text","description":"Turn text into a URL-safe slug.","endpoint":"/api/v1/slugify","method":"POST","input_schema":{"properties":{"text":{"title":"Text","type":"string"},"separator":{"default":"-","title":"Separator","type":"string"}},"required":["text"],"title":"Slugify","type":"object"}},{"name":"qr_code","category":"generate","description":"Generate a QR code as a PNG data URI.","endpoint":"/api/v1/qr_code","method":"POST","input_schema":{"properties":{"data":{"title":"Data","type":"string"},"box_size":{"default":10,"title":"Box Size","type":"integer"},"border":{"default":2,"title":"Border","type":"integer"}},"required":["data"],"title":"QrCode","type":"object"}},{"name":"lorem","category":"generate","description":"Generate Lorem Ipsum placeholder text.","endpoint":"/api/v1/lorem","method":"POST","input_schema":{"properties":{"paragraphs":{"default":3,"title":"Paragraphs","type":"integer"},"sentences_per_paragraph":{"default":4,"title":"Sentences Per Paragraph","type":"integer"}},"title":"Lorem","type":"object"}},{"name":"dns_lookup","category":"live","description":"Resolve DNS records (A/AAAA/MX/TXT/NS/CNAME) for a domain.","endpoint":"/api/v1/dns_lookup","method":"POST","input_schema":{"properties":{"domain":{"examples":["example.com"],"title":"Domain","type":"string"},"record_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"examples":[["A","MX","TXT"]],"title":"Record Types"}},"required":["domain"],"title":"DnsLookup","type":"object"}},{"name":"rdap_domain","category":"live","description":"WHOIS/RDAP domain registration: registrar, dates, status, nameservers.","endpoint":"/api/v1/rdap_domain","method":"POST","input_schema":{"properties":{"domain":{"examples":["example.com"],"title":"Domain","type":"string"}},"required":["domain"],"title":"RdapDomain","type":"object"}},{"name":"ip_info","category":"live","description":"Geolocate an IP (or the caller's own IP): country, city, ISP, ASN.","endpoint":"/api/v1/ip_info","method":"POST","input_schema":{"properties":{"ip":{"default":"","description":"IP address; leave blank for the caller's own IP","title":"Ip","type":"string"}},"title":"IpInfo","type":"object"}},{"name":"http_headers","category":"live","description":"Fetch a URL's HTTP status, redirect chain and response headers.","endpoint":"/api/v1/http_headers","method":"POST","input_schema":{"properties":{"url":{"title":"Url","type":"string"},"method":{"default":"GET","title":"Method","type":"string"}},"required":["url"],"title":"HttpHeaders","type":"object"}},{"name":"tls_cert","category":"live","description":"Inspect a host's live TLS certificate and days until expiry.","endpoint":"/api/v1/tls_cert","method":"POST","input_schema":{"properties":{"host":{"examples":["example.com"],"title":"Host","type":"string"},"port":{"default":443,"title":"Port","type":"integer"}},"required":["host"],"title":"TlsCert","type":"object"}},{"name":"fx_convert","category":"live","description":"Convert currency at the latest live exchange rate.","endpoint":"/api/v1/fx_convert","method":"POST","input_schema":{"properties":{"amount":{"default":1,"title":"Amount","type":"number"},"from_currency":{"examples":["USD"],"title":"From Currency","type":"string"},"to_currency":{"examples":["EUR"],"title":"To Currency","type":"string"}},"required":["from_currency","to_currency"],"title":"FxConvert","type":"object"}},{"name":"geocode","category":"live","description":"Geocode a place name to latitude/longitude.","endpoint":"/api/v1/geocode","method":"POST","input_schema":{"properties":{"place":{"examples":["Amsterdam"],"title":"Place","type":"string"},"count":{"default":1,"title":"Count","type":"integer"}},"required":["place"],"title":"Geocode","type":"object"}},{"name":"weather","category":"live","description":"Current weather for a place name or lat/lon.","endpoint":"/api/v1/weather","method":"POST","input_schema":{"properties":{"place":{"default":"","examples":["Tokyo"],"title":"Place","type":"string"},"latitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Latitude"},"longitude":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Longitude"}},"title":"Weather","type":"object"}},{"name":"rss_fetch","category":"live","description":"Fetch and parse a live RSS/Atom feed into items.","endpoint":"/api/v1/rss_fetch","method":"POST","input_schema":{"properties":{"url":{"title":"Url","type":"string"},"limit":{"default":10,"title":"Limit","type":"integer"}},"required":["url"],"title":"RssFetch","type":"object"}},{"name":"unshorten_url","category":"live","description":"Reveal the final destination of a shortened/tracking URL.","endpoint":"/api/v1/unshorten_url","method":"POST","input_schema":{"properties":{"url":{"title":"Url","type":"string"}},"required":["url"],"title":"UnshortenUrl","type":"object"}}]}