{"success":true,"tools":[{"id":"base64","name":"Base64 Encoder / Decoder","description":"Encode text to Base64 or decode Base64 back to text.","category":"encoding","parameters":{"type":"object","properties":{"action":{"type":"string","enum":["encode","decode"],"description":"Whether to encode or decode."},"text":{"type":"string","description":"The text to encode or the Base64 string to decode.","maxLength":1000000}},"required":["action","text"],"additionalProperties":false},"examples":[{"summary":"Encode a string","input":{"action":"encode","text":"Hello, World!"},"output":{"result":"SGVsbG8sIFdvcmxkIQ=="}},{"summary":"Decode a Base64 string","input":{"action":"decode","text":"SGVsbG8sIFdvcmxkIQ=="},"output":{"result":"Hello, World!"}}]},{"id":"url-encode","name":"URL Encoder / Decoder","description":"Encode or decode URL components.","category":"encoding","parameters":{"type":"object","properties":{"action":{"type":"string","enum":["encode","decode"],"description":"Whether to encode or decode."},"text":{"type":"string","description":"The text or URL to encode/decode.","maxLength":100000},"mode":{"type":"string","enum":["component","full"],"description":"encode: component = encodeURIComponent (default), full = encodeURI.","default":"component"}},"required":["action","text"],"additionalProperties":false},"examples":[{"summary":"Encode a query string value","input":{"action":"encode","text":"hello world & more"},"output":{"result":"hello%20world%20%26%20more"}},{"summary":"Decode a URL component","input":{"action":"decode","text":"hello%20world%20%26%20more"},"output":{"result":"hello world & more"}}]},{"id":"hash","name":"Hash Generator","description":"Generate MD5, SHA-1, SHA-256, or SHA-512 hash of a string.","category":"crypto","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to hash.","maxLength":1000000},"algorithm":{"type":"string","enum":["MD5","SHA-1","SHA-256","SHA-512"],"description":"Hash algorithm to use.","default":"SHA-256"}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"SHA-256 hash","input":{"text":"Hello, World!","algorithm":"SHA-256"},"output":{"hash":"dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986d","algorithm":"SHA-256"}},{"summary":"MD5 hash","input":{"text":"Hello, World!","algorithm":"MD5"},"output":{"hash":"65a8e27d8879283831b664bd8b7f0ad4","algorithm":"MD5"}}]},{"id":"hmac","name":"HMAC Generator","description":"Generate an HMAC signature using SHA-1, SHA-256, or SHA-512.","category":"crypto","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The message to sign.","maxLength":1000000},"key":{"type":"string","description":"The secret key.","maxLength":10000},"algorithm":{"type":"string","enum":["SHA-1","SHA-256","SHA-512"],"description":"HMAC algorithm.","default":"SHA-256"}},"required":["text","key"],"additionalProperties":false},"examples":[{"summary":"HMAC-SHA-256","input":{"text":"Hello, World!","key":"secret","algorithm":"SHA-256"},"output":{"hmac":"88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b","algorithm":"SHA-256"}}]},{"id":"json-format","name":"JSON Formatter / Minifier","description":"Format (pretty-print) or minify a JSON string.","category":"data","x402Pricing":{"amount":"1000","description":"Pay to format/minify JSON"},"parameters":{"type":"object","properties":{"json":{"type":"string","description":"The JSON string to process.","maxLength":1000000},"action":{"type":"string","enum":["format","minify"],"description":"\"format\" pretty-prints with indentation, \"minify\" removes whitespace.","default":"format"},"indent":{"type":"integer","description":"Number of spaces for indentation (format only).","minimum":1,"maximum":8,"default":2}},"required":["json"],"additionalProperties":false},"examples":[{"summary":"Format JSON","input":{"json":"{\"name\":\"Alice\",\"age\":30}","action":"format"},"output":{"result":"{\n  \"name\": \"Alice\",\n  \"age\": 30\n}"}},{"summary":"Minify JSON","input":{"json":"{\n  \"name\": \"Alice\",\n  \"age\": 30\n}","action":"minify"},"output":{"result":"{\"name\":\"Alice\",\"age\":30}"}}]},{"id":"json-validate","name":"JSON Validator","description":"Check whether a string is valid JSON and get basic structure info.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"The string to validate as JSON.","maxLength":1000000}},"required":["json"],"additionalProperties":false},"examples":[{"summary":"Valid JSON","input":{"json":"{\"name\":\"Alice\",\"scores\":[1,2,3]}"},"output":{"valid":true,"type":"object","keys":2}},{"summary":"Invalid JSON","input":{"json":"{name: \"Alice\"}"},"output":{"valid":false,"error":"Expected property name or '}' in JSON at position 1"}}]},{"id":"percentage","name":"Percentage Calculator","description":"Calculate percentages: X% of Y, percent change, increase, or decrease.","category":"conversion","parameters":{"type":"object","properties":{"mode":{"type":"string","enum":["of","change","increase","decrease","what_percent"],"description":"\"of\": what is X% of Y? | \"change\": percent change from X to Y | \"increase\": increase X by Y% | \"decrease\": decrease X by Y% | \"what_percent\": X is what percent of Y?"},"x":{"type":"number","description":"First number (see mode description)."},"y":{"type":"number","description":"Second number (see mode description)."}},"required":["mode","x","y"],"additionalProperties":false},"examples":[{"summary":"15% of 200","input":{"mode":"of","x":15,"y":200},"output":{"result":30,"expression":"15% of 200 = 30"}},{"summary":"Percent change from 80 to 100","input":{"mode":"change","x":80,"y":100},"output":{"result":25,"expression":"Change from 80 to 100 = +25%"}},{"summary":"200 increased by 10%","input":{"mode":"increase","x":200,"y":10},"output":{"result":220,"expression":"200 increased by 10% = 220"}}]},{"id":"unit-convert","name":"Unit Converter","description":"Convert between units of length, weight, temperature, data size, area, and speed.","category":"conversion","parameters":{"type":"object","properties":{"value":{"type":"number","description":"The value to convert."},"from":{"type":"string","description":"Source unit (e.g. \"km\", \"lb\", \"C\", \"GB\")."},"to":{"type":"string","description":"Target unit (e.g. \"mi\", \"kg\", \"F\", \"MB\")."},"category":{"type":"string","enum":["length","weight","temperature","data","area","speed"],"description":"Unit category. If omitted, auto-detected from units."}},"required":["value","from","to"],"additionalProperties":false},"examples":[{"summary":"Kilometers to miles","input":{"value":10,"from":"km","to":"mi","category":"length"},"output":{"result":6.21371,"from":"km","to":"mi","category":"length"}},{"summary":"Celsius to Fahrenheit","input":{"value":100,"from":"C","to":"F","category":"temperature"},"output":{"result":212,"from":"C","to":"F","category":"temperature"}},{"summary":"Gigabytes to megabytes","input":{"value":2,"from":"GB","to":"MB","category":"data"},"output":{"result":2048,"from":"GB","to":"MB","category":"data"}}]},{"id":"color-convert","name":"Color Converter","description":"Convert colors between HEX, RGB, and HSL formats.","category":"conversion","parameters":{"type":"object","properties":{"color":{"type":"string","description":"Input color. Examples: \"#ff6b35\", \"rgb(255, 107, 53)\", \"hsl(18, 100%, 60%)\""},"from":{"type":"string","enum":["hex","rgb","hsl"],"description":"Input format."}},"required":["color","from"],"additionalProperties":false},"examples":[{"summary":"HEX to RGB and HSL","input":{"color":"#ff6b35","from":"hex"},"output":{"hex":"#ff6b35","rgb":"rgb(255, 107, 53)","hsl":"hsl(18, 100%, 60%)","r":255,"g":107,"b":53,"h":18,"s":100,"l":60}},{"summary":"RGB to HEX and HSL","input":{"color":"rgb(255, 107, 53)","from":"rgb"},"output":{"hex":"#ff6b35","rgb":"rgb(255, 107, 53)","hsl":"hsl(18, 100%, 60%)","r":255,"g":107,"b":53,"h":18,"s":100,"l":60}}]},{"id":"unix-timestamp","name":"Unix Timestamp Converter","description":"Convert Unix timestamps to human-readable dates and vice versa.","category":"datetime","parameters":{"type":"object","properties":{"action":{"type":"string","enum":["to_date","to_timestamp","now"],"description":"\"to_date\": timestamp -> date string | \"to_timestamp\": date string -> timestamp | \"now\": current timestamp"},"value":{"type":"string","description":"Unix timestamp (seconds or ms) or ISO date string. Not needed for \"now\"."}},"required":["action"],"additionalProperties":false},"examples":[{"summary":"Timestamp to date","input":{"action":"to_date","value":"1704067200"},"output":{"timestamp":1704067200,"iso":"2024-01-01T00:00:00.000Z","utc":"Mon, 01 Jan 2024 00:00:00 GMT","relative":"about 3 months ago"}},{"summary":"Date to timestamp","input":{"action":"to_timestamp","value":"2024-01-01T00:00:00Z"},"output":{"timestamp":1704067200,"timestampMs":1704067200000}},{"summary":"Current timestamp","input":{"action":"now"},"output":{"timestamp":1704067200,"timestampMs":1704067200000,"iso":"2024-01-01T00:00:00.000Z"}}]},{"id":"number-base","name":"Number Base Converter","description":"Convert numbers between binary, octal, decimal, and hexadecimal.","category":"conversion","parameters":{"type":"object","properties":{"value":{"type":"string","description":"The number to convert (as string to handle large values).","maxLength":256},"from":{"type":"string","enum":["binary","octal","decimal","hexadecimal","bin","oct","dec","hex"],"description":"Source base."}},"required":["value","from"],"additionalProperties":false},"examples":[{"summary":"Decimal 255 to all bases","input":{"value":"255","from":"decimal"},"output":{"decimal":"255","binary":"11111111","octal":"377","hexadecimal":"ff"}},{"summary":"Binary to all bases","input":{"value":"11111111","from":"binary"},"output":{"decimal":"255","binary":"11111111","octal":"377","hexadecimal":"ff"}}]},{"id":"case-convert","name":"Text Case Converter","description":"Convert text between different cases: uppercase, lowercase, title, camelCase, PascalCase, snake_case, kebab-case, and CONSTANT_CASE.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to convert.","maxLength":100000},"to":{"type":"string","enum":["upper","lower","title","camel","pascal","snake","kebab","constant","sentence"],"description":"Target case format."}},"required":["text","to"],"additionalProperties":false},"examples":[{"summary":"Convert to camelCase","input":{"text":"hello world foo","to":"camel"},"output":{"result":"helloWorldFoo"}},{"summary":"Convert to snake_case","input":{"text":"helloWorldFoo","to":"snake"},"output":{"result":"hello_world_foo"}},{"summary":"Convert to kebab-case","input":{"text":"Hello World","to":"kebab"},"output":{"result":"hello-world"}}]},{"id":"word-count","name":"Word Counter","description":"Count words, characters, sentences, paragraphs, and estimate reading time.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to analyze.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Count words in a sentence","input":{"text":"Hello world! How are you today?\n\nThis is a new paragraph."},"output":{"words":10,"characters":55,"charactersNoSpaces":44,"sentences":3,"paragraphs":2,"readingTimeSeconds":3}}]},{"id":"jwt-decode","name":"JWT Decoder","description":"Decode a JWT token and inspect its header and payload. Does NOT verify the signature.","category":"developer","parameters":{"type":"object","properties":{"token":{"type":"string","description":"The JWT token to decode.","maxLength":100000}},"required":["token"],"additionalProperties":false},"examples":[{"summary":"Decode a JWT","input":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"},"output":{"header":{"alg":"HS256","typ":"JWT"},"payload":{"sub":"1234567890","name":"John Doe","iat":1516239022},"signature":"SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c","verified":false,"warning":"Signature not verified. Do not trust this token without verification."}}]},{"id":"regex-test","name":"Regex Tester","description":"Test a regular expression against text and return all matches with groups.","category":"developer","parameters":{"type":"object","properties":{"pattern":{"type":"string","description":"The regular expression pattern (without delimiters).","maxLength":1000},"text":{"type":"string","description":"The text to test against.","maxLength":100000},"flags":{"type":"string","description":"Regex flags: g (global), i (case-insensitive), m (multiline), s (dotAll). Default: \"g\"","default":"g"}},"required":["pattern","text"],"additionalProperties":false},"examples":[{"summary":"Find all emails","input":{"pattern":"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}","text":"Contact us at hello@example.com or support@findutils.com","flags":"g"},"output":{"matched":true,"matchCount":2,"matches":[{"match":"hello@example.com","index":14,"groups":[]},{"match":"support@findutils.com","index":35,"groups":[]}]}},{"summary":"No match","input":{"pattern":"\\d+","text":"No numbers here","flags":"g"},"output":{"matched":false,"matchCount":0,"matches":[]}}]},{"id":"date-diff","name":"Date Difference Calculator","description":"Calculate the difference between two dates in various units.","category":"datetime","parameters":{"type":"object","properties":{"from":{"type":"string","description":"Start date (ISO 8601 or any parseable date string)."},"to":{"type":"string","description":"End date (ISO 8601 or any parseable date string). Defaults to now if omitted."}},"required":["from"],"additionalProperties":false},"examples":[{"summary":"Days between two dates","input":{"from":"2024-01-01","to":"2024-12-31"},"output":{"days":365,"weeks":52,"months":12,"years":1,"hours":8760,"minutes":525600,"seconds":31536000,"fromDate":"2024-01-01T00:00:00.000Z","toDate":"2024-12-31T00:00:00.000Z"}}]},{"id":"csv-to-json","name":"CSV to JSON Converter","description":"Convert CSV text to a JSON array of objects. First row is used as headers.","category":"data","parameters":{"type":"object","properties":{"csv":{"type":"string","description":"The CSV content to convert.","maxLength":1000000},"delimiter":{"type":"string","description":"Field delimiter character. Default: \",\"","default":","},"coerce":{"type":"boolean","description":"Automatically coerce numbers, booleans, and nulls. Default: true","default":true}},"required":["csv"],"additionalProperties":false},"examples":[{"summary":"Basic CSV to JSON","input":{"csv":"name,age,city\nAlice,30,NYC\nBob,25,LA"},"output":{"rows":[{"name":"Alice","age":30,"city":"NYC"},{"name":"Bob","age":25,"city":"LA"}],"count":2,"headers":["name","age","city"]}}]},{"id":"json-to-csv","name":"JSON to CSV Converter","description":"Convert a JSON array of objects to CSV format.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"A JSON array of objects to convert.","maxLength":1000000},"delimiter":{"type":"string","description":"Field delimiter. Default: \",\"","default":","},"includeHeaders":{"type":"boolean","description":"Include a header row. Default: true","default":true}},"required":["json"],"additionalProperties":false},"examples":[{"summary":"Convert JSON array to CSV","input":{"json":"[{\"name\":\"Alice\",\"age\":30},{\"name\":\"Bob\",\"age\":25}]"},"output":{"csv":"name,age\nAlice,30\nBob,25","rows":2,"columns":2}}]},{"id":"markdown-to-html","name":"Markdown to HTML","description":"Convert Markdown text to HTML. Supports headings, bold, italic, links, code blocks, lists, blockquotes, and horizontal rules.","category":"conversion","parameters":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown text to convert.","maxLength":500000}},"required":["markdown"],"additionalProperties":false},"examples":[{"summary":"Convert basic Markdown","input":{"markdown":"# Hello\n\nThis is **bold** and *italic* text."},"output":{"html":"<h1>Hello</h1>\n<p>This is <strong>bold</strong> and <em>italic</em> text.</p>"}},{"summary":"Convert list and code","input":{"markdown":"## Items\n\n- One\n- Two\n\n```js\nconsole.log(\"hi\");\n```"},"output":{"html":"<h2>Items</h2>\n<ul>\n<li>One</li>\n<li>Two</li>\n</ul>\n<pre><code class=\"language-js\">\nconsole.log(&quot;hi&quot;);\n</code></pre>"}}]},{"id":"html-strip","name":"HTML Tag Stripper","description":"Strip HTML tags from text and return plain text. Optionally decode HTML entities.","category":"text","parameters":{"type":"object","properties":{"html":{"type":"string","description":"HTML string to strip tags from.","maxLength":500000},"decode_entities":{"type":"boolean","description":"Decode common HTML entities (e.g. &amp; → &). Default: true.","default":true},"preserve_whitespace":{"type":"boolean","description":"Preserve original whitespace instead of collapsing it. Default: false.","default":false}},"required":["html"],"additionalProperties":false},"examples":[{"summary":"Strip tags from HTML","input":{"html":"<h1>Hello</h1><p>This is <strong>bold</strong> text.</p>"},"output":{"text":"Hello This is bold text.","chars_removed":37}},{"summary":"Strip and decode entities","input":{"html":"<p>Fish &amp; Chips &lt;great&gt;</p>","decode_entities":true},"output":{"text":"Fish & Chips <great>","chars_removed":16}}]},{"id":"slug-generate","name":"Slug Generator","description":"Generate URL-friendly slugs from text. Converts to lowercase, replaces spaces and special characters with hyphens.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to convert to a slug.","maxLength":1000},"separator":{"type":"string","description":"Separator character between words. Default: \"-\".","enum":["-","_"],"default":"-"},"max_length":{"type":"integer","description":"Maximum slug length. 0 means no limit. Default: 0.","minimum":0,"maximum":500,"default":0}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Basic slug generation","input":{"text":"Hello World! This is a Test."},"output":{"slug":"hello-world-this-is-a-test"}},{"summary":"Slug with underscore separator and max length","input":{"text":"My Awesome Blog Post Title","separator":"_","max_length":20},"output":{"slug":"my_awesome_blog_post"}}]},{"id":"ip-validate","name":"IP Address Validator","description":"Validate IPv4 and IPv6 addresses and return type, class, and details.","category":"developer","parameters":{"type":"object","properties":{"ip":{"type":"string","description":"IPv4 or IPv6 address to validate.","maxLength":100}},"required":["ip"],"additionalProperties":false},"examples":[{"summary":"Validate IPv4 address","input":{"ip":"192.168.1.1"},"output":{"valid":true,"version":4,"type":"private","class":"C","octets":[192,168,1,1]}},{"summary":"Validate IPv6 address","input":{"ip":"::1"},"output":{"valid":true,"version":6,"type":"loopback","expanded":"0000:0000:0000:0000:0000:0000:0000:0001"}}]},{"id":"email-validate","name":"Email Validator","description":"Validate email address format using RFC 5322 rules. Returns validation details including local part, domain, and any issues found.","category":"developer","parameters":{"type":"object","properties":{"email":{"type":"string","description":"Email address to validate.","maxLength":500}},"required":["email"],"additionalProperties":false},"examples":[{"summary":"Valid email address","input":{"email":"user.name+tag@example.co.uk"},"output":{"valid":true,"local":"user.name+tag","domain":"example.co.uk","tld":"uk"}},{"summary":"Invalid email address","input":{"email":"not-an-email"},"output":{"valid":false,"issues":["Missing @ symbol"]}}]},{"id":"credit-card-validate","name":"Credit Card Validator","description":"Validate credit card numbers using the Luhn algorithm and detect card type (Visa, Mastercard, Amex, etc.).","category":"developer","parameters":{"type":"object","properties":{"number":{"type":"string","description":"Credit card number to validate. Spaces and dashes are ignored.","maxLength":25}},"required":["number"],"additionalProperties":false},"examples":[{"summary":"Valid Visa test number","input":{"number":"4532015112830366"},"output":{"valid":true,"card_type":"Visa","digits":16,"luhn_valid":true}},{"summary":"Valid Amex test number with spaces","input":{"number":"3714 496353 98431"},"output":{"valid":true,"card_type":"American Express","digits":15,"luhn_valid":true}}]},{"id":"password-generate","name":"Password Generator","description":"Generate cryptographically secure random passwords with configurable length and character sets.","category":"crypto","parameters":{"type":"object","properties":{"length":{"type":"integer","description":"Password length. Default: 16.","minimum":4,"maximum":256,"default":16},"include_uppercase":{"type":"boolean","description":"Include uppercase letters (A-Z). Default: true.","default":true},"include_lowercase":{"type":"boolean","description":"Include lowercase letters (a-z). Default: true.","default":true},"include_digits":{"type":"boolean","description":"Include digits (0-9). Default: true.","default":true},"include_symbols":{"type":"boolean","description":"Include symbols (!@#$%^&*...). Default: true.","default":true},"exclude_ambiguous":{"type":"boolean","description":"Exclude ambiguous characters (0, O, l, 1, I). Default: false.","default":false},"count":{"type":"integer","description":"Number of passwords to generate. Default: 1.","minimum":1,"maximum":20,"default":1}},"required":[],"additionalProperties":false},"examples":[{"summary":"Generate a 20-character password","input":{"length":20,"include_symbols":true},"output":{"passwords":["xK9#mP2$vL5@nQ8!wR3&"],"entropy_bits":131}},{"summary":"Generate 3 PIN-style numeric passwords","input":{"length":6,"include_uppercase":false,"include_lowercase":false,"include_symbols":false,"count":3},"output":{"passwords":["482931","105847","739201"],"entropy_bits":20}}]},{"id":"random-number","name":"Random Number Generator","description":"Generate cryptographically secure random integers or floats within a specified range.","category":"developer","parameters":{"type":"object","properties":{"min":{"type":"number","description":"Minimum value (inclusive). Default: 0.","default":0},"max":{"type":"number","description":"Maximum value (inclusive for integers, exclusive for floats). Default: 100.","default":100},"count":{"type":"integer","description":"How many numbers to generate. Default: 1.","minimum":1,"maximum":1000,"default":1},"type":{"type":"string","enum":["integer","float"],"description":"Generate integers or floats. Default: \"integer\".","default":"integer"},"decimal_places":{"type":"integer","description":"Decimal places for float output. Default: 4.","minimum":1,"maximum":10,"default":4},"unique":{"type":"boolean","description":"Ensure all generated numbers are unique. Only applies to integers. Default: false.","default":false}},"required":[],"additionalProperties":false},"examples":[{"summary":"Roll a six-sided die 5 times","input":{"min":1,"max":6,"count":5,"type":"integer"},"output":{"numbers":[3,1,6,4,2]}},{"summary":"Generate random floats","input":{"min":0,"max":1,"count":3,"type":"float","decimal_places":4},"output":{"numbers":[0.3821,0.7456,0.1204]}}]},{"id":"random-string","name":"Random String Generator","description":"Generate cryptographically secure random strings with configurable length and character sets.","category":"crypto","parameters":{"type":"object","properties":{"length":{"type":"integer","description":"String length. Default: 16.","minimum":1,"maximum":1000,"default":16},"charset":{"type":"string","enum":["alphanumeric","alpha","lowercase","uppercase","digits","hex","hex_upper","base58","ascii_printable","custom"],"description":"Character set to use. Default: \"alphanumeric\".","default":"alphanumeric"},"custom_chars":{"type":"string","description":"Custom character set when charset is \"custom\".","maxLength":256},"count":{"type":"integer","description":"Number of strings to generate. Default: 1.","minimum":1,"maximum":50,"default":1}},"required":[],"additionalProperties":false},"examples":[{"summary":"Generate a random hex token","input":{"length":32,"charset":"hex"},"output":{"strings":["a3f8b2c91d4e07f56a1b8c3d29e4f071"]}},{"summary":"Generate 3 random alphanumeric IDs","input":{"length":8,"charset":"alphanumeric","count":3},"output":{"strings":["kR7mN2pQ","Xb4wL9sV","Tz6hJ3nF"]}}]},{"id":"text-reverse","name":"Text Reverser","description":"Reverse a string character by character, or reverse the order of words or lines.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to reverse.","maxLength":100000},"mode":{"type":"string","enum":["characters","words","lines"],"description":"What to reverse: characters in the whole string, order of words, or order of lines. Default: \"characters\".","default":"characters"}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Reverse characters","input":{"text":"Hello, World!","mode":"characters"},"output":{"result":"!dlroW ,olleH"}},{"summary":"Reverse word order","input":{"text":"The quick brown fox","mode":"words"},"output":{"result":"fox brown quick The"}}]},{"id":"text-truncate","name":"Text Truncator","description":"Truncate text to a maximum length with configurable ellipsis. Can truncate by characters or words.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to truncate.","maxLength":500000},"max_length":{"type":"integer","description":"Maximum length (in characters or words depending on mode).","minimum":1,"maximum":100000},"mode":{"type":"string","enum":["characters","words"],"description":"Truncate by character count or word count. Default: \"characters\".","default":"characters"},"ellipsis":{"type":"string","description":"String to append when truncated. Default: \"...\".","maxLength":10,"default":"..."},"break_on_word":{"type":"boolean","description":"When truncating by characters, break at word boundaries. Default: false.","default":false}},"required":["text","max_length"],"additionalProperties":false},"examples":[{"summary":"Truncate to 20 characters","input":{"text":"The quick brown fox jumps over the lazy dog","max_length":20},"output":{"result":"The quick brown fox ...","truncated":true,"original_length":43}},{"summary":"Truncate to 5 words","input":{"text":"The quick brown fox jumps over the lazy dog","max_length":5,"mode":"words"},"output":{"result":"The quick brown fox jumps...","truncated":true,"original_length":43}}]},{"id":"text-repeat","name":"Text Repeater","description":"Repeat text a specified number of times with an optional separator between repetitions.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to repeat.","maxLength":10000},"count":{"type":"integer","description":"Number of times to repeat.","minimum":1,"maximum":10000},"separator":{"type":"string","description":"String to insert between repetitions. Default: \"\".","maxLength":100,"default":""}},"required":["text","count"],"additionalProperties":false},"examples":[{"summary":"Repeat a string 3 times","input":{"text":"hello","count":3,"separator":", "},"output":{"result":"hello, hello, hello","total_length":19}},{"summary":"Repeat with newline separator","input":{"text":"---","count":5,"separator":"\n"},"output":{"result":"---\n---\n---\n---\n---","total_length":19}}]},{"id":"string-escape","name":"String Escape / Unescape","description":"Escape or unescape strings for JSON, HTML, URL, regex, or SQL contexts.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to escape or unescape.","maxLength":500000},"action":{"type":"string","enum":["escape","unescape"],"description":"Whether to escape or unescape."},"format":{"type":"string","enum":["json","html","url","regex","sql"],"description":"Target format/context for escaping."}},"required":["text","action","format"],"additionalProperties":false},"examples":[{"summary":"Escape string for JSON","input":{"text":"He said \"hello\"\nNew line","action":"escape","format":"json"},"output":{"result":"He said \\\"hello\\\"\\nNew line"}},{"summary":"Escape HTML special chars","input":{"text":"<script>alert(\"xss\")</script>","action":"escape","format":"html"},"output":{"result":"&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt;"}}]},{"id":"whitespace-clean","name":"Whitespace Cleaner","description":"Clean whitespace from text: trim, collapse multiple spaces, normalize line endings, remove blank lines, or strip all whitespace.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to clean.","maxLength":500000},"trim":{"type":"boolean","description":"Trim leading and trailing whitespace from the entire text. Default: true.","default":true},"trim_lines":{"type":"boolean","description":"Trim each line individually. Default: false.","default":false},"collapse_spaces":{"type":"boolean","description":"Collapse multiple consecutive spaces/tabs to a single space. Default: true.","default":true},"remove_blank_lines":{"type":"boolean","description":"Remove empty or whitespace-only lines. Default: false.","default":false},"normalize_line_endings":{"type":"string","enum":["lf","crlf","cr","none"],"description":"Normalize line endings. Default: \"none\" (no change).","default":"none"}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Collapse spaces and trim","input":{"text":"  Hello    World   ","trim":true,"collapse_spaces":true},"output":{"result":"Hello World","changes_made":2}},{"summary":"Remove blank lines","input":{"text":"Line 1\n\n\nLine 2\n\nLine 3","remove_blank_lines":true},"output":{"result":"Line 1\nLine 2\nLine 3","changes_made":2}}]},{"id":"line-sort","name":"Line Sorter","description":"Sort lines of text alphabetically, numerically, by length, or randomly.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Multi-line text to sort.","maxLength":500000},"order":{"type":"string","enum":["alphabetical","alphabetical_desc","numeric","numeric_desc","length","length_desc","random"],"description":"Sort order. Default: \"alphabetical\".","default":"alphabetical"},"case_sensitive":{"type":"boolean","description":"Case-sensitive sort. Default: false.","default":false},"ignore_leading_whitespace":{"type":"boolean","description":"Ignore leading whitespace when sorting. Default: true.","default":true}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Sort lines alphabetically","input":{"text":"banana\napple\ncherry","order":"alphabetical"},"output":{"result":"apple\nbanana\ncherry","line_count":3}},{"summary":"Sort lines by length","input":{"text":"hello world\nhi\ngoodbye","order":"length"},"output":{"result":"hi\ngoodbye\nhello world","line_count":3}}]},{"id":"line-dedupe","name":"Line Deduplicator","description":"Remove duplicate lines from text. Optionally case-insensitive, and optionally show only the duplicates.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Multi-line text to deduplicate.","maxLength":500000},"case_sensitive":{"type":"boolean","description":"Case-sensitive comparison. Default: true.","default":true},"keep":{"type":"string","enum":["first","last"],"description":"Which occurrence to keep when duplicates are found. Default: \"first\".","default":"first"},"trim_before_compare":{"type":"boolean","description":"Trim whitespace before comparing lines. Default: false.","default":false},"show_duplicates_only":{"type":"boolean","description":"Output only the duplicate lines (not the unique ones). Default: false.","default":false}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Remove duplicate lines","input":{"text":"apple\nbanana\napple\ncherry\nbanana"},"output":{"result":"apple\nbanana\ncherry","original_count":5,"unique_count":3,"removed_count":2}},{"summary":"Case-insensitive deduplication keeping last","input":{"text":"Hello\nhello\nworld\nWORLD","case_sensitive":false,"keep":"last"},"output":{"result":"hello\nWORLD","original_count":4,"unique_count":2,"removed_count":2}}]},{"id":"json-flatten","name":"JSON Flatten","description":"Flatten nested JSON objects to a single level using dot-notation keys. Arrays become indexed keys.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON string to flatten.","maxLength":500000},"separator":{"type":"string","description":"Key separator. Default: \".\".","maxLength":5,"default":"."}},"required":["json"],"additionalProperties":false},"examples":[{"summary":"Flatten nested object","input":{"json":"{\"user\":{\"name\":\"Alice\",\"address\":{\"city\":\"NYC\"}}}"},"output":{"result":{"user.name":"Alice","user.address.city":"NYC"},"key_count":2}},{"summary":"Flatten with array","input":{"json":"{\"items\":[\"a\",\"b\"],\"count\":2}"},"output":{"result":{"items.0":"a","items.1":"b","count":2},"key_count":3}}]},{"id":"json-unflatten","name":"JSON Unflatten","description":"Convert flat dot-notation key-value JSON back into a nested JSON object.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Flat JSON object with dot-notation keys.","maxLength":500000},"separator":{"type":"string","description":"Key separator used in the flat keys. Default: \".\".","maxLength":5,"default":"."}},"required":["json"],"additionalProperties":false},"examples":[{"summary":"Unflatten dot-notation keys","input":{"json":"{\"user.name\":\"Alice\",\"user.address.city\":\"NYC\"}"},"output":{"result":{"user":{"name":"Alice","address":{"city":"NYC"}}}}},{"summary":"Unflatten with array keys","input":{"json":"{\"items.0\":\"a\",\"items.1\":\"b\",\"count\":2}"},"output":{"result":{"items":["a","b"],"count":2}}}]},{"id":"json-query","name":"JSON Query","description":"Query JSON data using dot-notation paths (e.g., user.name, items[0].price). Supports nested objects and array indexing.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON data to query.","maxLength":500000},"path":{"type":"string","description":"Query path using dot notation. E.g. \"user.name\", \"$.items[0].title\", \"data.users[2].email\".","maxLength":500}},"required":["json","path"],"additionalProperties":false},"examples":[{"summary":"Query nested property","input":{"json":"{\"user\":{\"name\":\"Alice\",\"age\":30}}","path":"user.name"},"output":{"result":"Alice","type":"string","found":true}},{"summary":"Query array element","input":{"json":"{\"items\":[{\"id\":1,\"name\":\"Widget\"},{\"id\":2,\"name\":\"Gadget\"}]}","path":"$.items[1].name"},"output":{"result":"Gadget","type":"string","found":true}}]},{"id":"xml-to-json","name":"XML to JSON","description":"Convert XML to JSON. Handles nested elements, attributes (@attributes), and text content (#text). Simple elements unwrap to string values.","category":"conversion","parameters":{"type":"object","properties":{"xml":{"type":"string","description":"XML string to convert.","maxLength":500000},"pretty":{"type":"boolean","description":"Pretty-print the JSON output. Default: true.","default":true}},"required":["xml"],"additionalProperties":false},"examples":[{"summary":"Convert simple XML","input":{"xml":"<person><name>Alice</name><age>30</age></person>"},"output":{"result":{"person":{"name":"Alice","age":"30"}}}},{"summary":"Convert XML with attributes","input":{"xml":"<item id=\"1\" type=\"book\"><title>TypeScript</title></item>"},"output":{"result":{"item":{"@attributes":{"id":"1","type":"book"},"title":"TypeScript"}}}}]},{"id":"yaml-to-json","name":"YAML to JSON","description":"Convert YAML to JSON. Supports key-value pairs, nested objects, lists, and basic scalars (strings, numbers, booleans, null).","category":"conversion","parameters":{"type":"object","properties":{"yaml":{"type":"string","description":"YAML string to convert.","maxLength":500000},"pretty":{"type":"boolean","description":"Pretty-print the JSON output. Default: true.","default":true}},"required":["yaml"],"additionalProperties":false},"examples":[{"summary":"Convert simple YAML","input":{"yaml":"name: Alice\nage: 30\nactive: true"},"output":{"result":{"name":"Alice","age":30,"active":true}}},{"summary":"Convert YAML with list","input":{"yaml":"fruits:\n  - apple\n  - banana\n  - cherry"},"output":{"result":{"fruits":["apple","banana","cherry"]}}}]},{"id":"cron-describe","name":"Cron Expression Describer","description":"Describe a 5-field cron expression in plain English (minute hour day-of-month month day-of-week).","category":"developer","parameters":{"type":"object","properties":{"expression":{"type":"string","description":"5-field cron expression to describe, e.g. \"0 9 * * 1-5\" (weekdays at 9am).","maxLength":100}},"required":["expression"],"additionalProperties":false},"examples":[{"summary":"Describe a weekday schedule","input":{"expression":"0 9 * * 1-5"},"output":{"description":"At 09:00, Monday through Friday."}},{"summary":"Describe a weekday hourly window","input":{"expression":"*/5 9-17 * * 1-5"},"output":{"description":"Every 5 minutes, from 09:00 through 17:00, Monday through Friday."}},{"summary":"Describe a daily midnight cron","input":{"expression":"0 0 * * *"},"output":{"description":"At 00:00."}}]},{"id":"chmod-calculate","name":"chmod Calculator","description":"Convert between numeric (755) and symbolic (rwxr-xr-x) chmod permission formats, with human-readable description.","category":"developer","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"Permission mode: numeric (e.g. \"755\", \"0644\") or symbolic (e.g. \"rwxr-xr-x\").","maxLength":12}},"required":["mode"],"additionalProperties":false},"examples":[{"summary":"Convert numeric to symbolic","input":{"mode":"755"},"output":{"numeric":"755","symbolic":"rwxr-xr-x","description":{"owner":"read, write, execute","group":"read, execute","others":"read, execute"}}},{"summary":"Convert symbolic to numeric","input":{"mode":"rw-r--r--"},"output":{"numeric":"644","symbolic":"rw-r--r--","description":{"owner":"read, write","group":"read","others":"read"}}}]},{"id":"cidr-calculate","name":"CIDR Calculator","description":"Calculate network address, broadcast address, host range, subnet mask, and host count from a CIDR notation (e.g. 192.168.1.0/24).","category":"developer","parameters":{"type":"object","properties":{"cidr":{"type":"string","description":"CIDR notation like \"192.168.1.0/24\" or \"10.0.0.0/8\".","maxLength":20}},"required":["cidr"],"additionalProperties":false},"examples":[{"summary":"Calculate /24 network","input":{"cidr":"192.168.1.0/24"},"output":{"network_address":"192.168.1.0","broadcast_address":"192.168.1.255","first_host":"192.168.1.1","last_host":"192.168.1.254","subnet_mask":"255.255.255.0","host_count":254,"prefix_length":24}},{"summary":"Calculate /16 network","input":{"cidr":"10.0.0.0/16"},"output":{"network_address":"10.0.0.0","broadcast_address":"10.0.255.255","first_host":"10.0.0.1","last_host":"10.0.255.254","subnet_mask":"255.255.0.0","host_count":65534,"prefix_length":16}}]},{"id":"morse-code","name":"Morse Code Encoder / Decoder","description":"Encode text to Morse code or decode Morse code back to text. Letters are separated by spaces, words by \" / \".","category":"encoding","parameters":{"type":"object","properties":{"action":{"type":"string","enum":["encode","decode"],"description":"Whether to encode text to Morse or decode Morse to text."},"text":{"type":"string","description":"For encode: plain text. For decode: Morse code with letters separated by spaces and words by \" / \".","maxLength":10000}},"required":["action","text"],"additionalProperties":false},"examples":[{"summary":"Encode text to Morse code","input":{"action":"encode","text":"SOS"},"output":{"result":"... --- ..."}},{"summary":"Decode Morse to text","input":{"action":"decode","text":".... . .-.. .-.. --- / .-- --- .-. .-.. -.."},"output":{"result":"HELLO WORLD"}}]},{"id":"roman-numeral","name":"Roman Numeral Converter","description":"Convert between Roman numerals and Arabic (decimal) numbers. Supports values 1-3999.","category":"conversion","parameters":{"type":"object","properties":{"value":{"type":"string","description":"Arabic number (e.g. \"2024\") or Roman numeral (e.g. \"MMXXIV\") to convert.","maxLength":20}},"required":["value"],"additionalProperties":false},"examples":[{"summary":"Convert Arabic to Roman","input":{"value":"2024"},"output":{"arabic":2024,"roman":"MMXXIV","direction":"arabic_to_roman"}},{"summary":"Convert Roman to Arabic","input":{"value":"XIV"},"output":{"arabic":14,"roman":"XIV","direction":"roman_to_arabic"}}]},{"id":"bmi-calculate","name":"BMI Calculator","description":"Calculate Body Mass Index (BMI) from height and weight. Supports metric (kg/cm) and imperial (lbs/in) units.","category":"conversion","parameters":{"type":"object","properties":{"weight":{"type":"number","description":"Body weight.","minimum":1,"maximum":1000},"height":{"type":"number","description":"Height.","minimum":1,"maximum":300},"unit":{"type":"string","enum":["metric","imperial"],"description":"Unit system. \"metric\" uses kg and cm. \"imperial\" uses lbs and inches. Default: \"metric\".","default":"metric"}},"required":["weight","height"],"additionalProperties":false},"examples":[{"summary":"Calculate BMI in metric units","input":{"weight":70,"height":175,"unit":"metric"},"output":{"bmi":22.86,"category":"Normal weight","weight_kg":70,"height_cm":175}},{"summary":"Calculate BMI in imperial units","input":{"weight":154,"height":68,"unit":"imperial"},"output":{"bmi":23.41,"category":"Normal weight","weight_kg":69.85,"height_cm":172.72}}]},{"id":"tip-calculate","name":"Tip Calculator","description":"Calculate tip amount, total bill, and per-person split. Supports custom tip percentages.","category":"conversion","parameters":{"type":"object","properties":{"bill_amount":{"type":"number","description":"Total bill amount before tip.","minimum":0,"maximum":1000000},"tip_percent":{"type":"number","description":"Tip percentage to apply. Default: 15.","minimum":0,"maximum":100,"default":15},"people":{"type":"integer","description":"Number of people to split the bill among. Default: 1.","minimum":1,"maximum":1000,"default":1},"round_up":{"type":"boolean","description":"Round up per-person amount to nearest whole number. Default: false.","default":false}},"required":["bill_amount"],"additionalProperties":false},"examples":[{"summary":"Calculate 20% tip for 4 people","input":{"bill_amount":100,"tip_percent":20,"people":4},"output":{"tip_amount":20,"total_bill":120,"per_person":30,"tip_per_person":5}},{"summary":"Calculate default 15% tip","input":{"bill_amount":85.5,"tip_percent":15,"people":2},"output":{"tip_amount":12.83,"total_bill":98.33,"per_person":49.17,"tip_per_person":6.41}}]},{"id":"aspect-ratio","name":"Aspect Ratio Calculator","description":"Calculate aspect ratio from dimensions, or resize dimensions while maintaining a given aspect ratio.","category":"conversion","parameters":{"type":"object","properties":{"mode":{"type":"string","enum":["calculate","resize"],"description":"\"calculate\" to find aspect ratio from width and height. \"resize\" to scale dimensions to a new size."},"width":{"type":"number","description":"Original width.","minimum":1,"maximum":1000000},"height":{"type":"number","description":"Original height.","minimum":1,"maximum":1000000},"new_width":{"type":"number","description":"Target width for resize mode. Provide either new_width or new_height.","minimum":1,"maximum":1000000},"new_height":{"type":"number","description":"Target height for resize mode. Provide either new_width or new_height.","minimum":1,"maximum":1000000}},"required":["mode","width","height"],"additionalProperties":false},"examples":[{"summary":"Calculate aspect ratio of 1920x1080","input":{"mode":"calculate","width":1920,"height":1080},"output":{"ratio":"16:9","ratio_decimal":1.7778,"width":1920,"height":1080}},{"summary":"Resize 1920x1080 to 1280 width","input":{"mode":"resize","width":1920,"height":1080,"new_width":1280},"output":{"new_width":1280,"new_height":720,"ratio":"16:9","scale_factor":0.6667}}]},{"id":"qr-text","name":"QR Code (Text/ASCII)","description":"Generate a QR code as ASCII art. Supports up to ~100 characters. Returns the matrix as text using block characters, dots, or hash symbols.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode in the QR code.","maxLength":120},"style":{"type":"string","enum":["minimal","blocks","dots"],"description":"ASCII art style. \"minimal\" uses # and ., \"blocks\" uses full block chars, \"dots\" uses circles. Default: \"blocks\".","default":"blocks"}},"required":["text"],"additionalProperties":false},"examples":[{"summary":"Generate QR code for a URL","input":{"text":"https://findutils.com","style":"minimal"},"output":{"ascii":"(qr matrix as ascii art)","version":3,"size":29}},{"summary":"Generate QR code with block style","input":{"text":"Hello","style":"blocks"},"output":{"ascii":"(qr matrix with block chars)","version":1,"size":21}}]},{"id":"cloudflare-cost-calculate","name":"Cloudflare Cost Calculator","description":"Estimate monthly Cloudflare developer platform costs. Supports Workers, D1, R2, KV, and Durable Objects with free tier and Workers Paid ($5/mo) plan calculations.","category":"developer","parameters":{"type":"object","properties":{"plan":{"type":"string","enum":["free","paid"],"description":"Pricing plan. \"free\" for free tier, \"paid\" for Workers Paid ($5/mo). Default: \"free\".","default":"free"},"workers_requests_m":{"type":"number","description":"Workers requests in millions per month.","minimum":0},"workers_cpu_ms_m":{"type":"number","description":"Workers CPU time in millions of ms per month.","minimum":0},"workers_build_min":{"type":"number","description":"Workers build minutes per month.","minimum":0},"d1_reads_m":{"type":"number","description":"D1 row reads in millions per month.","minimum":0},"d1_writes_m":{"type":"number","description":"D1 row writes in millions per month.","minimum":0},"d1_storage_gb":{"type":"number","description":"D1 storage in GB.","minimum":0},"r2_storage_gb":{"type":"number","description":"R2 storage in GB.","minimum":0},"r2_class_a_m":{"type":"number","description":"R2 Class A operations in millions per month (PUT, POST, DELETE, LIST).","minimum":0},"r2_class_b_m":{"type":"number","description":"R2 Class B operations in millions per month (GET, HEAD).","minimum":0},"kv_reads_m":{"type":"number","description":"KV reads in millions per month.","minimum":0},"kv_writes_m":{"type":"number","description":"KV writes in millions per month.","minimum":0},"kv_storage_gb":{"type":"number","description":"KV storage in GB.","minimum":0},"do_requests_m":{"type":"number","description":"Durable Objects requests in millions per month.","minimum":0},"do_duration_k_gbs":{"type":"number","description":"Durable Objects duration in thousands of GB-seconds per month.","minimum":0},"do_reads_m":{"type":"number","description":"Durable Objects SQLite reads in millions per month.","minimum":0},"do_writes_m":{"type":"number","description":"Durable Objects SQLite writes in millions per month.","minimum":0},"do_storage_gb":{"type":"number","description":"Durable Objects storage in GB.","minimum":0}},"required":[],"additionalProperties":false},"examples":[{"summary":"Estimate cost for a small Workers project on paid plan","input":{"plan":"paid","workers_requests_m":15,"r2_storage_gb":50},"output":{"plan":"paid","platform_fee":5,"products":{"workers":{"total":1.5,"breakdown":{"requests_m":{"usage":15,"included":10,"overage":5,"cost":1.5}}},"r2":{"total":0.6,"breakdown":{"storage_gb":{"usage":50,"included":10,"overage":40,"cost":0.6}}}},"total_monthly_cost":7.1}},{"summary":"Check free tier costs","input":{"plan":"free","workers_requests_m":2,"d1_reads_m":100},"output":{"plan":"free","platform_fee":0,"products":{"workers":{"total":0,"breakdown":{"requests_m":{"usage":2,"included":3,"overage":0,"cost":0}}},"d1":{"total":0,"breakdown":{"reads_m":{"usage":100,"included":150,"overage":0,"cost":0}}}},"total_monthly_cost":0}}]},{"id":"meta-fetch","name":"Meta Tag Fetcher","description":"Fetch title, meta description, Open Graph tags, and favicon from a URL.","category":"developer","parameters":{"type":"object","properties":{"url":{"type":"string","description":"URL to fetch meta tags from (e.g., https://example.com)","minLength":1,"maxLength":2048}},"required":["url"]},"examples":[{"summary":"Fetch meta tags from a URL","input":{"url":"https://findutils.com"},"output":{"title":"FindUtils - Online Developer Tools","description":"Free browser-based tools for developers...","og_title":"FindUtils","og_description":"online developer tools","og_image":"https://findutils.com/og-image.png","og_url":"https://findutils.com","og_type":"website","og_site_name":"FindUtils","twitter_card":"summary_large_image","twitter_title":"FindUtils","twitter_description":"online developer tools","twitter_image":"https://findutils.com/og-image.png","favicon":"https://findutils.com/favicon.ico","canonical":"https://findutils.com"}}]},{"id":"pdf-extract","name":"PDF Text Extractor","description":"Extract text and structured JSON (with bounding boxes) from a PDF. Pass a base64-encoded string OR a public https:// URL. Runs entirely on Cloudflare Workers with WebAssembly — your bytes are never logged.","category":"conversion","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"PDF as a base64-encoded string (with or without data: prefix) OR a public https:// URL pointing to a PDF.","maxLength":14000000},"output":{"type":"string","enum":["text","json","all"],"description":"What to return: layout-preserved text, structured JSON, or both.","default":"all"},"maxPages":{"type":"integer","description":"Hard cap on pages parsed. Helps bound CPU time on huge documents.","default":200,"minimum":1,"maximum":500}},"required":["pdf"],"additionalProperties":false},"examples":[{"summary":"Parse a PDF from a public URL","input":{"pdf":"https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf","output":"text"},"output":{"text":"Dummy PDF file"}},{"summary":"Parse a base64 PDF (truncated)","input":{"pdf":"JVBERi0xLjQK...","output":"text"},"output":{"text":"...extracted text..."}}]},{"id":"age-calculate","name":"Age Calculator","description":"Calculate age from a date of birth — years, months, days, plus totals in days, weeks, and months. Accepts ISO 8601 or anything Date.parse handles.","category":"datetime","parameters":{"type":"object","properties":{"date_of_birth":{"type":"string","description":"Date of birth (ISO 8601 preferred, e.g. 1990-04-18)."},"reference_date":{"type":"string","description":"Date to measure age against. Default: today (UTC)."}},"required":["date_of_birth"],"additionalProperties":false},"examples":[]},{"id":"base32-encode","name":"Base32 Encode","description":"Encode UTF-8 text to RFC 4648 base32 (uppercase, \"=\" padding). Useful for TOTP secrets and case-insensitive identifiers.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"base32-decode","name":"Base32 Decode","description":"Decode RFC 4648 base32 back to UTF-8 text. Case-insensitive; padding \"=\" optional.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Base32-encoded text.","maxLength":2000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"base64-encode","name":"Base64 Encode (text-only)","description":"Encode UTF-8 text as a base64 string.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The UTF-8 text to encode.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"base64-decode","name":"Base64 Decode (text-only)","description":"Decode a base64 string back to UTF-8 text.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Base64-encoded string to decode.","maxLength":2000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"color-contrast","name":"WCAG Color Contrast","description":"Compute the WCAG 2.1 contrast ratio between two colours (accepts #rgb, #rrggbb, and rgb()/rgba() formats) and report whether it passes AA/AAA for normal and large text.","category":"conversion","parameters":{"type":"object","properties":{"foreground":{"type":"string","description":"Foreground / text colour.","minLength":3},"background":{"type":"string","description":"Background colour.","minLength":3}},"required":["foreground","background"],"additionalProperties":false},"examples":[]},{"id":"compound-interest","name":"Compound Interest","description":"Compute compound interest growth. Supports any compound frequency (monthly, quarterly, annual) plus optional fixed monthly contributions. Returns final balance, total contributions, total interest, and a year-by-year balance series.","category":"finance","parameters":{"type":"object","properties":{"principal":{"type":"number","description":"Starting principal (in any currency).","minimum":0},"annual_rate":{"type":"number","description":"Annual interest rate as a decimal (0.07 = 7%)."},"years":{"type":"number","description":"Investment duration in years.","minimum":0,"maximum":200},"compounds_per_year":{"type":"integer","description":"Compound periods per year. Default: 12 (monthly).","minimum":1,"maximum":365},"monthly_contribution":{"type":"number","description":"Optional fixed monthly contribution. Default: 0."}},"required":["principal","annual_rate","years"],"additionalProperties":false},"examples":[]},{"id":"gcd-calculate","name":"GCD / LCM","description":"Greatest Common Divisor (GCD) and Least Common Multiple (LCM) of two non-negative integers. Uses the Euclidean algorithm.","category":"calculators","parameters":{"type":"object","properties":{"a":{"type":"integer","description":"First integer."},"b":{"type":"integer","description":"Second integer."}},"required":["a","b"],"additionalProperties":false},"examples":[]},{"id":"hex-encode","name":"Hex Encode","description":"Encode UTF-8 text as a hexadecimal string. Optional separator between bytes and uppercase output.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode.","maxLength":1000000},"separator":{"type":"string","description":"String between bytes (e.g. \" \" or \":\"). Default: \"\".","maxLength":4},"upper":{"type":"boolean","description":"Uppercase hex. Default: false."}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"hex-decode","name":"Hex Decode","description":"Decode a hexadecimal string back to UTF-8 text. Whitespace, dashes, and colons between bytes are tolerated.","category":"encoding","parameters":{"type":"object","properties":{"hex":{"type":"string","description":"Hex string.","maxLength":2000000}},"required":["hex"],"additionalProperties":false},"examples":[]},{"id":"html-entity-encode","name":"HTML Entity Encode","description":"Encode HTML special characters as entities. Named mode uses &amp;/&lt;/&gt;/&quot;/&#39;; numeric mode uses &#NNN; for all non-ASCII plus the five reserved chars.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode.","maxLength":1000000},"mode":{"type":"string","description":"Entity style. Default: named.","enum":["named","numeric"]}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"html-entity-decode","name":"HTML Entity Decode","description":"Decode HTML entities back to characters. Handles named entities (amp/lt/gt/quot/apos plus common typography), decimal (&#NNN;), and hex (&#xHH;) forms.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text containing HTML entities.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"html-to-markdown","name":"HTML to Markdown","description":"Convert HTML fragments to Markdown. Supports headings, paragraphs, lists, links, images, inline code, code blocks, blockquotes, and basic inline emphasis. Unknown tags are stripped, content preserved.","category":"text","parameters":{"type":"object","properties":{"html":{"type":"string","description":"HTML input.","maxLength":1000000}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"json-to-xml","name":"JSON to XML","description":"Convert a JSON value to XML. Object keys become element names; arrays produce repeated sibling elements. Invalid XML names fall back to <item>. Adds an XML declaration and wraps everything in a configurable root element.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON string to convert.","maxLength":2000000},"root_name":{"type":"string","description":"Root element name. Default: \"root\".","maxLength":64},"indent":{"type":"integer","description":"Indent width. 0 emits single-line XML. Default: 2.","minimum":0,"maximum":8}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-markdown-table","name":"JSON to Markdown Table","description":"Convert a JSON array of objects to a GitHub-flavoured Markdown table. Column order follows the first row's keys unless `headers` is given. Objects in cells are JSON-stringified. \"|\" and newlines inside cells are escaped.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON array of objects to tabulate.","maxLength":1000000},"headers":{"type":"array","description":"Optional explicit column order. Missing keys render as empty cells.","items":{"type":"string","description":"Column key."}}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"levenshtein-distance","name":"Levenshtein Distance","description":"Compute the Levenshtein edit distance between two strings (minimum single-character insertions, deletions, or substitutions to transform A into B). Also returns a normalised similarity in [0, 1].","category":"text","parameters":{"type":"object","properties":{"a":{"type":"string","description":"First string.","maxLength":10000},"b":{"type":"string","description":"Second string.","maxLength":10000}},"required":["a","b"],"additionalProperties":false},"examples":[]},{"id":"loan-calculate","name":"Loan Calculator","description":"Amortise a fixed-rate loan and show the impact of an optional monthly extra payment on payoff time and total interest.","category":"finance","parameters":{"type":"object","properties":{"principal":{"type":"number","description":"Loan balance.","minimum":0},"annual_rate":{"type":"number","description":"Annual interest rate as a decimal.","minimum":0},"years":{"type":"number","description":"Contract length in years.","minimum":0,"maximum":100},"extra_payment":{"type":"number","description":"Optional monthly extra paid on top of the standard payment.","minimum":0}},"required":["principal","annual_rate","years"],"additionalProperties":false},"examples":[]},{"id":"mortgage-calculate","name":"Mortgage Calculator","description":"Compute a fixed-rate mortgage monthly payment using the standard amortisation formula M = P·r(1+r)^n / ((1+r)^n - 1). Assumes monthly compounding.","category":"finance","parameters":{"type":"object","properties":{"principal":{"type":"number","description":"Loan amount.","minimum":0},"annual_rate":{"type":"number","description":"Annual interest rate as a decimal (0.065 = 6.5%).","minimum":0},"years":{"type":"number","description":"Loan term in years.","minimum":0,"maximum":100}},"required":["principal","annual_rate","years"],"additionalProperties":false},"examples":[]},{"id":"nanoid-generate","name":"NanoID Generator","description":"Generate one or more NanoID-style identifiers. Defaults to the standard 21-char URL-safe alphabet used by the npm `nanoid` package. Uses rejection sampling so custom alphabets stay unbiased.","category":"developer","parameters":{"type":"object","properties":{"size":{"type":"integer","description":"Length of each ID. Default: 21.","minimum":2,"maximum":256},"count":{"type":"integer","description":"How many IDs to generate. Default: 1.","minimum":1,"maximum":100},"alphabet":{"type":"string","description":"Character set to draw from. Default: nanoid URL-safe.","minLength":2,"maxLength":256}},"additionalProperties":false},"examples":[]},{"id":"palindrome-check","name":"Palindrome Check","description":"Check if a string reads the same forwards and backwards. Strict mode compares the raw string; relaxed (default) lowercases and strips non-alphanumeric characters first.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to check.","maxLength":100000},"mode":{"type":"string","description":"Comparison mode. Default: relaxed.","enum":["strict","relaxed"]}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"password-strength","name":"Password Strength","description":"Estimate password strength using character-class entropy. Returns a 0–4 score, a descriptive label, and actionable feedback. NOT a substitute for a full dictionary check (zxcvbn) — this is fast and offline-safe.","category":"crypto","parameters":{"type":"object","properties":{"password":{"type":"string","description":"The password to evaluate.","maxLength":1024}},"required":["password"],"additionalProperties":false},"examples":[]},{"id":"phone-format","name":"Phone Formatter (E.164)","description":"Format a phone number to E.164 (+CCNNNNNNN…) given an optional country calling code. Strips spaces, dashes, parens, and dots. Validates length against a small country table; returns valid=false without raising for numbers outside that table.","category":"developer","parameters":{"type":"object","properties":{"phone":{"type":"string","description":"The raw phone number (may include formatting).","maxLength":64},"country_code":{"type":"string","description":"ITU country calling code without \"+\" (e.g. \"1\", \"44\", \"90\"). Default: \"1\"."}},"required":["phone"],"additionalProperties":false},"examples":[]},{"id":"prime-check","name":"Prime Check","description":"Check whether an integer is prime. For composite numbers, returns the prime factorisation. Supports inputs up to 2^53-1 but is only fast for n ≲ 10^12.","category":"calculators","parameters":{"type":"object","properties":{"n":{"type":"integer","description":"Integer to test. Must be ≥ 2.","minimum":2}},"required":["n"],"additionalProperties":false},"examples":[]},{"id":"query-string-parse","name":"Query String Parse","description":"Parse a URL query string into an object. Leading \"?\" is optional. Repeat keys collapse into string arrays.","category":"data","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Query string (with or without leading \"?\").","maxLength":65536}},"required":["query"],"additionalProperties":false},"examples":[]},{"id":"query-string-stringify","name":"Query String Stringify","description":"Serialise an object into a URL query string. Array values repeat the key. Null/undefined values are skipped. Set prefix=true to include the leading \"?\".","category":"data","parameters":{"type":"object","properties":{"params":{"type":"object","description":"Key-value object. Values may be strings, numbers, booleans, or arrays."},"prefix":{"type":"boolean","description":"If true, prepend \"?\". Default: false."}},"required":["params"],"additionalProperties":false},"examples":[]},{"id":"reading-time","name":"Reading Time","description":"Estimate reading time for a block of text. Default speed is 200 wpm, the figure every FindUtils page uses; pass wpm to change it. Returns minutes, seconds, and a human-readable string.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to measure.","maxLength":5000000},"wpm":{"type":"number","description":"Words per minute. Default: 200.","minimum":50,"maximum":1200}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"rot13","name":"ROT13","description":"Apply the ROT13 Caesar cipher to text. Self-inverse — running the output through rot13 again recovers the original. Non-letters pass through unchanged.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to rotate.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"slugify-deep","name":"Slugify (i18n)","description":"Slugify text with locale-aware diacritics handling (Turkish, German, French, Spanish) before falling back to Unicode NFD stripping. Produces lowercase, alphanumeric + separator output.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to slugify.","maxLength":10000},"separator":{"type":"string","description":"Separator between words. Default: \"-\".","maxLength":3},"max_length":{"type":"integer","description":"Cap output length (breaking at separator). Default: 200.","minimum":1,"maximum":500}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"temperature-convert","name":"Temperature Convert","description":"Convert temperature between Celsius (C), Fahrenheit (F), Kelvin (K), and Rankine (R). Output is rounded to 4 decimal places.","category":"conversion","parameters":{"type":"object","properties":{"value":{"type":"number","description":"Temperature value to convert."},"from":{"type":"string","description":"Source unit.","enum":["C","F","K","R"]},"to":{"type":"string","description":"Target unit.","enum":["C","F","K","R"]}},"required":["value","from","to"],"additionalProperties":false},"examples":[]},{"id":"text-diff","name":"Text Diff","description":"Line-by-line diff of two strings using LCS. Returns structured chunks (equal / added / removed) plus a unified-diff-style text block and tallies.","category":"text","parameters":{"type":"object","properties":{"a":{"type":"string","description":"Original text.","maxLength":500000},"b":{"type":"string","description":"Changed text.","maxLength":500000}},"required":["a","b"],"additionalProperties":false},"examples":[]},{"id":"text-statistics","name":"Text Statistics","description":"Compute detailed text statistics: characters (with and without spaces), words, sentences, paragraphs, averages, plus Flesch Reading Ease (0-100) and Flesch-Kincaid Grade Level.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to analyse.","maxLength":5000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"timezone-convert","name":"Timezone Convert","description":"Convert a datetime between IANA time zones. Uses the browser's/Node's Intl DB, so any well-formed zone name (America/New_York, Europe/Istanbul, Asia/Tokyo, UTC, etc.) works.","category":"datetime","parameters":{"type":"object","properties":{"datetime":{"type":"string","description":"Input datetime (ISO 8601 preferred; anything Date.parse accepts works).","maxLength":64},"from_tz":{"type":"string","description":"Source IANA zone. Ignored if datetime includes an offset.","maxLength":64},"to_tz":{"type":"string","description":"Target IANA zone.","maxLength":64}},"required":["datetime","from_tz","to_tz"],"additionalProperties":false},"examples":[]},{"id":"tsv-to-csv","name":"TSV to CSV","description":"Convert tab-separated values to comma-separated values (or any configured delimiter). Quotes cells that contain the delimiter, quotes, or newlines following RFC 4180.","category":"data","parameters":{"type":"object","properties":{"tsv":{"type":"string","description":"TSV input.","maxLength":5000000},"delimiter":{"type":"string","description":"Output delimiter. Default: \",\".","minLength":1,"maxLength":1}},"required":["tsv"],"additionalProperties":false},"examples":[]},{"id":"ulid-generate","name":"ULID Generator","description":"Generate one or more ULIDs — 26-character Crockford base32 identifiers that are lexicographically sortable by creation time. Compatible with standard ULID libraries.","category":"developer","parameters":{"type":"object","properties":{"count":{"type":"integer","description":"How many ULIDs to generate. Default: 1.","minimum":1,"maximum":100},"timestamp":{"type":"integer","description":"Override the timestamp (ms since epoch). Defaults to now."}},"additionalProperties":false},"examples":[]},{"id":"url-validate","name":"URL Validator","description":"Validate that a string is a well-formed URL and (optionally) require HTTPS. Returns the parsed components when valid.","category":"developer","parameters":{"type":"object","properties":{"url":{"type":"string","description":"The URL to validate.","maxLength":8192},"require_https":{"type":"boolean","description":"If true, only accept https:// URLs. Default: false."}},"required":["url"],"additionalProperties":false},"examples":[]},{"id":"url-parse","name":"URL Parse","description":"Parse a URL into its components: protocol, host, port, pathname, query (as an object, repeat keys become arrays), hash, origin, and userinfo.","category":"developer","parameters":{"type":"object","properties":{"url":{"type":"string","description":"The URL to parse.","maxLength":8192}},"required":["url"],"additionalProperties":false},"examples":[]},{"id":"url-decode","name":"URL Decode (text-only)","description":"Decode a percent-encoded (URL-encoded) string back to plain text.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The URL-encoded text to decode.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"url-encode","name":"URL Encode (text-only)","description":"Percent-encode a string for safe inclusion in URLs.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The raw text to URL-encode.","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"uuid-generate","name":"UUID Generator","description":"Generate one or more UUIDs: random v4 (default), time-ordered v7 (RFC 9562), or the nil UUID.","category":"generators","parameters":{"type":"object","properties":{"count":{"type":"integer","description":"How many UUIDs to generate (1-100). Defaults to 1.","minimum":1,"maximum":100,"default":1},"version":{"type":"string","description":"UUID version: v4 (random), v7 (Unix millisecond timestamp + random, sortable), or nil (all zeros). Defaults to v4.","enum":["v4","v7","nil"],"default":"v4"},"uppercase":{"type":"boolean","description":"Return the UUIDs in uppercase. Defaults to false.","default":false}},"additionalProperties":false},"examples":[]},{"id":"hash-generate","name":"Hash Generator (algorithm-only)","description":"Hash text with MD5, SHA-1, SHA-256, or SHA-512. Returns hex digest.","category":"crypto","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to hash.","maxLength":5000000},"algorithm":{"type":"string","description":"Hash algorithm. Defaults to SHA-256.","enum":["MD5","SHA-1","SHA-256","SHA-512"],"default":"SHA-256"}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"hmac-generate","name":"HMAC Generator (algorithm-only)","description":"Compute an HMAC of a message with a secret key. Returns hex digest.","category":"crypto","parameters":{"type":"object","properties":{"message":{"type":"string","description":"The message to authenticate.","maxLength":5000000},"secret":{"type":"string","description":"The secret key.","maxLength":1000},"algorithm":{"type":"string","description":"HMAC algorithm. Defaults to SHA-256.","enum":["SHA-256","SHA-512"],"default":"SHA-256"}},"required":["message","secret"],"additionalProperties":false},"examples":[]},{"id":"lorem-ipsum-generate","name":"Lorem Ipsum Generator","description":"Generate Lorem Ipsum placeholder text: words, sentences, or paragraphs.","category":"generators","parameters":{"type":"object","properties":{"type":{"type":"string","description":"Unit to produce. Defaults to \"paragraphs\".","enum":["words","sentences","paragraphs"],"default":"paragraphs"},"count":{"type":"integer","description":"How many units (1-100). Defaults to 3.","minimum":1,"maximum":100,"default":3},"start_with_lorem":{"type":"boolean","description":"Begin with the classic \"Lorem ipsum dolor sit amet\". Defaults to true; false starts further into the text.","default":true}},"additionalProperties":false},"examples":[]},{"id":"unix-timestamp-convert","name":"Unix Timestamp (mode-based)","description":"Convert between Unix timestamps and ISO dates. Modes: \"now\", \"to_date\", \"to_timestamp\".","category":"datetime","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"Conversion mode.","enum":["now","to_date","to_timestamp"]},"value":{"type":"string","description":"Input (timestamp integer for to_date, ISO/date string for to_timestamp).","maxLength":100},"timezone":{"type":"string","description":"IANA timezone for to_date (e.g. \"Europe/Istanbul\"). Defaults to UTC.","default":"UTC"}},"required":["mode"],"additionalProperties":false},"examples":[]},{"id":"date-difference","name":"Date Difference (start/end)","description":"Compute the difference between two dates in years/months/weeks/days/hours/minutes/seconds.","category":"datetime","parameters":{"type":"object","properties":{"start":{"type":"string","description":"Start date (ISO 8601 or YYYY-MM-DD).","maxLength":50},"end":{"type":"string","description":"End date. Defaults to today.","maxLength":50}},"required":["start"],"additionalProperties":false},"examples":[]},{"id":"percentage-calculate","name":"Percentage (mode-based)","description":"Percentage math. Modes: percent_of (a% of b), what_percent (a is what % of b), percent_change (from a to b).","category":"calculators","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"Calculation mode.","enum":["percent_of","what_percent","percent_change"]},"a":{"type":"number","description":"First value."},"b":{"type":"number","description":"Second value."}},"required":["mode","a","b"],"additionalProperties":false},"examples":[]},{"id":"number-base-convert","name":"Number Base (from/to)","description":"Convert an integer between bases 2, 8, 10, and 16.","category":"conversion","parameters":{"type":"object","properties":{"value":{"type":"string","description":"Number string (no prefix).","maxLength":200},"from":{"type":"integer","description":"Source base.","enum":[2,8,10,16]},"to":{"type":"integer","description":"Target base.","enum":[2,8,10,16]}},"required":["value","from","to"],"additionalProperties":false},"examples":[]},{"id":"ai-model-picker","name":"AI Model Picker","description":"Return the best-matching AI coding models (top 3 by default) for a project, scored on speed, accuracy, cost and context window from four answers: what you build, primary language, top priority and project complexity. Model data comes from the live FindUtils model catalog.","category":"developer","parameters":{"type":"object","properties":{"task_type":{"type":"string","description":"What are you building?","enum":["Frontend","Backend","Mobile","DevOps","Data","API"]},"language":{"type":"string","description":"Primary programming language.","enum":["TypeScript","Python","Rust","Go","Java","SQL","C++","Other"]},"priority":{"type":"string","description":"What matters most?","enum":["Accuracy","Speed","Cost","Context Length"]},"complexity":{"type":"string","description":"Project complexity.","enum":["Simple scripts","Medium apps","Complex systems","Legacy refactoring"]},"limit":{"type":"integer","description":"How many models to return (1-10).","minimum":1,"maximum":10,"default":3}},"required":["task_type","language","priority","complexity"],"additionalProperties":false},"examples":[]},{"id":"amortization-calculator","name":"Amortization Calculator","description":"Return a full loan amortization schedule (one row per month with payment, principal, interest, extra payment, balance) plus totals, interest saved, months saved, and the payoff month. Rate is a yearly percentage; payments are monthly.","category":"finance","parameters":{"type":"object","properties":{"loan_amount":{"type":"number","description":"Loan principal.","minimum":0},"interest_rate":{"type":"number","description":"Yearly interest rate in percent (6.5 = 6.5%). Must be > 0.","minimum":0,"maximum":100},"loan_term_years":{"type":"integer","description":"Loan term in years (1-40).","minimum":1,"maximum":40},"extra_payment":{"type":"number","description":"Optional extra principal paid every month. Default: 0.","minimum":0},"start_month":{"type":"string","description":"First payment month as YYYY-MM. Default: the current UTC month."}},"required":["loan_amount","interest_rate","loan_term_years"],"additionalProperties":false},"examples":[]},{"id":"api-docs-generator","name":"API Docs Generator","description":"Return API documentation generated from a list of endpoints, as Markdown (with table of contents, request/response examples) or as an OpenAPI 3.0.3 JSON specification.","category":"data","parameters":{"type":"object","properties":{"title":{"type":"string","description":"API title.","maxLength":200,"default":"My API"},"version":{"type":"string","description":"API version string.","maxLength":50,"default":"1.0.0"},"base_url":{"type":"string","description":"Base URL of the API.","maxLength":500,"default":"https://api.example.com"},"description":{"type":"string","description":"Short description of the API.","maxLength":5000,"default":""},"endpoints":{"type":"array","description":"Endpoints: objects with method (GET|POST|PUT|PATCH|DELETE), path, and optional summary, description, request_body (JSON text), response_example (JSON text), response_code (default \"200\").","items":{"type":"object","description":"One endpoint definition."}},"format":{"type":"string","description":"Output format.","enum":["markdown","openapi"],"default":"markdown"}},"required":["endpoints"],"additionalProperties":false},"examples":[]},{"id":"ass-to-srt","name":"ASS TO SRT","description":"Flatten an Advanced SubStation Alpha (.ass) or SubStation Alpha (.ssa) subtitle script to plain SubRip (.srt). Reads the Dialogue lines of the [Events] section using the Format line for column order, converts H:MM:SS.cc centisecond timestamps to HH:MM:SS,mmm, strips every {\\...} override block, turns \\N into a line break, sorts cues by start time and renumbers them from 1. Styles, fonts, colours, positioning and drawing commands are discarded on purpose, because SubRip cannot carry them. Comment lines are ignored.","category":"calculators","parameters":{"type":"object","properties":{"input":{"type":"string","description":"The .ass or .ssa file contents.","maxLength":10000000},"keep_empty":{"type":"boolean","description":"Keep cues whose text is empty once override tags are removed. Default: false, which drops them.","default":false}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"attendance-sheet-generator","name":"Attendance Sheet Generator","description":"Generate a blank attendance sheet for a list of students over consecutive days and return the date columns, a CSV, a Markdown table, and a plain-text grid. Dates are consecutive calendar days from start_date (UTC), labelled like \"Mon, Mar 2\".","category":"education","parameters":{"type":"object","properties":{"students":{"type":"array","description":"Student names, one per row. Empty names are skipped.","items":{"type":"string","description":"A student name."}},"start_date":{"type":"string","description":"First date of the sheet (YYYY-MM-DD).","maxLength":40},"days":{"type":"integer","description":"Number of consecutive days (columns). Default 5.","minimum":1,"maximum":62,"default":5},"class_name":{"type":"string","description":"Class or group name printed as the sheet title. Default \"Class\".","maxLength":200}},"required":["students","start_date"],"additionalProperties":false},"examples":[]},{"id":"auto-loan-calculator","name":"Auto Loan Calculator","description":"Return the monthly car payment, total interest, financed amount, and a month-by-month amortization schedule for an auto loan. Accounts for down payment, trade-in value, and sales tax (optionally financed). Rate is a yearly percentage.","category":"finance","parameters":{"type":"object","properties":{"vehicle_price":{"type":"number","description":"Vehicle purchase price before tax.","minimum":0},"interest_rate":{"type":"number","description":"Yearly interest rate in percent (6.5 = 6.5%). Must be > 0.","minimum":0,"maximum":100},"loan_term_months":{"type":"integer","description":"Loan term in months (for example 36, 48, 60, 72, 84).","minimum":1,"maximum":120},"down_payment":{"type":"number","description":"Cash down payment. Default: 0.","minimum":0},"trade_in_value":{"type":"number","description":"Trade-in value credited against the price. Default: 0.","minimum":0},"sales_tax":{"type":"number","description":"Sales tax rate in percent applied to the vehicle price. Default: 0.","minimum":0,"maximum":100},"include_tax_in_loan":{"type":"boolean","description":"Finance the sales tax in the loan. Default: true."}},"required":["vehicle_price","interest_rate","loan_term_months"],"additionalProperties":false},"examples":[]},{"id":"barcode-generator","name":"Barcode Generator","description":"Generate a 1D barcode as an SVG string from text. CODE128 takes any printable ASCII, CODE39 takes A-Z, 0-9, space and -.$/+%. EAN13, EAN8 and UPC (UPC-A) take digits: give 12, 7 or 11 digits and the GS1 check digit is appended, or the full code and it is verified. Returns the SVG, the bar/space bit pattern, the printed text, and the image size.","category":"generators","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Text to encode (1-80 characters).","minLength":1,"maxLength":80},"type":{"type":"string","description":"Barcode type. Default \"CODE128\".","enum":["CODE128","CODE39","EAN13","EAN8","UPC"],"default":"CODE128"},"bar_width":{"type":"integer","description":"Width of one module in pixels (1-10). Default 2.","minimum":1,"maximum":10,"default":2},"height":{"type":"integer","description":"Bar height in pixels (20-500). Default 100.","minimum":20,"maximum":500,"default":100},"show_text":{"type":"boolean","description":"Print the text under the bars. Default true.","default":true}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"body-fat-calculator","name":"Body FAT Calculator","description":"Estimate body fat percentage, fat mass, lean mass, BMI, and a body-composition category. Uses the U.S. Navy circumference method (waist, neck, hip) or a BMI-based estimate (Deurenberg formula). Metric (kg/cm) or imperial (lbs/in) inputs.","category":"calculators","parameters":{"type":"object","properties":{"gender":{"type":"string","description":"Biological sex used by the formulas.","enum":["male","female"]},"weight":{"type":"number","description":"Body weight in kg (metric) or lbs (imperial)."},"height":{"type":"number","description":"Height in cm (metric) or inches (imperial)."},"unit_system":{"type":"string","description":"Unit system for all measurements.","enum":["metric","imperial"],"default":"metric"},"method":{"type":"string","description":"\"navy\" = U.S. Navy circumference method (needs waist, neck, and hip for female). \"bmi\" = BMI-based estimate.","enum":["navy","bmi"],"default":"navy"},"waist":{"type":"number","description":"Waist circumference at the navel (cm or in). Required for the navy method."},"neck":{"type":"number","description":"Neck circumference below the larynx (cm or in). Required for the navy method."},"hip":{"type":"number","description":"Hip circumference at the widest point (cm or in). Required for the navy method when gender is female."},"age":{"type":"integer","description":"Age in years. Only used by the bmi method. Default 30.","minimum":1,"maximum":120,"default":30}},"required":["gender","weight","height"],"additionalProperties":false},"examples":[]},{"id":"bookmarks-html-to-csv","name":"Bookmarks Html TO CSV","description":"Convert a browser bookmarks.html export from Chrome, Firefox, Edge, Safari or any other browser that writes the Netscape bookmark format into CSV, one row per link. Each row carries the folder path flattened with \" / \", the title, the URL, and the ADD_DATE and LAST_MODIFIED stamps as ISO-8601 when the export has them. Favicon data stored in the ICON attribute is never written to the CSV and no favicon is ever fetched. Nothing is checked against the network, so a dead link is reported exactly as the export stored it. The browser page accepts a 10 MB file; the API and MCP surfaces cap a request at 1 MB, so a very large export belongs on the page.","category":"data","parameters":{"type":"object","properties":{"input":{"type":"string","description":"The bookmarks.html file contents.","maxLength":10000000},"delimiter":{"type":"string","description":"Output field separator. Default: a comma.","maxLength":4,"default":","},"include_empty_folders":{"type":"boolean","description":"Write a row for a folder that holds no links, with an empty title and URL. Default false.","default":false},"sort_by_folder":{"type":"boolean","description":"Order rows by folder path then title. Default false, which keeps the order the export lists them in.","default":false}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"bot-crawl-checker","name":"BOT Crawl Checker","description":"Return which of 24 well-known crawlers (Googlebot, BingBot, GPTBot, ClaudeBot, PerplexityBot, AhrefsBot, Twitterbot and more) are allowed or blocked for a URL by the site's robots.txt, with the matching rule and user-agent group per bot.","category":"seo","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL to check, e.g. \"https://example.com/blog/post\".","maxLength":2048}},"required":["url"],"additionalProperties":false},"examples":[]},{"id":"box-shadow-generator","name":"BOX Shadow Generator","description":"Generate a CSS box-shadow declaration from offset, blur, spread, colour, opacity, and inset settings, or from a named preset (subtle, soft, medium, large, xl, inner, glow, hard). Returns the full \"box-shadow: ...;\" rule, the bare value, the rgba colour, and the resolved settings.","category":"generators","parameters":{"type":"object","properties":{"preset":{"type":"string","description":"Start from a preset. Any other argument overrides the preset value.","enum":["subtle","soft","medium","large","xl","inner","glow","hard"]},"horizontal":{"type":"number","description":"Horizontal offset in px (-200 to 200). Default 0.","minimum":-200,"maximum":200,"default":0},"vertical":{"type":"number","description":"Vertical offset in px (-200 to 200). Default 10.","minimum":-200,"maximum":200,"default":10},"blur":{"type":"number","description":"Blur radius in px (0 to 300). Default 15.","minimum":0,"maximum":300,"default":15},"spread":{"type":"number","description":"Spread radius in px (-200 to 200). Default -3.","minimum":-200,"maximum":200,"default":-3},"color":{"type":"string","description":"Shadow colour as a hex string (#rrggbb or #rgb). Default #000000.","maxLength":7,"default":"#000000"},"opacity":{"type":"number","description":"Shadow opacity in percent (0 to 100). Default 15.","minimum":0,"maximum":100,"default":15},"inset":{"type":"boolean","description":"Inner shadow when true. Default false.","default":false}},"additionalProperties":false},"examples":[]},{"id":"break-even-calculator","name":"Break Even Calculator","description":"Return the break-even point of a product or business: contribution margin, contribution margin ratio, break-even units and revenue, plus the units and revenue needed to reach a target profit. Units are rounded up to whole units.","category":"finance","parameters":{"type":"object","properties":{"fixed_costs":{"type":"number","description":"Total fixed costs for the period.","minimum":0},"variable_cost_per_unit":{"type":"number","description":"Variable cost to produce one unit.","minimum":0},"price_per_unit":{"type":"number","description":"Selling price of one unit. Must be greater than the variable cost.","minimum":0},"target_profit":{"type":"number","description":"Desired profit for the period. Default: 0.","minimum":0}},"required":["fixed_costs","variable_cost_per_unit","price_per_unit"],"additionalProperties":false},"examples":[]},{"id":"business-loan-calculator","name":"Business Loan Calculator","description":"Return the monthly payment, total interest, origination fee, effective yearly rate (interest plus fees), a yearly summary, and a full monthly amortization schedule for a business loan. Rate is a yearly percentage; the term is in months.","category":"finance","parameters":{"type":"object","properties":{"loan_amount":{"type":"number","description":"Loan principal.","minimum":0},"interest_rate":{"type":"number","description":"Yearly interest rate in percent (8 = 8%). Must be > 0.","minimum":0,"maximum":100},"loan_term_months":{"type":"integer","description":"Loan term in months (1-480).","minimum":1,"maximum":480},"origination_fee_percent":{"type":"number","description":"Origination fee as a percent of the loan amount. Default: 0.","minimum":0,"maximum":100},"loan_type":{"type":"string","description":"Label only (standard, sba, equipment, line_of_credit). Does not change the math. Default: standard.","enum":["standard","sba","equipment","line_of_credit"]}},"required":["loan_amount","interest_rate","loan_term_months"],"additionalProperties":false},"examples":[]},{"id":"caption-generator","name":"Caption Generator","description":"Generate a social-media caption from a topic using built-in templates (no AI): picks a template for the content type and tone, fills in the topic, and optionally appends a call to action and up to 8 hashtags. Returns the caption, its length, and the platform limit.","category":"generators","parameters":{"type":"object","properties":{"topic":{"type":"string","description":"What the post is about. Default \"this moment\".","maxLength":500},"content_type":{"type":"string","description":"Content category. Default \"lifestyle\".","enum":["lifestyle","travel","food","fitness","fashion","business","motivation","funny"],"default":"lifestyle"},"tone":{"type":"string","description":"Voice of the caption. Default \"casual\". Falls back to casual, then lifestyle/casual, when no template exists.","enum":["casual","professional","witty","inspirational"],"default":"casual"},"platform":{"type":"string","description":"Target platform, sets the character limit. Default \"instagram\".","enum":["instagram","tiktok","facebook","twitter"],"default":"instagram"},"keywords":{"type":"string","description":"Comma-separated keywords turned into extra hashtags.","maxLength":500},"include_hashtags":{"type":"boolean","description":"Append hashtags. Default true.","default":true},"include_emojis":{"type":"boolean","description":"Keep emojis in the caption. Default true.","default":true},"include_cta":{"type":"boolean","description":"Append a call to action. Default true.","default":true}},"additionalProperties":false},"examples":[]},{"id":"carbon-footprint-calculator","name":"Carbon Footprint Calculator","description":"Estimate an annual personal carbon footprint in tonnes of CO2 from home energy, transportation, and lifestyle, with a per-category breakdown and a comparison to the US average (16 t), the world average (4.7 t), and the Paris target (2 t). Every input is optional and defaults to a typical US household value.","category":"calculators","parameters":{"type":"object","properties":{"electricity_usage":{"type":"number","description":"Monthly electricity use. kWh when electricity_unit is \"kwh\", or dollars when \"bill\" (1 dollar = 8 kWh). Default 900.","minimum":0,"default":900},"electricity_unit":{"type":"string","description":"Unit of electricity_usage.","enum":["kwh","bill"],"default":"kwh"},"gas_usage":{"type":"number","description":"Monthly natural gas use. Therms when gas_unit is \"therms\", or dollars when \"bill\" (1 dollar = 0.8 therms). Default 50.","minimum":0,"default":50},"gas_unit":{"type":"string","description":"Unit of gas_usage.","enum":["therms","bill"],"default":"therms"},"renewable_energy":{"type":"number","description":"Share of electricity from renewable sources, 0-100 percent. Default 0.","minimum":0,"maximum":100,"default":0},"car_miles":{"type":"number","description":"Miles driven per year. Default 12000.","minimum":0,"default":12000},"car_efficiency":{"type":"number","description":"Fuel economy in miles per gallon (ignored for electric). Default 25.","minimum":0,"default":25},"car_type":{"type":"string","description":"Vehicle fuel type.","enum":["gasoline","diesel","hybrid","electric"],"default":"gasoline"},"public_transport_miles":{"type":"number","description":"Public transport miles per year. Default 500.","minimum":0,"default":500},"flights_short":{"type":"integer","description":"Short flights (< 3 h) per year. Default 2.","minimum":0,"default":2},"flights_medium":{"type":"integer","description":"Medium flights (3-6 h) per year. Default 1.","minimum":0,"default":1},"flights_long":{"type":"integer","description":"Long flights (> 6 h) per year. Default 0.","minimum":0,"default":0},"diet_type":{"type":"string","description":"Diet profile.","enum":["meat_heavy","meat_medium","meat_low","vegetarian","vegan"],"default":"meat_medium"},"food_waste":{"type":"string","description":"Food waste level.","enum":["high","medium","low"],"default":"medium"},"shopping_habits":{"type":"string","description":"Shopping habits.","enum":["frequent","moderate","minimal"],"default":"moderate"},"recycling":{"type":"string","description":"How much household waste is recycled.","enum":["none","some","most","all"],"default":"some"}},"additionalProperties":false},"examples":[]},{"id":"career-experience-calculator","name":"Career Experience Calculator","description":"Calculate total professional experience across several jobs: total days, years/months/days, weeks, working days (5/7), working hours (8 per working day), per-job durations, and career milestones (1 to 25 years). Jobs with an invalid or reversed date range are skipped and counted.","category":"datetime","parameters":{"type":"object","properties":{"experiences":{"type":"array","description":"List of jobs. Each item: { company?: string, start_date: \"YYYY-MM-DD\", end_date?: \"YYYY-MM-DD\", is_current?: boolean }. A current job ends at reference_date.","items":{"type":"object","description":"One job: company (optional), start_date, end_date (optional), is_current (optional)."}},"reference_date":{"type":"string","description":"End date used for current jobs (ISO 8601). Default: now (UTC).","maxLength":50}},"required":["experiences"],"additionalProperties":false},"examples":[]},{"id":"citation-generator","name":"Citation Generator","description":"Generate a reference-list citation in APA 7, MLA 9, Chicago, or Harvard style for a book, website, journal, or article. Returns the citation with *italic* markers, a plain-text version, and an HTML version with <em> tags.","category":"text","parameters":{"type":"object","properties":{"style":{"type":"string","description":"Citation style.","enum":["apa","mla","chicago","harvard"]},"source_type":{"type":"string","description":"Kind of source.","enum":["book","website","journal","article"]},"title":{"type":"string","description":"Title of the work.","maxLength":2000},"authors":{"type":"array","description":"Authors in order, each { first_name, last_name }. Authors without a last name are ignored.","items":{"type":"object","description":"One author: { first_name, last_name }."}},"year":{"type":"string","description":"Publication year. Default: current year.","maxLength":16},"publisher":{"type":"string","description":"Publisher (book).","maxLength":500},"publisher_location":{"type":"string","description":"Publisher city (book, Chicago/Harvard).","maxLength":500},"edition":{"type":"string","description":"Edition number, e.g. \"2nd\" (book).","maxLength":50},"url":{"type":"string","description":"URL (website, article).","maxLength":2000},"access_date":{"type":"string","description":"Access date as YYYY-MM-DD (website). Default: today (UTC).","maxLength":32},"website_name":{"type":"string","description":"Website or organisation name (website).","maxLength":500},"journal_name":{"type":"string","description":"Journal or periodical name (journal, article).","maxLength":500},"volume":{"type":"string","description":"Volume (journal).","maxLength":50},"issue":{"type":"string","description":"Issue number (journal).","maxLength":50},"pages":{"type":"string","description":"Page range, e.g. \"12-34\".","maxLength":50},"doi":{"type":"string","description":"DOI without the https://doi.org/ prefix (journal).","maxLength":200}},"required":["style","source_type","title"],"additionalProperties":false},"examples":[]},{"id":"client-status-report-generator","name":"Client Status Report Generator","description":"Generate a client-facing project status report in Markdown and return it with its headline counts. Sections: header (client, period, report type, generated date), timeline status, budget spent vs total, an executive summary, completed work, in-progress items with percent complete, active blockers with severity, upcoming goals, and notes. Empty sections are omitted, exactly as the page's export does.","category":"productivity","parameters":{"type":"object","properties":{"project_name":{"type":"string","description":"Project name for the report title.","maxLength":200},"client_name":{"type":"string","description":"Client name.","maxLength":200},"period_start":{"type":"string","description":"Reporting period start, YYYY-MM-DD. Default: today (UTC).","maxLength":10},"period_end":{"type":"string","description":"Reporting period end, YYYY-MM-DD. Default: today (UTC).","maxLength":10},"report_type":{"type":"string","description":"Report cadence. Default \"weekly\".","enum":["weekly","monthly","milestone","custom"],"default":"weekly"},"completed_items":{"type":"array","description":"Completed work: { title, description }.","items":{"type":"object","description":"One completed item."}},"in_progress_items":{"type":"array","description":"Work in progress: { title, description, percent_complete (0-100) }.","items":{"type":"object","description":"One in-progress item."}},"blockers":{"type":"array","description":"Blockers and risks: { title, description, severity (low|medium|high), status (open|mitigating|resolved) }. Resolved blockers are excluded from the report.","items":{"type":"object","description":"One blocker."}},"goals":{"type":"array","description":"Goals for the next period, one string each.","items":{"type":"string","description":"One goal."}},"budget_spent":{"type":"number","description":"Budget spent so far. Shown only when show_budget is true and budget_total > 0.","minimum":0},"budget_total":{"type":"number","description":"Total budget.","minimum":0},"budget_currency":{"type":"string","description":"Currency code or symbol printed before the amounts. Default \"USD\".","maxLength":10},"show_budget":{"type":"boolean","description":"Include the budget line. Default false.","default":false},"timeline_status":{"type":"string","description":"Timeline health. Default \"on-track\".","enum":["on-track","at-risk","delayed"],"default":"on-track"},"show_timeline":{"type":"boolean","description":"Include the timeline status line. Default true.","default":true},"notes":{"type":"string","description":"Free-text notes appended under \"Additional Notes\".","maxLength":10000},"company_name":{"type":"string","description":"Your company name, printed under the title.","maxLength":200},"generated_date":{"type":"string","description":"Date printed as \"Generated\", YYYY-MM-DD. Default: today (UTC).","maxLength":10}},"required":["project_name"],"additionalProperties":false},"examples":[]},{"id":"code-diff-checker","name":"Code Diff Checker","description":"Returns a line-by-line diff of two code snippets: each line marked added, removed or unchanged with its original and modified line numbers, plus addition/deletion counts and a unified patch text. Can ignore whitespace and letter case when comparing.","category":"text","parameters":{"type":"object","properties":{"original":{"type":"string","description":"The original code.","maxLength":500000},"modified":{"type":"string","description":"The modified code.","maxLength":500000},"ignore_whitespace":{"type":"boolean","description":"Collapse runs of whitespace and trim lines before comparing. Default: false.","default":false},"ignore_case":{"type":"boolean","description":"Compare lines case-insensitively. Default: false.","default":false}},"required":["original","modified"],"additionalProperties":false},"examples":[]},{"id":"code-highlight-html","name":"Code Highlight Html","description":"Returns syntax-highlighted HTML for a code snippet: HTML-escaped text wrapped in <span style=\"color: ...\"> elements using one of six colour themes (dracula, monokai, github, nord, one-dark, solarized). This is the pure highlighting step of the Code Screenshot Generator page; it returns markup plus the theme background and foreground colours, not an image.","category":"text","parameters":{"type":"object","properties":{"code":{"type":"string","description":"The source code to highlight.","maxLength":200000},"language":{"type":"string","description":"Language used for keyword and comment rules. Default: \"javascript\".","enum":["javascript","typescript","python","html","css","json","markdown","bash","sql","php","java","go","rust","plaintext"],"default":"javascript"},"theme":{"type":"string","description":"Colour theme. Default: \"dracula\".","enum":["dracula","monokai","github","nord","one-dark","solarized"],"default":"dracula"}},"required":["code"],"additionalProperties":false},"examples":[]},{"id":"color-palette-generator","name":"Color Palette Generator","description":"Generate a harmonious colour palette from a base hex colour: complementary, analogous, triadic, tetradic, split-complementary, or monochromatic. Returns the hex list, per-colour rgb/hsl swatches with a readable text colour, and a CSS custom-properties block.","category":"generators","parameters":{"type":"object","properties":{"base_color":{"type":"string","description":"Base colour as a hex string (#rrggbb or #rgb), e.g. #3b82f6.","minLength":3,"maxLength":7},"palette_type":{"type":"string","description":"Colour harmony to generate.","enum":["complementary","analogous","triadic","tetradic","split-complementary","monochromatic"],"default":"complementary"}},"required":["base_color"],"additionalProperties":false},"examples":[]},{"id":"cookie-analyzer","name":"Cookie Analyzer","description":"Analyze Set-Cookie header strings and return a per-cookie list of security issues, an overall 0-100 score, and recommendations. Checks Secure, HttpOnly, SameSite, expiry, path scope, sensitive names, and the __Secure-/__Host- prefix rules. One cookie per line; the \"Set-Cookie:\" prefix is optional.","category":"network","parameters":{"type":"object","properties":{"cookies":{"type":"string","description":"One or more cookie strings, one per line (e.g. \"sessionid=abc; Secure; HttpOnly; SameSite=Lax\"). A leading \"Set-Cookie:\" is stripped.","maxLength":100000}},"required":["cookies"],"additionalProperties":false},"examples":[]},{"id":"country-lookup","name":"Country Lookup","description":"Return country facts — capital, currency (name, code, symbol), phone code, timezone, region, subregion, flag emoji, and languages — for countries that match a search query, an ISO 3166-1 alpha-2 code, or a region. Call with no filters to list every country.","category":"datetime","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Country name, capital, currency name or code (e.g. USD), phone code (e.g. +90), timezone, or language to search for.","maxLength":100},"code":{"type":"string","description":"Exact ISO 3166-1 alpha-2 code, e.g. \"TR\", \"US\". Case-insensitive.","minLength":2,"maxLength":2},"region":{"type":"string","description":"Restrict to one region.","enum":["Africa","Americas","Asia","Europe","Oceania"]},"limit":{"type":"integer","description":"Maximum number of countries to return (1-300). Default 25.","minimum":1,"maximum":300,"default":25}},"additionalProperties":false},"examples":[]},{"id":"course-quiz-generator","name":"Course Quiz Generator","description":"Build a printable course quiz from a list of questions (multiple choice, true/false, short answer, fill in the blank) and return the numbered questions with labels, the total points, an answer key, a plain-text version, and a standalone HTML document. LaTeX between $…$ is kept as-is (not rendered).","category":"education","parameters":{"type":"object","properties":{"questions":{"type":"array","description":"Questions: { text, type?, options?, correct_answer?, points? }. type is one of multiple_choice (default), true_false, short_answer, fill_blank. points defaults to 1.","items":{"type":"object","description":"{ text: string, type?: string, options?: string[], correct_answer?: string, points?: number }"}},"title":{"type":"string","description":"Quiz title. Default \"Quiz\".","maxLength":300},"subject":{"type":"string","description":"Subject line shown in the header.","maxLength":200},"teacher":{"type":"string","description":"Teacher name shown in the header.","maxLength":200},"date":{"type":"string","description":"Date shown in the header (any text, e.g. 2026-05-01).","maxLength":40},"instructions":{"type":"string","description":"Instructions paragraph shown before the questions.","maxLength":2000},"include_answer_key":{"type":"boolean","description":"Append an answer key and mark correct options. Default true.","default":true}},"required":["questions"],"additionalProperties":false},"examples":[]},{"id":"credit-card-payoff-calculator","name":"Credit Card Payoff Calculator","description":"Return how long a credit card balance takes to pay off at a fixed monthly payment (mode \"payment\"), or the payment needed to clear it in a target number of months (mode \"months\"), with total interest, total paid, payoff month, and a monthly schedule. APR is a yearly percentage.","category":"finance","parameters":{"type":"object","properties":{"balance":{"type":"number","description":"Current card balance. Must be > 0.","minimum":0},"interest_rate":{"type":"number","description":"Card APR in percent (18.99 = 18.99%).","minimum":0,"maximum":100},"mode":{"type":"string","description":"\"payment\": solve months from a fixed monthly_payment. \"months\": solve the payment from target_months. Default: payment.","enum":["payment","months"]},"monthly_payment":{"type":"number","description":"Fixed monthly payment (mode \"payment\").","minimum":0},"target_months":{"type":"integer","description":"Months to pay off the balance (mode \"months\").","minimum":1,"maximum":1200},"start_month":{"type":"string","description":"Month of the first payment as YYYY-MM. Default: current UTC month."}},"required":["balance","interest_rate"],"additionalProperties":false},"examples":[]},{"id":"cron-to-systemd","name":"Cron TO Systemd","description":"Convert a 5-field cron expression into a systemd timer plus service unit and a Kubernetes CronJob YAML file. Six-field cron (with seconds) is rejected.","category":"datetime","parameters":{"type":"object","properties":{"expression":{"type":"string","description":"5-field cron expression, e.g. \"*/5 * * * *\".","maxLength":200},"unit_name":{"type":"string","description":"systemd unit / CronJob name. Default: converted.","maxLength":80},"command":{"type":"string","description":"ExecStart / container command. Default: /usr/local/bin/your-command.","maxLength":500}},"required":["expression"],"additionalProperties":false},"examples":[]},{"id":"crypto-testnet-faucets","name":"Crypto Testnet Faucets","description":"Returns a curated list of crypto testnet faucets (Ethereum Sepolia, Base, Arbitrum, Optimism, Polygon, Avalanche, BNB Chain, Linea, Solana) with the faucet URL, tokens dispensed, amount, cooldown, auth requirements and USDC contract where known, plus the chain config (chain id, RPC URL, explorer) for each listed network. Filter by network and a search term.","category":"developer","parameters":{"type":"object","properties":{"network":{"type":"string","description":"Network to filter by. Default: \"All\".","enum":["All","Ethereum","Base","Arbitrum","Optimism","Polygon","Avalanche","BNB Chain","Linea","Solana"],"default":"All"},"search":{"type":"string","description":"Case-insensitive search over name, network, tokens, description and tags (every word must match). Optional.","maxLength":200},"featured_only":{"type":"boolean","description":"Only return featured faucets. Default: false.","default":false}},"additionalProperties":false},"examples":[]},{"id":"css-animation-generator","name":"CSS Animation Generator","description":"Return CSS @keyframes animation code (or Tailwind config, Web Animations API / React, or Framer Motion code) from a named preset such as fade-in, bounce, pulse, shake, spin, or from custom keyframes with transform, opacity, filter and color properties.","category":"generators","parameters":{"type":"object","properties":{"preset":{"type":"string","description":"Built-in animation preset. Ignored when keyframes is given.","enum":["fade-in","slide-in-up","slide-in-down","slide-in-left","slide-in-right","zoom-in","flip-in","fade-out","slide-out-up","zoom-out","bounce","pulse","shake","wobble","jello","heartbeat","spin","float","swing","morph","color-shift","glow"]},"keyframes":{"type":"array","description":"Custom keyframes: [{ offset: 0-100, properties: { translateX, translateY, rotate, scale, scaleX, scaleY, skewX, skewY, opacity, blur, brightness, contrast, saturate, hueRotate, borderRadius, backgroundColor, color } }].","items":{"type":"object","description":"One keyframe."}},"name":{"type":"string","description":"Animation / class name (CSS identifier).","maxLength":64},"duration":{"type":"number","description":"Duration in milliseconds.","minimum":0,"maximum":600000},"timing_function":{"type":"string","description":"Easing: a CSS timing function, a cubic-bezier(...) or a preset name such as \"ease-out-back\", \"bounce\", \"spring\".","maxLength":80},"iteration_count":{"type":"string","description":"Number of iterations or \"infinite\".","maxLength":10},"direction":{"type":"string","description":"Animation direction.","enum":["normal","reverse","alternate","alternate-reverse"]},"fill_mode":{"type":"string","description":"Animation fill mode.","enum":["none","forwards","backwards","both"]},"delay":{"type":"number","description":"Start delay in milliseconds.","minimum":0,"maximum":600000},"format":{"type":"string","description":"Output format. \"all\" returns every format.","enum":["css","tailwind","react","framer","all"],"default":"css"}},"additionalProperties":false},"examples":[]},{"id":"css-minifier","name":"CSS Minifier","description":"Minify CSS (strip comments and whitespace) or beautify compressed CSS, and return the output with byte sizes and the percentage saved. Minify removes comments, whitespace around punctuation, and the last semicolon in each block. Beautify puts one declaration per line with the chosen indentation.","category":"developer","parameters":{"type":"object","properties":{"css":{"type":"string","description":"The CSS source to minify or beautify.","maxLength":2000000},"mode":{"type":"string","description":"minify = compress, beautify = expand for readability. Default: minify.","enum":["minify","beautify"],"default":"minify"},"indent":{"type":"integer","description":"Spaces per indentation level in beautify mode (1-8). Default: 2.","minimum":1,"maximum":8,"default":2}},"required":["css"],"additionalProperties":false},"examples":[]},{"id":"csv-to-bookmarks-html","name":"CSV TO Bookmarks Html","description":"Convert a CSV of links into a Netscape bookmarks.html file that Chrome, Firefox, Edge and Safari import. Columns are matched by name: url or href or link, title or name, folder or folder_path or path, and an optional add_date, so a sheet exported from a bookmark manager usually needs no configuration; column_map overrides any of them. A folder path builds nested folders, split on \" / \" when the value uses it and on \"/\" otherwise, so a folder genuinely called \"AI/ML\" survives. Every row needs an address; a row without one is skipped and listed by row number. A bare domain gains https://. Nothing is fetched and no link is checked.","category":"data","parameters":{"type":"object","properties":{"input":{"type":"string","description":"CSV text with a header row.","maxLength":10000000},"delimiter":{"type":"string","description":"Field separator. Default: detected from the header (comma, semicolon, tab or pipe).","maxLength":4},"root_folder":{"type":"string","description":"Folder every link is placed under, so an import does not scatter links across the bookmark bar. Default \"Imported\"; pass an empty string to place them at the top level.","maxLength":200,"default":"Imported"},"column_map":{"type":"object","description":"Header name per field when the automatic match is wrong: url, title, folder, add_date."}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"csv-to-ics","name":"CSV TO ICS","description":"Turn a CSV of events into an iCalendar (.ics) file that Google Calendar, Apple Calendar and Outlook import. Columns are matched by name: Subject or Title, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location and a few aliases, so a Google Calendar or Outlook export maps with no configuration; column_map overrides any of them. Each row needs a title and a start. A row with no time, or All Day Event set, becomes an all-day event. Times are written as stated; an optional IANA time zone is stamped on them, UTC writes Z, and no zone writes floating time. Rows without a title or a readable start are skipped and listed. Recurrence is not inferred from text.","category":"productivity","parameters":{"type":"object","properties":{"input":{"type":"string","description":"CSV text with a header row.","maxLength":10000000},"delimiter":{"type":"string","description":"Field separator. Default: detected from the header (comma, semicolon, tab or pipe).","maxLength":4},"calendar_name":{"type":"string","description":"Written as X-WR-CALNAME so the calendar app shows it. Default: none.","maxLength":200},"timezone":{"type":"string","description":"IANA zone such as Europe/Istanbul, stamped on every timed event as TZID. UTC writes a Z suffix. Default: none, so times float and the importing calendar reads them in its own zone. A Time Zone column overrides it per row.","maxLength":64},"date_format":{"type":"string","description":"How to read a date like 03/04/2026. auto (default): month-first unless a part is above 12. ISO dates are always read as-is.","enum":["auto","ymd","dmy","mdy"],"default":"auto"},"default_duration_minutes":{"type":"integer","description":"Length of a timed event that has no end. Default 60.","minimum":1,"maximum":10080,"default":60},"column_map":{"type":"object","description":"Header name per field when the automatic match is wrong: summary, start, start_time, end, end_time, all_day, description, location, private, uid, url, categories, timezone."}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"csv-to-sql","name":"CSV TO SQL","description":"Convert CSV text into SQL INSERT statements, optionally preceded by a CREATE TABLE. The first row is the header and becomes the column list. Column types are inferred from the first 50 data rows as integer, numeric, boolean, or text, and identifiers are quoted for the chosen dialect (Postgres, MySQL, or SQLite). Empty cells become NULL by default. Nothing is executed against a database.","category":"data","parameters":{"type":"object","properties":{"csv":{"type":"string","description":"CSV text with a header row.","maxLength":10000000},"table":{"type":"string","description":"Target table name. Default: \"my_table\".","maxLength":128,"default":"my_table"},"dialect":{"type":"string","description":"Identifier quoting and type names. Default: postgres.","enum":["postgres","mysql","sqlite"],"default":"postgres"},"create_table":{"type":"boolean","description":"Emit a CREATE TABLE before the inserts. Default: true.","default":true},"null_empty":{"type":"boolean","description":"Write an empty cell as NULL rather than an empty string. Default: true.","default":true},"batch":{"type":"boolean","description":"Emit one multi-row INSERT instead of one statement per row. Default: false.","default":false}},"required":["csv"],"additionalProperties":false},"examples":[]},{"id":"curl-to-code","name":"Curl TO Code","description":"Returns source code that performs the same HTTP request as a cURL command, in JavaScript (fetch), Python (requests), PHP (cURL), Go (net/http), Ruby (net/http) or Node.js (https). Also returns the parsed request: method, URL, headers, body and basic auth. Parses -X, -H, -d/--data/--data-raw/--data-binary, -F/--form (name=value only; file fields are rejected), -u and the URL.","category":"network","parameters":{"type":"object","properties":{"curl_command":{"type":"string","description":"The cURL command, e.g. \"curl -X POST https://api.example.com/users -H 'Content-Type: application/json' -d '{\"a\":1}'\". Line continuations (backslash-newline) are accepted. Simple -F name=value fields become multipart POST. File fields such as -F file=@photo.png are rejected.","maxLength":100000},"language":{"type":"string","description":"Target language. Default: \"javascript\".","enum":["javascript","python","php","go","ruby","node"],"default":"javascript"}},"required":["curl_command"],"additionalProperties":false},"examples":[]},{"id":"daily-habit-calculator","name":"Daily Habit Calculator","description":"Calculate how a daily habit adds up over a week, a month (30 days), a year (365 days), or a custom date range: total units, total cost, and per-week/month/year amounts. Works for coffee cups, water glasses, steps, pages, cigarettes, or any custom unit.","category":"calculators","parameters":{"type":"object","properties":{"daily_amount":{"type":"number","description":"Amount per day (e.g. 3 cups).","minimum":0},"category":{"type":"string","description":"Habit category. Sets the default unit.","enum":["coffee","tea","water","soda","snacks","cigarettes","steps","pages","custom"],"default":"coffee"},"unit":{"type":"string","description":"Unit label override (e.g. \"cups\"). Defaults to the category unit.","maxLength":40},"cost_per_unit":{"type":"number","description":"Cost of one unit. Omit or 0 when there is no cost.","minimum":0,"default":0},"period":{"type":"string","description":"week = 7 days, month = 30 days, year = 365 days, custom = start_date..end_date inclusive.","enum":["week","month","year","custom"],"default":"month"},"start_date":{"type":"string","description":"Custom period start (YYYY-MM-DD). Required when period is \"custom\".","maxLength":50},"end_date":{"type":"string","description":"Custom period end (YYYY-MM-DD), inclusive. Required when period is \"custom\".","maxLength":50}},"required":["daily_amount"],"additionalProperties":false},"examples":[]},{"id":"data-sanitizer","name":"Data Sanitizer","description":"Sanitize untrusted text and return the cleaned output, a list of changes made, and a risk level. Modes: html (escape HTML special characters), sql (escape quotes/backslashes, strip comments and semicolons), js (strip script tags, javascript: URLs, event handlers, CSS expressions), url (percent-encode), or all (html + sql + js). Defaults to all.","category":"security","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The input text to sanitize.","maxLength":1000000},"mode":{"type":"string","description":"Sanitization mode. Default: all.","enum":["html","sql","js","url","all"],"default":"all"}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"debt-payoff-calculator","name":"Debt Payoff Calculator","description":"Return a debt payoff plan for several debts using the avalanche (highest rate first) or snowball (lowest balance first) strategy: total months, total interest, total paid, and the order and month each debt is cleared. Minimum payments roll into the extra payment as debts close.","category":"finance","parameters":{"type":"object","properties":{"debts":{"type":"array","description":"List of debts. Each item: { name?: string, balance: number, interest_rate: number (APR percent), minimum_payment: number }.","items":{"type":"object","description":"One debt with balance, interest_rate (percent), minimum_payment, optional name."}},"extra_payment":{"type":"number","description":"Extra amount paid every month on top of all minimums. Default: 0.","minimum":0},"strategy":{"type":"string","description":"avalanche (highest interest first) or snowball (lowest balance first). Default: avalanche.","enum":["avalanche","snowball"]}},"required":["debts"],"additionalProperties":false},"examples":[]},{"id":"dev-request-prioritizer","name":"DEV Request Prioritizer","description":"Prioritize development requests with the page's scoring frameworks and return them sorted by priority score, each with a value score and an effort/value quadrant (quick win, big bet, fill-in, money pit), plus a top recommendation and totals. Frameworks: \"default\" (weighted value ÷ √effort over Customer Impact, Revenue Impact, Strategic Value, Urgency, Risk), \"rice\", \"ice\", \"wsjf\", \"moscow\". Score each request 1-10 per dimension, keyed by dimension name; optional confidence weighting and a deadline boost (+20% within 7 days, +50% within 3, +100% overdue, capped by deadline_boost_multiplier).","category":"productivity","parameters":{"type":"object","properties":{"requests":{"type":"array","description":"Requests: { title, scores (object: dimension name → 1-10), effort_days (default 1), confidence (1-100, default 50), deadline (YYYY-MM-DD), status (default \"new\"), tags }.","items":{"type":"object","description":"One dev request."}},"framework":{"type":"string","description":"Scoring framework. Default \"default\".","enum":["default","rice","ice","wsjf","moscow"],"default":"default"},"dimensions":{"type":"array","description":"Custom dimensions: { name, weight (1-10), is_inverse }. Default: the chosen framework's preset dimensions.","items":{"type":"object","description":"One scoring dimension."}},"use_confidence_in_scoring":{"type":"boolean","description":"Multiply scores by confidence/100. Default false.","default":false},"use_deadline_boost":{"type":"boolean","description":"Boost scores of requests with a near deadline. Default true.","default":true},"deadline_boost_days":{"type":"integer","description":"Days before the deadline at which the boost starts. Default 7.","minimum":1,"maximum":365,"default":7},"deadline_boost_multiplier":{"type":"number","description":"Maximum boost percent. Default 50 (= +50%).","minimum":0,"maximum":500,"default":50},"today":{"type":"string","description":"Reference date for the deadline boost, YYYY-MM-DD. Default: today (UTC).","maxLength":10}},"required":["requests"],"additionalProperties":false},"examples":[]},{"id":"dividend-calculator","name":"Dividend Calculator","description":"Return a year-by-year projection of a dividend portfolio: dividends received, DRIP reinvestment, contributions, share count, share price, ending value, plus final yearly and monthly dividend income and yield on cost. All rates are yearly percentages; contributions and reinvested dividends buy shares at the mid-year average price.","category":"finance","parameters":{"type":"object","properties":{"initial_investment":{"type":"number","description":"Starting amount invested.","minimum":0},"share_price":{"type":"number","description":"Current share price. Must be > 0.","minimum":0},"dividend_yield":{"type":"number","description":"Starting dividend yield in percent (4 = 4%).","minimum":0,"maximum":100},"dividend_growth":{"type":"number","description":"Yearly dividend growth in percent. Default: 0.","minimum":-100,"maximum":1000},"share_price_growth":{"type":"number","description":"Yearly share price growth in percent. Default: 0.","minimum":-100,"maximum":1000},"monthly_contribution":{"type":"number","description":"Amount added every month. Default: 0.","minimum":0},"years":{"type":"integer","description":"Projection length in years.","minimum":1,"maximum":100},"reinvest_dividends":{"type":"boolean","description":"Reinvest dividends (DRIP). Default: true."}},"required":["initial_investment","share_price","dividend_yield","years"],"additionalProperties":false},"examples":[]},{"id":"dnpm-configurator","name":"Dnpm Configurator","description":"Returns the five files of a hardened Docker-based npm wrapper (the ./dnpm bash script, .dnpm/Dockerfile, docker-compose.node.yml, .dnpm/seccomp-profile.json and a CLAUDE.md) generated for a project. The sandbox mounts the source read-only, drops all capabilities, runs as a non-root user, disables postinstall scripts, pins the npm registry and builds with zero network access.","category":"security","parameters":{"type":"object","properties":{"project_name":{"type":"string","description":"Project name used for container names (lowercase letters, digits and dashes; other characters become dashes). Default: \"my-project\".","maxLength":100,"default":"my-project"},"framework":{"type":"string","description":"Framework preset: astro, next, vite, remix or generic. Sets the default dev port and writable output dirs. Default: \"astro\".","enum":["astro","next","vite","remix","generic"],"default":"astro"},"node_version":{"type":"string","description":"Node.js major version for the image. Default: \"22\".","enum":["22","20","18"],"default":"22"},"dev_port":{"type":"integer","description":"Dev server port (1024-65535). Default: the framework port (astro 4321, next 3000, vite 5173, remix 3000, generic 3000).","minimum":1024,"maximum":65535},"memory_limit":{"type":"string","description":"Container memory limit in MB. Default: \"4096\".","enum":["2048","4096","8192","16384"],"default":"4096"},"cpu_limit":{"type":"string","description":"Container CPU limit. Default: \"4\".","enum":["1","2","4","8"],"default":"4"},"max_pids":{"type":"integer","description":"Maximum number of processes. Default: 256.","enum":[128,256,512],"default":256},"tmp_size":{"type":"string","description":"Size of the noexec /tmp tmpfs. Default: \"512m\".","enum":["256m","512m","1g"],"default":"512m"},"enable_polling":{"type":"boolean","description":"Set CHOKIDAR_USEPOLLING=true for file watching inside Docker. Default: true.","default":true}},"additionalProperties":false},"examples":[]},{"id":"dns-lookup","name":"DNS Lookup","description":"Return the DNS records of a domain for one record type (A, AAAA, CNAME, MX, TXT, NS or SOA). Resolved through the public Google DNS-over-HTTPS resolver.","category":"network","parameters":{"type":"object","properties":{"domain":{"type":"string","description":"Domain name to query, e.g. \"example.com\". A URL is accepted; only the hostname is used.","maxLength":253},"record_type":{"type":"string","description":"DNS record type to look up.","enum":["A","AAAA","CNAME","MX","TXT","NS","SOA"],"default":"A"}},"required":["domain"],"additionalProperties":false},"examples":[]},{"id":"dns-security-scanner","name":"DNS Security Scanner","description":"Return a DNS security report for a domain: SPF, DMARC, MX and CAA records with issues, a 0-100 score, a letter grade and recommendations. Records are resolved through Cloudflare DNS-over-HTTPS.","category":"network","parameters":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to scan, e.g. \"example.com\". A URL is accepted; only the hostname is used.","maxLength":253}},"required":["domain"],"additionalProperties":false},"examples":[]},{"id":"domain-rating-checker","name":"Domain Rating Checker","description":"Return the Ahrefs Domain Rating (0-100) for up to 25 domains in one call, with a per-domain status. Results carry the required \"Domain Rating by Ahrefs\" attribution.","category":"seo","parameters":{"type":"object","properties":{"domains":{"type":"array","description":"Domains to check (1-25), e.g. [\"ahrefs.com\", \"wikipedia.org\"].","items":{"type":"string","description":"A domain name.","maxLength":253}}},"required":["domains"],"additionalProperties":false},"examples":[]},{"id":"down-payment-calculator","name":"Down Payment Calculator","description":"Return the down payment, closing costs, total cash needed, remaining amount to save, months to save, target month, loan amount, and estimated PMI for a home purchase, plus a comparison table for 5%, 10%, 15%, 20%, and 25% down. PMI is estimated at 1% of the loan per year when the down payment is below 20%.","category":"finance","parameters":{"type":"object","properties":{"home_price":{"type":"number","description":"Purchase price of the home. Must be > 0.","minimum":0},"down_payment_percent":{"type":"number","description":"Down payment as a percent of the price (20 = 20%). Default: 20.","minimum":0,"maximum":100},"current_savings":{"type":"number","description":"Cash already saved. Default: 0.","minimum":0},"monthly_savings":{"type":"number","description":"Amount saved every month. Default: 0.","minimum":0},"closing_cost_percent":{"type":"number","description":"Closing costs as a percent of the price. Default: 3.","minimum":0,"maximum":100},"start_month":{"type":"string","description":"Month the saving starts, as YYYY-MM. Default: the current UTC month."}},"required":["home_price"],"additionalProperties":false},"examples":[]},{"id":"email-header-analyzer","name":"Email Header Analyzer","description":"Return a structured analysis of raw email headers: sender, recipient, subject, date, message id, the Received hop chain with per-hop delays, SPF/DKIM/DMARC results, every public IP seen, and suspicious-routing flags.","category":"security","parameters":{"type":"object","properties":{"headers":{"type":"string","description":"The raw email headers (the \"Show original\" / \"View source\" block), including every Received: line.","minLength":1,"maxLength":200000}},"required":["headers"],"additionalProperties":false},"examples":[]},{"id":"email-security-checker","name":"Email Security Checker","description":"Return an email-security report for the domain of an email address: MX, SPF, DKIM (common selectors), DMARC, MTA-STS, TLS-RPT and BIMI checks with a 0-100 score and recommendations. Records are resolved through Cloudflare DNS-over-HTTPS.","category":"network","parameters":{"type":"object","properties":{"email":{"type":"string","description":"Email address (e.g. \"name@example.com\") or a bare domain (\"example.com\").","maxLength":320}},"required":["email"],"additionalProperties":false},"examples":[]},{"id":"email-signature-generator","name":"Email Signature Generator","description":"Generate an HTML email signature (table-based, inline styles, safe for Gmail/Outlook) from name, title, company, contact details and social links. Returns the HTML in a horizontal, vertical, or compact layout.","category":"generators","parameters":{"type":"object","properties":{"full_name":{"type":"string","description":"Full name. Shows \"Your Name\" when empty.","maxLength":200},"job_title":{"type":"string","description":"Job title.","maxLength":200},"company":{"type":"string","description":"Company name.","maxLength":200},"email":{"type":"string","description":"Email address (rendered as a mailto: link).","maxLength":200},"phone":{"type":"string","description":"Phone number.","maxLength":100},"website":{"type":"string","description":"Website URL.","maxLength":500},"linkedin":{"type":"string","description":"LinkedIn profile URL.","maxLength":500},"twitter":{"type":"string","description":"Twitter/X profile URL.","maxLength":500},"image_url":{"type":"string","description":"Profile photo URL (round avatar).","maxLength":1000},"layout":{"type":"string","description":"Signature layout. Default \"horizontal\".","enum":["horizontal","vertical","compact"],"default":"horizontal"},"primary_color":{"type":"string","description":"Accent colour as #rrggbb. Default \"#2563eb\".","default":"#2563eb"},"font_family":{"type":"string","description":"Font stack. Default \"arial\".","enum":["arial","georgia","verdana","trebuchet"],"default":"arial"}},"additionalProperties":false},"examples":[]},{"id":"env-linter","name":"ENV Linter","description":"Lint a dotenv file for duplicate keys, unquoted spaces, export prefixes, secret-looking values (masked), and drift against an optional .env.example. Returns issues and a masked key table. Does not execute the file.","category":"developer","parameters":{"type":"object","properties":{"env":{"type":"string","description":"Contents of a .env file.","maxLength":64000},"example":{"type":"string","description":"Optional .env.example contents for key drift checks.","maxLength":64000}},"required":["env"],"additionalProperties":false},"examples":[]},{"id":"essay-outline-generator","name":"Essay Outline Generator","description":"Generate a structured essay outline (introduction, body paragraphs, conclusion) for five essay types and three lengths, and return each section with its guidance points plus Markdown and plain-text renderings. The outline is a deterministic template filled with the topic, thesis, and main points.","category":"education","parameters":{"type":"object","properties":{"topic":{"type":"string","description":"The essay topic.","minLength":1,"maxLength":500},"thesis":{"type":"string","description":"Optional thesis statement. When empty, a placeholder prompt is used.","maxLength":1000},"main_points":{"type":"array","description":"Up to 5 main points, one per body paragraph. Missing points become \"Main Point N\".","items":{"type":"string","description":"A main point."}},"essay_type":{"type":"string","description":"Essay type. Default \"argumentative\".","enum":["argumentative","analytical","expository","narrative","compare_contrast"],"default":"argumentative"},"essay_length":{"type":"string","description":"short = 2 body paragraphs, medium = 3, long = 4. Default \"medium\".","enum":["short","medium","long"],"default":"medium"}},"required":["topic"],"additionalProperties":false},"examples":[]},{"id":"faq-schema-generator","name":"FAQ Schema Generator","description":"Generate FAQPage JSON-LD structured data from question-answer pairs, and return the JSON-LD string, a ready <script> tag, the schema object, and validation warnings (empty, duplicate, too short, too long).","category":"seo","parameters":{"type":"object","properties":{"faqs":{"type":"array","description":"Array of { question, answer } objects. Pairs with an empty question or answer are excluded from the schema but still reported in warnings.","items":{"type":"object","description":"One FAQ pair: { question: string, answer: string }."}}},"required":["faqs"],"additionalProperties":false},"examples":[]},{"id":"fire-calculator","name":"Fire Calculator","description":"Return the FIRE number (annual expenses / withdrawal rate), years to reach it, FIRE age, progress percent, monthly investment, and a year-by-year net worth projection for Traditional, Lean, Fat, Coast, or Barista FIRE. Growth uses the real return (expected return minus inflation); rates are yearly percentages.","category":"finance","parameters":{"type":"object","properties":{"current_age":{"type":"integer","description":"Current age in years.","minimum":0,"maximum":120},"current_net_worth":{"type":"number","description":"Invested net worth today. Default: 0.","minimum":0},"annual_expenses":{"type":"number","description":"Yearly spending. Must be > 0.","minimum":0},"annual_income":{"type":"number","description":"Yearly income. Default: 0.","minimum":0},"savings_rate":{"type":"number","description":"Percent of income saved. Default: 0.","minimum":0,"maximum":100},"expected_return":{"type":"number","description":"Expected yearly return in percent. Default: 7.","minimum":-100,"maximum":100},"withdrawal_rate":{"type":"number","description":"Safe withdrawal rate in percent. Must be > 0. Default: 4.","minimum":0,"maximum":100},"inflation_rate":{"type":"number","description":"Yearly inflation in percent. Default: 2.5.","minimum":-100,"maximum":100},"fire_type":{"type":"string","description":"FIRE variant. Default: traditional.","enum":["traditional","lean","fat","coast","barista"]}},"required":["current_age","annual_expenses"],"additionalProperties":false},"examples":[]},{"id":"flashcard-maker","name":"Flashcard Maker","description":"Turn a list of front/back pairs into a flashcard deck and return the numbered cards plus ready-to-import formats: CSV (Front,Back), tab-separated text for Anki and Quizlet, JSON, Markdown, and a plain-text study sheet. Optionally shuffles the deck (deterministic with a seed).","category":"education","parameters":{"type":"object","properties":{"cards":{"type":"array","description":"Cards: { front, back }. Cards with an empty side are skipped.","items":{"type":"object","description":"{ front: string, back: string }"}},"title":{"type":"string","description":"Deck title. Default \"Flashcards\".","maxLength":200},"shuffle":{"type":"boolean","description":"Shuffle the cards. Default false.","default":false},"seed":{"type":"integer","description":"Seed for the shuffle. Same seed → same order.","minimum":0,"maximum":4294967295}},"required":["cards"],"additionalProperties":false},"examples":[]},{"id":"font-icon-search","name":"Font Icon Search","description":"Search a catalog of about 300 icons from Font Awesome, Material Icons, Lucide, and Heroicons by name, keyword, or category and return matching icon names with their CSS class and unicode code point. Optional filters by library and category; an empty query lists the catalog.","category":"developer","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search text, e.g. \"search\", \"trash\", \"arrow\". Matches name, keywords, CSS class, and category, with one-typo tolerance on words of 4+ letters.","maxLength":100},"library":{"type":"string","description":"Only icons from this library.","enum":["Font Awesome","Heroicons","Lucide","Material Icons"]},"category":{"type":"string","description":"Only icons in this category. One of: Accessibility, Alerts, Arrows, Charts, Commerce, Communication, Devices, Editing, Files, General, Layout, Maps, Media, Navigation, Social, Weather.","maxLength":40},"limit":{"type":"integer","description":"Maximum results to return (1-200). Default 50.","minimum":1,"maximum":200,"default":50}},"additionalProperties":false},"examples":[]},{"id":"form-to-json-schema","name":"Form TO Json Schema","description":"Returns a form schema object ({ formId, method, action, fields, submitText }) extracted from HTML form markup. Reads every input, select and textarea with a name or id: its type, label (from <label for>), placeholder, required flag, min/max, minlength/maxlength, pattern, select options and radio groups. Submit, button, reset and hidden inputs are skipped.","category":"seo","parameters":{"type":"object","properties":{"html":{"type":"string","description":"The HTML that contains the form (a whole page or just the <form> fragment).","maxLength":2000000}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"geo-analyzer","name":"GEO Analyzer","description":"Return a Generative Engine Optimization (GEO) report for a public web page: an overall 0-100 score, per-category scores (technical, content, geo, ai-access), a citability score, AI-bot access from robots.txt, llms.txt presence and a list of pass/warn/fail checks with recommendations.","category":"seo","parameters":{"type":"object","properties":{"url":{"type":"string","description":"Public http(s) URL of the page to analyze, e.g. \"https://example.com/\".","maxLength":2048}},"required":["url"],"additionalProperties":false},"examples":[]},{"id":"glassmorphism-generator","name":"Glassmorphism Generator","description":"Generate the CSS for a glassmorphism (frosted glass) card: semi-transparent background, backdrop-filter blur and saturation (with the -webkit- prefix), border radius, and a lighter border. Returns the multi-line CSS block, each property, and the resolved settings. Presets: subtle, frosted, bold, dark.","category":"generators","parameters":{"type":"object","properties":{"preset":{"type":"string","description":"Start from a preset. Any other argument overrides the preset value.","enum":["subtle","frosted","bold","dark"]},"blur":{"type":"number","description":"Backdrop blur in px (0 to 100). Default 10.","minimum":0,"maximum":100,"default":10},"transparency":{"type":"number","description":"Background opacity in percent (0 to 100). Default 20.","minimum":0,"maximum":100,"default":20},"saturation":{"type":"number","description":"Backdrop saturation in percent (0 to 300). Default 100.","minimum":0,"maximum":300,"default":100},"border_radius":{"type":"number","description":"Border radius in px (0 to 200). Default 16.","minimum":0,"maximum":200,"default":16},"border_width":{"type":"number","description":"Border width in px (0 to 20). Default 1.","minimum":0,"maximum":20,"default":1},"color":{"type":"string","description":"Glass tint as a hex colour (#rrggbb or #rgb). Default #ffffff.","maxLength":7,"default":"#ffffff"}},"additionalProperties":false},"examples":[]},{"id":"glob-pattern-tester","name":"Glob Pattern Tester","description":"Returns which file paths match a glob pattern and which do not. Supports * and ** wildcards, ? single characters, [abc] character classes, {a,b} brace expansion and a leading ! for negation. A pattern without a slash also matches against the file basename.","category":"developer","parameters":{"type":"object","properties":{"pattern":{"type":"string","description":"The glob pattern to test, e.g. \"src/**/*.ts\" or \"*.{jpg,png}\".","maxLength":1000},"files":{"type":"array","description":"File paths to test. An array of strings (a newline-separated string is also accepted).","items":{"type":"string","description":"One file path, e.g. \"src/index.ts\"."}}},"required":["pattern","files"],"additionalProperties":false},"examples":[]},{"id":"gpa-calculator","name":"GPA Calculator","description":"Calculate a grade point average (GPA) on the 4.0 scale from course letter grades and credits. Returns the GPA, a quality label, total credits, total quality points, and per-course points. Grades A+ to F (A+ and A = 4.0, A- = 3.7, B+ = 3.3, ..., F = 0).","category":"education","parameters":{"type":"object","properties":{"courses":{"type":"array","description":"Courses. Each item: { name?: string, credits: number (> 0), grade: \"A+\" | \"A\" | \"A-\" | \"B+\" | \"B\" | \"B-\" | \"C+\" | \"C\" | \"C-\" | \"D+\" | \"D\" | \"D-\" | \"F\" }.","items":{"type":"object","description":"One course with credits and a letter grade."}}},"required":["courses"],"additionalProperties":false},"examples":[]},{"id":"grade-calculator","name":"Grade Calculator","description":"Calculate a weighted course grade from categories (homework, quizzes, exams) with assignment scores, the letter grade (A to F), and the score needed on the remaining weight to reach a target grade. Categories with no scored assignments count as remaining weight.","category":"education","parameters":{"type":"object","properties":{"categories":{"type":"array","description":"Grade categories. Each item: { name?: string, weight: number (percent of the final grade), assignments: [{ name?: string, score: number, max_score?: number (default 100) }] }.","items":{"type":"object","description":"One category with a weight and a list of assignments."}},"target_grade":{"type":"number","description":"Target final grade in percent. Default 90.","minimum":0,"maximum":100,"default":90}},"required":["categories"],"additionalProperties":false},"examples":[]},{"id":"gradient-generator","name":"Gradient Generator","description":"Generate a CSS linear, radial, or conic gradient from colour stops (2 to 10) and an angle, or from a preset (sunset, ocean, forest, fire, purple, cool). Returns the \"background: ...;\" rule, the bare gradient value, and the sorted colour stops.","category":"generators","parameters":{"type":"object","properties":{"type":{"type":"string","description":"Gradient type.","enum":["linear","radial","conic"],"default":"linear"},"angle":{"type":"number","description":"Angle in degrees (0-360) for linear and conic gradients. Default 90.","minimum":0,"maximum":360,"default":90},"color_stops":{"type":"array","description":"Colour stops, 2 to 10 items: { color: \"#rrggbb\", position: 0-100 }. Default: #667eea at 0%, #764ba2 at 100%.","items":{"type":"object","description":"One stop with a hex colour and a percent position."}},"preset":{"type":"string","description":"Use a preset palette instead of color_stops (evenly spaced stops).","enum":["sunset","ocean","forest","fire","purple","cool"]},"radial_shape":{"type":"string","description":"Radial only: shape.","enum":["circle","ellipse"],"default":"circle"},"radial_position":{"type":"string","description":"Radial only: position keyword or lengths, e.g. \"center\", \"top left\", \"50% 50%\". Default \"center\".","maxLength":40,"default":"center"}},"additionalProperties":false},"examples":[]},{"id":"graphql-playground","name":"Graphql Playground","description":"Check a GraphQL query for balanced braces and, when a schema is supplied, unknown fields on Query/Mutation/Subscription types. This is a syntax and field-name check. It does not execute a query and it is not a full GraphQL engine.","category":"seo","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"Optional GraphQL SDL used to check field names.","maxLength":80000},"query":{"type":"string","description":"GraphQL query, mutation, or subscription document.","maxLength":20000}},"required":["query"],"additionalProperties":false},"examples":[]},{"id":"graphql-schema-validator","name":"Graphql Schema Validator","description":"Validate a GraphQL SDL schema and return errors, naming-convention warnings, and counts of types, queries, mutations, and subscriptions. Errors cover unbalanced braces, fields without a type, double colons, and malformed return types; warnings cover type names that are not PascalCase, field names that are not camelCase, and a missing Query type.","category":"seo","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"GraphQL schema in SDL (type definitions).","maxLength":2000000}},"required":["schema"],"additionalProperties":false},"examples":[]},{"id":"graphql-to-typescript","name":"Graphql TO Typescript","description":"Convert a GraphQL SDL schema into TypeScript type definitions and return the generated code with counts of emitted types, enums, and inputs. Object and interface types become interfaces (or type aliases), enums become TypeScript enums, input types are included by default. Non-null fields (!) are required; nullable fields become optional and accept null. Built-in scalars map to string, number, and boolean.","category":"data","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"GraphQL schema in SDL (type, input, enum definitions).","maxLength":2000000},"use_interfaces":{"type":"boolean","description":"Emit \"interface X {}\" instead of \"type X = {}\". Default: true.","default":true},"add_exports":{"type":"boolean","description":"Prefix every declaration with \"export\". Default: true.","default":true},"use_readonly":{"type":"boolean","description":"Mark every field readonly. Default: false.","default":false},"generate_input_types":{"type":"boolean","description":"Also emit GraphQL input types. Default: true.","default":true}},"required":["schema"],"additionalProperties":false},"examples":[]},{"id":"har-to-curl","name":"HAR TO Curl","description":"Convert a HAR (HTTP Archive) file into curl commands, one per recorded request, and return them as a script plus a per-request list. Each command carries the method, URL, request headers (pseudo-headers, Host, Connection, and Content-Length are skipped), optional cookies, and the request body. Output uses short flags by default; long_form switches to --request, --header, --cookie, --data.","category":"network","parameters":{"type":"object","properties":{"har":{"type":"string","description":"HAR 1.x JSON text as exported by browser DevTools (an object with log.entries).","maxLength":10000000},"include_headers":{"type":"boolean","description":"Emit -H for each request header. Default: true.","default":true},"include_cookies":{"type":"boolean","description":"Emit -b with the request cookies. Default: false.","default":false},"long_form":{"type":"boolean","description":"Use long flags (--request, --header, --cookie, --data). Default: false.","default":false}},"required":["har"],"additionalProperties":false},"examples":[]},{"id":"har-viewer","name":"HAR Viewer","description":"Parse HAR 1.x JSON and return each entry’s method, URL, status, size, time, and MIME type. Request bodies, cookies, and headers are omitted. Convert a HAR to curl with har_to_curl.","category":"network","parameters":{"type":"object","properties":{"har":{"type":"string","description":"HAR 1.x JSON text (DevTools export with log.entries).","maxLength":256000}},"required":["har"],"additionalProperties":false},"examples":[]},{"id":"hash-comparison-tool","name":"Hash Comparison Tool","description":"Hash text with SHA-1, SHA-256, SHA-384, or SHA-512 and compare the hex digest with an expected hash. Returns the computed hash, the normalized expected hash, and match true/false (null when no expected hash is given). Useful to verify checksums and integrity.","category":"security","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to hash.","maxLength":5000000},"expected_hash":{"type":"string","description":"The hex digest to compare against. Case and whitespace are ignored.","maxLength":256},"algorithm":{"type":"string","description":"Hash algorithm. Default: SHA-256.","enum":["SHA-1","SHA-256","SHA-384","SHA-512"],"default":"SHA-256"}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"hashtag-generator","name":"Hashtag Generator","description":"Generate relevant hashtags from keywords using a built-in, rule-based database (no AI): matches keywords against topic categories, scores popular and niche tags, adds compound and suffix variants, and caps the list at the platform limit (Instagram 30, Twitter 5, TikTok 20, LinkedIn 10, YouTube 15). Returns the hashtags, a space-joined string, and the tags grouped by source.","category":"generators","parameters":{"type":"object","properties":{"keywords":{"type":"string","description":"Comma- or space-separated keywords, e.g. \"travel photography sunset\".","minLength":1,"maxLength":1000},"platform":{"type":"string","description":"Target platform, sets the maximum count. Default \"instagram\".","enum":["instagram","twitter","tiktok","linkedin","youtube"],"default":"instagram"},"type":{"type":"string","description":"Tag mix: \"mixed\", \"popular\" (high volume) or \"niche\" (low competition). Default \"mixed\".","enum":["mixed","popular","niche"],"default":"mixed"}},"required":["keywords"],"additionalProperties":false},"examples":[]},{"id":"heading-structure-analyzer","name":"Heading Structure Analyzer","description":"Analyze the H1-H6 heading hierarchy of an HTML document and return every heading, SEO warnings (missing or multiple H1, skipped levels, empty or overly long headings), and per-level counts.","category":"seo","parameters":{"type":"object","properties":{"html":{"type":"string","description":"The HTML source to analyze (a full page or a fragment).","maxLength":2000000},"keyword":{"type":"string","description":"Optional target keyword. Each heading reports whether it contains this keyword (case-insensitive).","maxLength":200}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"home-affordability-calculator","name":"Home Affordability Calculator","description":"Return the maximum home price you can afford from income, monthly debts, down payment percent, rate, term, property tax, insurance, HOA, and a debt-to-income ratio, with the monthly payment breakdown at that price. Rates are yearly percentages.","category":"finance","parameters":{"type":"object","properties":{"annual_income":{"type":"number","description":"Gross yearly income. Must be > 0.","minimum":0},"monthly_debts":{"type":"number","description":"Other monthly debt payments. Default: 0.","minimum":0},"down_payment_percent":{"type":"number","description":"Down payment as a percent of the price. Must be < 100. Default: 20.","minimum":0,"maximum":100},"interest_rate":{"type":"number","description":"Yearly mortgage rate in percent. Default: 6.5.","minimum":0,"maximum":100},"loan_term_years":{"type":"integer","description":"Loan term in years. Default: 30.","minimum":1,"maximum":50},"property_tax_rate":{"type":"number","description":"Yearly property tax as a percent of the price. Default: 1.2.","minimum":0,"maximum":100},"insurance_annual":{"type":"number","description":"Yearly home insurance. Default: 1500.","minimum":0},"hoa_monthly":{"type":"number","description":"Monthly HOA dues. Default: 0.","minimum":0},"dti_ratio":{"type":"number","description":"Debt-to-income ratio in percent (28, 36, or 43 are common). Default: 36.","minimum":0,"maximum":100}},"required":["annual_income"],"additionalProperties":false},"examples":[]},{"id":"hreflang-tag-generator","name":"Hreflang TAG Generator","description":"Generate hreflang annotations for multilingual pages and return them as HTML <link> tags, an HTTP Link header, and an XML sitemap block, plus validation issues (invalid URL, language, or region code, duplicate language-region pairs, missing x-default). Pass one page group as variants, or several as groups.","category":"seo","parameters":{"type":"object","properties":{"variants":{"type":"array","description":"Shortcut for a single page group: array of { language, region?, url, x_default? }. language is an ISO 639-1 code (en, de, tr); region is an ISO 3166-1 alpha-2 code (US, GB).","items":{"type":"object","description":"{ language: string, region?: string, url: string, x_default?: boolean }"}},"groups":{"type":"array","description":"Several page groups: array of { base_url?, variants: [...] }. Each group is one page and its translations.","items":{"type":"object","description":"{ base_url?: string, variants: Variant[] }"}},"format":{"type":"string","description":"Which output to fill. \"all\" fills html, http_headers, and xml_sitemap; a single format leaves the others empty. Default \"all\".","enum":["all","html","http","xml"],"default":"all"}},"additionalProperties":false},"examples":[]},{"id":"html-entity-finder","name":"Html Entity Finder","description":"Search the HTML entity catalog and return matching entities with their character, named entity, decimal code, hex code, and category. Search by character (€), entity name (&euro; or euro), descriptive name (Euro Sign), or keyword (currency); filter by category; with no query the catalog is listed in order. Results are ranked by match strength.","category":"text","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Search text: a character, an entity such as &copy;, a name, or a keyword. Empty lists the catalog.","maxLength":200,"default":""},"category":{"type":"string","description":"Restrict results to one category. Default: all.","enum":["all","Currency Symbols","Math Symbols","Arrows","Latin Characters","Greek Letters","Punctuation","Technical Symbols","Geometric Shapes","Miscellaneous Symbols"],"default":"all"},"limit":{"type":"integer","description":"Maximum number of entities to return (1-500). Default: 50.","minimum":1,"maximum":500,"default":50}},"additionalProperties":false},"examples":[]},{"id":"html-formatter","name":"Html Formatter","description":"Format (beautify) or minify HTML and return the result with a tag-balance validation report. Format mode re-indents block tags, keeps inline tags with their text, and leaves pre/code/script/style/textarea content untouched. Minify mode strips comments and whitespace between tags.","category":"validation","parameters":{"type":"object","properties":{"html":{"type":"string","description":"The HTML source to format or minify.","maxLength":2000000},"mode":{"type":"string","description":"format = beautify with indentation, minify = compact. Default: format.","enum":["format","minify"],"default":"format"},"indent":{"type":"integer","description":"Spaces per indentation level in format mode (1-8). Default: 2.","minimum":1,"maximum":8,"default":2}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"html-table-to-json","name":"Html Table TO Json","description":"Convert an HTML <table> into JSON — an array of objects keyed by the header row, or an array of row arrays. Cell text is extracted with tags stripped and entities decoded. Empty header cells become column1, column2, ….","category":"data","parameters":{"type":"object","properties":{"html":{"type":"string","description":"HTML that contains at least one <table> element. A full page is fine; the first table is used unless table_index is set.","maxLength":2000000},"format":{"type":"string","description":"\"objects\" (default) maps each row to an object; \"arrays\" returns rows as string arrays.","enum":["objects","arrays"],"default":"objects"},"first_row_headers":{"type":"boolean","description":"When format is \"objects\", use the first row as object keys (default true). When false, keys are column1, column2, ….","default":true},"table_index":{"type":"integer","description":"Zero-based index of the table to convert when the HTML has several. Default 0.","minimum":0,"default":0}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"http-status-code-lookup","name":"Http Status Code Lookup","description":"Return the meaning, typical use case and fix for HTTP status codes. Look up one code (e.g. \"404\"), a class (\"4xx\"), or search by name or keyword (\"too many requests\"); filter by category.","category":"network","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Status code, class or keyword, e.g. \"404\", \"5xx\", \"rate limit\". Empty returns the whole table.","maxLength":100},"category":{"type":"string","description":"Limit results to one class.","enum":["all","1xx Informational","2xx Success","3xx Redirection","4xx Client Error","5xx Server Error"],"default":"all"},"limit":{"type":"integer","description":"Maximum number of results (1-100).","minimum":1,"maximum":100,"default":10}},"additionalProperties":false},"examples":[]},{"id":"ics-to-csv","name":"ICS TO CSV","description":"Convert an iCalendar (.ics) export from Google Calendar, Apple Calendar or Outlook into CSV, one row per event. Folded lines, escaped text, TZID and UTC stamps, all-day dates, DURATION and X-WR-CALNAME are read. Times stay exactly as the file states them and are never converted between zones; the zone travels in its own column. A recurrence rule is written as text in the rrule column, not expanded into every occurrence. The outlook layout writes the nine-column header Google Calendar and Outlook accept on import. To-dos, journals and events with no readable start are skipped and counted.","category":"productivity","parameters":{"type":"object","properties":{"input":{"type":"string","description":"The .ics file contents.","maxLength":10000000},"layout":{"type":"string","description":"spreadsheet (default): summary, start, end, all_day, timezone, location, description, organizer, status, categories, rrule, uid with ISO dates. outlook: Subject, Start Date, Start Time, End Date, End Time, All Day Event, Description, Location, Private with MM/DD/YYYY dates, the header Google Calendar and Outlook import.","enum":["spreadsheet","outlook"],"default":"spreadsheet"},"delimiter":{"type":"string","description":"Output field separator. Default: a comma.","maxLength":4,"default":","},"sort_by_start":{"type":"boolean","description":"Order rows by start time. Default true; false keeps file order.","default":true}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"images-to-pdf","name":"Images TO PDF","description":"Combine JPG and PNG images into a single PDF, one image per page, in the order given. Choose a fixed A4 or Letter sheet with the image fitted inside it and centred, or \"fit\" for a page exactly the size of each image. Images are embedded as they are and never re-encoded, so nothing is lost. Input images and the output PDF are base64.","category":"calculators","parameters":{"type":"object","properties":{"images":{"type":"array","description":"Base64-encoded JPG or PNG images, in page order.","items":{"type":"string","description":"One base64-encoded JPG or PNG."}},"page_size":{"type":"string","description":"Sheet size: \"fit\" makes each page the size of its image. Default: fit.","enum":["fit","a4","letter"],"default":"fit"},"margin":{"type":"number","description":"Margin in points around a fixed sheet. Ignored when page_size is \"fit\". Default: 0.","minimum":0,"maximum":200,"default":0}},"required":["images"],"additionalProperties":false},"examples":[]},{"id":"inflation-calculator","name":"Inflation Calculator","description":"Return what an amount of money from one year is worth in another year using historical CPI data, with total inflation, average yearly inflation, and the change in purchasing power (all in percent). USD covers 1913-2025 (BLS); TRY covers 2003-2025 (TÜİK).","category":"finance","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Amount of money in the from_year.","minimum":0},"from_year":{"type":"integer","description":"Start year.","minimum":1913,"maximum":2025},"to_year":{"type":"integer","description":"End year. May be earlier than from_year.","minimum":1913,"maximum":2025},"currency":{"type":"string","description":"CPI series: USD or TRY. Default: USD.","enum":["USD","TRY"]}},"required":["amount","from_year","to_year"],"additionalProperties":false},"examples":[]},{"id":"investment-calculator","name":"Investment Calculator","description":"Return the projected value of an investment with compound growth and monthly contributions: final balance, total contributions, total interest, an effective yearly growth rate, and a year-by-year table. Return is a yearly percentage; contributions are added at the start or the end of each month.","category":"finance","parameters":{"type":"object","properties":{"initial_investment":{"type":"number","description":"Starting amount. Default: 0.","minimum":0},"monthly_contribution":{"type":"number","description":"Amount added every month. Default: 0.","minimum":0},"annual_return":{"type":"number","description":"Expected yearly return in percent (7 = 7%).","minimum":-100,"maximum":1000},"years":{"type":"integer","description":"Investment length in years.","minimum":1,"maximum":100},"compound_frequency":{"type":"string","description":"How often returns compound. Default: monthly.","enum":["annually","semiannually","quarterly","monthly","daily"]},"contribution_timing":{"type":"string","description":"Add the contribution at the beginning or the end of each month. Default: end.","enum":["beginning","end"]}},"required":["annual_return","years"],"additionalProperties":false},"examples":[]},{"id":"ip-address-lookup","name":"IP Address Lookup","description":"Return geolocation and network details for a public IPv4 or IPv6 address: country, region, city, postal code, coordinates, timezone, ASN and organization, currency and calling code.","category":"network","parameters":{"type":"object","properties":{"ip":{"type":"string","description":"Public IPv4 or IPv6 address, e.g. \"8.8.8.8\" or \"2606:4700::1111\".","maxLength":45}},"required":["ip"],"additionalProperties":false},"examples":[]},{"id":"ip-blacklist-checker","name":"IP Blacklist Checker","description":"Return whether an IPv4 address is listed on 12 well-known DNS blacklists (Spamhaus, Barracuda, SpamCop, SORBS, UCEPROTECT, PSBL and more), with listed, clean and failed counts. Lookups use Google DNS-over-HTTPS.","category":"network","parameters":{"type":"object","properties":{"ip":{"type":"string","description":"Public IPv4 address to check, e.g. \"203.0.113.5\". DNSBLs only support IPv4.","maxLength":15}},"required":["ip"],"additionalProperties":false},"examples":[]},{"id":"jq-playground","name":"JQ Playground","description":"Returns the result of running a jq-style filter over a JSON document. Supports a jq subset: paths (.a.b, .[0], .[1:3], .[]), pipes, map/select/sort_by/group_by/unique_by/min_by/max_by, keys/values/length/type/add/min/max/flatten/unique/reverse/sort, to_entries/from_entries/with_entries, has/contains/del, split/join/ltrimstr/rtrimstr, range/limit, the // fallback, and object/array/string construction. Not a full jq implementation.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"The JSON input document (text).","maxLength":5000000},"query":{"type":"string","description":"The jq filter, e.g. \".users[] | select(.age > 30) | .name\". Default: \".\" (identity).","maxLength":5000,"default":"."}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-comparer","name":"Json Comparer","description":"Returns a git-style line diff of two JSON documents after both are pretty-printed with 2-space indentation. Each line is marked added, removed or unchanged with its line numbers; a unified text block and counts are included.","category":"data","parameters":{"type":"object","properties":{"left":{"type":"string","description":"The original JSON document (text).","maxLength":5000000},"right":{"type":"string","description":"The changed JSON document (text).","maxLength":5000000},"sort_keys":{"type":"boolean","description":"Sort object keys recursively before formatting, so key order does not show as a change. Default: false.","default":false}},"required":["left","right"],"additionalProperties":false},"examples":[]},{"id":"json-diff","name":"Json Diff","description":"Returns the semantic differences between two JSON documents as a list of added, removed and modified paths with their old and new values, plus counts. Compares structure and values, not text lines; key order is ignored by default.","category":"data","parameters":{"type":"object","properties":{"left":{"type":"string","description":"The original JSON document (text).","maxLength":5000000},"right":{"type":"string","description":"The changed JSON document (text).","maxLength":5000000},"ignore_key_order":{"type":"boolean","description":"Sort object keys before comparing so key order does not count as a change. Default: true.","default":true},"include_unchanged":{"type":"boolean","description":"Also list unchanged leaf paths. Default: false.","default":false}},"required":["left","right"],"additionalProperties":false},"examples":[]},{"id":"json-escaper","name":"Json Escaper","description":"Returns the text with JSON string escapes applied (mode \"escape\") or removed (mode \"unescape\"). Escapes backslashes, double quotes, newlines, carriage returns, tabs, form feeds and backspaces so the text can sit inside a JSON string literal.","category":"encoding","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to escape or unescape.","maxLength":1000000},"mode":{"type":"string","description":"Direction: \"escape\" (default) adds JSON escapes; \"unescape\" removes them.","enum":["escape","unescape"],"default":"escape"}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"json-faker","name":"Json Faker","description":"Returns an array of fake JSON records built from a field list, for testing and prototyping. Each field has a name and one of 40 generator types (firstName, lastName, fullName, email, phone, uuid, username, password, avatar, streetAddress, city, state, zipCode, country, latitude, longitude, companyName, jobTitle, department, productName, price, color, hexColor, url, ip, mac, paragraph, sentence, word, integer, float, boolean, date, pastDate, futureDate, timestamp, creditCard, iban, currency, imageUrl). Values are random on every call.","category":"data","parameters":{"type":"object","properties":{"fields":{"type":"array","description":"Field definitions: [{ name: \"email\", type: \"email\" }, ...]. Unknown types are rejected.","items":{"type":"object","description":"One field: { name: string, type: string }."}},"count":{"type":"integer","description":"Number of records to generate (1-1000). Default: 5.","minimum":1,"maximum":1000,"default":5}},"required":["fields"],"additionalProperties":false},"examples":[]},{"id":"json-ld-generator","name":"Json LD Generator","description":"Generate JSON-LD structured data for 12 schema.org types (Article, BlogPosting, Product, Organization, LocalBusiness, Person, Event, FAQPage, HowTo, Recipe, WebSite, BreadcrumbList) and return the JSON-LD string, a <script> tag, and the schema object. Known keys such as author, publisher, address, offers, brand, location, and worksFor are expanded into nested typed objects.","category":"seo","parameters":{"type":"object","properties":{"schema_type":{"type":"string","description":"The schema.org type to generate.","enum":["Article","BlogPosting","Product","Organization","LocalBusiness","Person","Event","FAQPage","HowTo","Recipe","WebSite","BreadcrumbList"]},"fields":{"type":"object","description":"Flat key→value map of schema properties (string values). Empty values are skipped. Not used for FAQPage or BreadcrumbList."},"faqs":{"type":"array","description":"FAQPage only: array of { question, answer } objects. At least one complete pair is required.","items":{"type":"object","description":"{ question: string, answer: string }"}},"breadcrumbs":{"type":"array","description":"BreadcrumbList only: ordered array of { name, url } objects. Position is assigned from array order.","items":{"type":"object","description":"{ name: string, url: string }"}}},"required":["schema_type"],"additionalProperties":false},"examples":[]},{"id":"json-minifier","name":"Json Minifier","description":"Minify JSON to a single line with no whitespace and return the compact text plus original size, minified size (bytes), and reduction percentage. The input must be valid JSON; a parse error is reported with its position.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"The JSON text to minify.","maxLength":10000000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-path-finder","name":"Json Path Finder","description":"Returns every match of a JSONPath expression in a JSON document: the concrete path and value of each match, the match count, and a convenience \"value\" (the single value when there is one match, otherwise the array of values). Supports $.a.b, [\"key\"], [0], [-1], [1:3], wildcards (*), recursive descent (..name) and filters ([?(@.age > 30)]).","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"The JSON document (text).","maxLength":5000000},"path":{"type":"string","description":"The JSONPath expression, e.g. \"$.users[?(@.active == true)].name\". Default: \"$\" (the root).","maxLength":2000,"default":"$"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-schema-form-builder","name":"Json Schema Form Builder","description":"Returns a form schema object (formId, method, action, fields, submitText) built from a list of field definitions. The output is the JSON the json_to_html_form and json_to_bootstrap_form tools consume.","category":"seo","parameters":{"type":"object","properties":{"fields":{"type":"array","description":"Field definitions. Each item: { name, type, label?, placeholder?, required?, options?: [{value,label}], min?, max?, rows? }. type is one of text, email, password, number, tel, url, date, textarea, select, checkbox, radio.","items":{"type":"object","description":"One form field definition with at least name and type."}},"form_id":{"type":"string","description":"The form id attribute. Default: \"my-form\".","maxLength":200,"default":"my-form"},"submit_text":{"type":"string","description":"Label of the submit button. Default: \"Submit\".","maxLength":200,"default":"Submit"}},"required":["fields"],"additionalProperties":false},"examples":[]},{"id":"json-schema-generator","name":"Json Schema Generator","description":"Returns a JSON Schema (draft-07) object inferred from a sample JSON document. Detects types, nested objects and arrays, marks properties required, and can detect string formats (email, uri, uuid, date-time, date) and include examples.","category":"seo","parameters":{"type":"object","properties":{"json":{"type":"string","description":"The sample JSON document (text) to infer a schema from.","maxLength":5000000},"required":{"type":"boolean","description":"Mark every object property as required. Default: true.","default":true},"additional_properties":{"type":"boolean","description":"Allow additional properties on objects. When false, \"additionalProperties\": false is emitted. Default: false.","default":false},"detect_formats":{"type":"boolean","description":"Detect string formats (email, uri, uuid, date-time, date). Default: true.","default":true},"include_examples":{"type":"boolean","description":"Include the sample values as \"examples\". Default: false.","default":false}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-schema-validator","name":"Json Schema Validator","description":"Returns whether a JSON document is valid against a JSON Schema (draft-07 subset) and lists every violation with its JSON pointer path, message and keyword. Checks type, required, properties, items, min/maxLength, pattern, format, minimum, maximum, enum and min/maxItems.","category":"seo","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"The JSON Schema (text).","maxLength":2000000},"data":{"type":"string","description":"The JSON document to validate (text).","maxLength":5000000}},"required":["schema","data"],"additionalProperties":false},"examples":[]},{"id":"json-to-bootstrap-form","name":"Json TO Bootstrap Form","description":"Returns Bootstrap 5 form markup generated from a JSON form schema ({ formId?, layout?, method?, action?, fields: [...], submitText? }). Supports vertical, horizontal (row/col-md-6) and floating-label layouts with form-control, form-select and form-check classes.","category":"data","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"The form schema as JSON text (a JSON object is also accepted). Must contain a \"fields\" array; each field has name, type and label. layout is \"vertical\" (default), \"horizontal\" or \"floating\".","maxLength":1000000}},"required":["schema"],"additionalProperties":false},"examples":[]},{"id":"json-to-chart","name":"Json TO Chart","description":"Render a bar, line, or pie chart as an SVG string from JSON data of the form {\"title\",\"type\",\"data\":[{\"label\",\"value\",\"color?\"}]}. Returns the SVG, the normalised data points with colours and percentages, the total, and the maximum value.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Chart JSON: {\"title\"?: string, \"type\"?: \"bar\"|\"line\"|\"pie\", \"data\": [{\"label\": string, \"value\": number, \"color\"?: \"#hex\"}], \"xAxisLabel\"?, \"yAxisLabel\"?}.","maxLength":200000},"type":{"type":"string","description":"Override the chart type from the JSON. Default: the JSON \"type\", else \"bar\".","enum":["bar","line","pie"]}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-email-template","name":"Json TO Email Template","description":"Generate a responsive, table-based HTML email (header, greeting, body paragraphs, button, footer, unsubscribe link) from JSON such as {\"title\",\"body\":[\"...\"],\"button\":{\"text\",\"url\"},\"companyName\"}. Returns the full HTML document.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Email JSON: {\"title\": string, \"body\": string[], \"subject\"?, \"preheader\"?, \"logo\"?, \"headerColor\"?, \"greeting\"?, \"button\"?: {\"text\",\"url\",\"color\"?}, \"footer\"?, \"unsubscribe\"?, \"companyName\"?, \"companyAddress\"?}.","maxLength":200000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-go-struct","name":"Json TO GO Struct","description":"Returns Go struct definitions (as source text) generated from a JSON object. Field names become PascalCase, nested objects become their own structs (or inline structs), and json tags with optional omitempty are added.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"A JSON object (text). The top-level value must be an object.","maxLength":5000000},"struct_name":{"type":"string","description":"Name of the top-level struct. Default: \"Root\".","maxLength":100,"default":"Root"},"add_json_tags":{"type":"boolean","description":"Add `json:\"...\"` struct tags. Default: true.","default":true},"omit_empty":{"type":"boolean","description":"Append \",omitempty\" to every json tag. Default: false.","default":false},"inline_structs":{"type":"boolean","description":"Emit nested objects as inline anonymous structs instead of named types. Default: false.","default":false}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-html-form","name":"Json TO Html Form","description":"Returns clean HTML5 form markup generated from a JSON form schema ({ formId?, formClass?, method?, action?, fields: [...], submitText? }). Each field becomes a labelled input, textarea, select, checkbox or radio group with its validation attributes.","category":"seo","parameters":{"type":"object","properties":{"schema":{"type":"string","description":"The form schema as JSON text (a JSON object is also accepted). Must contain a \"fields\" array; each field has name, type and label.","maxLength":1000000}},"required":["schema"],"additionalProperties":false},"examples":[]},{"id":"json-to-java-class","name":"Json TO Java Class","description":"Generate Java POJO class source code from a JSON object. Nested objects become separate classes, arrays become List<T>, and you can choose Lombok @Data, getters/setters, or public fields.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON object to convert (the root must be an object).","maxLength":1000000},"class_name":{"type":"string","description":"Name of the root class. Default: \"Root\".","maxLength":100,"default":"Root"},"package_name":{"type":"string","description":"Java package name, e.g. \"com.example\". Empty string omits the package line. Default: \"com.example\".","maxLength":200,"default":"com.example"},"use_lombok":{"type":"boolean","description":"Add the Lombok @Data annotation and import instead of explicit getters/setters. Default: false.","default":false},"generate_getters_setters":{"type":"boolean","description":"Generate getters and setters (ignored when use_lombok or use_public_fields is true). Default: true.","default":true},"use_public_fields":{"type":"boolean","description":"Declare fields as public instead of private. Default: false.","default":false}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-org-chart","name":"Json TO ORG Chart","description":"Generate nested HTML for an organisation chart from JSON of the form {\"title\",\"root\":{\"name\",\"title\",\"avatar\",\"children\":[...]}}. Returns the HTML (div.org-chart with .org-node/.node-card/.node-children classes), the node count, and the depth.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Org chart JSON: {\"title\"?: string, \"root\": {\"name\": string, \"title\"?: string, \"avatar\"?: url, \"children\"?: [node, ...]}}.","maxLength":500000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-pricing-table","name":"Json TO Pricing Table","description":"Generate the HTML for a pricing table (div.pricing-container with .pricing-card/.plan-features classes) from JSON of the form {\"title\",\"currency\",\"plans\":[{\"name\",\"price\",\"period\",\"features\":[...],\"cta\",\"highlighted\",\"badge\"}]}. Returns the HTML plus a summary of each plan.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Pricing JSON: {\"title\"?: string, \"currency\"?: string (default \"$\"), \"plans\": [{\"name\": string, \"price\": number|string, \"period\"?, \"description\"?, \"features\": string[], \"cta\"?, \"highlighted\"?: boolean, \"badge\"?}]}.","maxLength":200000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-product-card","name":"Json TO Product Card","description":"Generate an e-commerce product card from JSON such as {\"name\",\"price\",\"originalPrice\",\"currency\",\"rating\",\"reviews\",\"badges\"} in one of 6 templates. Returns the card three ways: inline-style HTML, Tailwind CSS markup, and a React JSX component.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Product JSON: {\"name\": string, \"price\": number, \"originalPrice\"?: number, \"currency\"?: string, \"image\"?: url, \"rating\"?: 0-5, \"reviews\"?: number, \"description\"?: string, \"badges\"?: string[], \"inStock\"?: boolean, \"category\"?: string}.","maxLength":100000},"template":{"type":"string","description":"Card template. Default \"classic\".","enum":["classic","modern","dark","horizontal","minimal","gradient"],"default":"classic"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-profile-card","name":"Json TO Profile Card","description":"Generate a profile card for team pages and portfolios from JSON such as {\"name\",\"title\",\"company\",\"location\",\"email\",\"bio\",\"skills\",\"social\":{\"twitter\",\"github\"}} in one of 6 templates. Returns the card three ways: inline-style HTML, Tailwind CSS markup, and a React JSX component.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Profile JSON: {\"name\": string, \"title\"?, \"company\"?, \"location\"?, \"email\"?, \"avatar\"?: url, \"bio\"?, \"skills\"?: string[], \"social\"?: {\"twitter\"?, \"linkedin\"?, \"github\"?, \"website\"?}, \"coverColor\"?: \"#hex\"}.","maxLength":100000},"template":{"type":"string","description":"Card template. Default \"classic\".","enum":["classic","modern","dark","compact","minimal","gradient"],"default":"classic"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-python-class","name":"Json TO Python Class","description":"Generate Python class source code from a JSON object as a dataclass, a Pydantic model, or a plain class. Nested objects become separate classes, field names become snake_case, and type hints are optional.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON object to convert (the root must be an object).","maxLength":1000000},"class_name":{"type":"string","description":"Name of the root class. Default: \"Root\".","maxLength":100,"default":"Root"},"class_type":{"type":"string","description":"Class style: \"dataclass\", \"pydantic\", or \"plain\". Default: \"dataclass\".","enum":["dataclass","pydantic","plain"],"default":"dataclass"},"add_type_hints":{"type":"boolean","description":"Add type hints (str, int, List[...], Optional[Any]). Default: true.","default":true},"generate_init":{"type":"boolean","description":"For class_type \"plain\": generate an __init__ method. Default: true.","default":true}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-react-form","name":"Json TO React Form","description":"Return a typed React (TSX) form component generated from a JSON schema of fields — inputs, textarea, select, checkbox, radio — with useState handling, validation attributes and a submit handler.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON schema text: { componentName?, method?: \"GET\"|\"POST\", action?, useHooks?: boolean, submitText?, fields: [{ name, type, label, placeholder?, required?, options?, rows?, min?, max?, minLength?, maxLength?, pattern?, defaultValue? }] }.","maxLength":200000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-readme","name":"Json TO Readme","description":"Generate a README.md (title, shields.io badges, description, demo/docs links, features, installation, usage, contributing, author, license) from JSON such as {\"name\",\"description\",\"features\":[...],\"installation\":[...],\"license\":\"MIT\"}. Returns the Markdown and the list of sections included.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"README JSON: {\"name\": string, \"description\": string, \"badges\"?: [{\"label\",\"message\",\"color\"?}], \"logo\"?, \"installation\"?: string[], \"usage\"?, \"features\"?: string[], \"contributing\"?, \"license\"?, \"author\"?: {\"name\",\"github\"?,\"twitter\"?,\"website\"?}, \"demo\"?, \"documentation\"?}.","maxLength":200000}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-social-card","name":"Json TO Social Card","description":"Generate a social-media / Open Graph card (1200x630 aspect) from JSON such as {\"title\",\"description\",\"author\",\"date\",\"siteName\",\"tag\",\"background\",\"textColor\"} in one of 6 templates. Returns the card three ways: inline-style HTML, Tailwind CSS markup, and a React JSX component.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Card JSON: {\"title\": string, \"description\"?, \"author\"?, \"avatar\"?: url, \"date\"?, \"siteName\"?, \"logo\"?: url, \"background\"?: css color, \"textColor\"?: css color, \"tag\"?}.","maxLength":100000},"template":{"type":"string","description":"Card template. Default \"og-classic\".","enum":["og-classic","blog-post","dark-modern","gradient-hero","minimal-clean","brand-bold"],"default":"og-classic"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-sql","name":"Json TO SQL","description":"Convert a JSON array of objects into SQL INSERT statements, optionally preceded by a CREATE TABLE. Column types come from the real JSON values, so booleans stay booleans and null becomes NULL rather than the text \"null\". A nested object or array is stored as JSON text. Identifiers are quoted for the chosen dialect (Postgres, MySQL or SQLite). A single object is treated as one row, and NDJSON is accepted. Nothing is executed against a database.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"A JSON array of objects, a single object, or NDJSON.","maxLength":10000000},"table":{"type":"string","description":"Target table name. Default: \"my_table\".","maxLength":128,"default":"my_table"},"dialect":{"type":"string","description":"Identifier quoting and type names. Default: postgres.","enum":["postgres","mysql","sqlite"],"default":"postgres"},"create_table":{"type":"boolean","description":"Emit a CREATE TABLE before the inserts. Default: true.","default":true},"batch":{"type":"boolean","description":"Emit multi-row INSERTs instead of one statement per row. Default: false.","default":false}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-tailwind-form","name":"Json TO Tailwind Form","description":"Generate React JSX for a Tailwind CSS styled form from a JSON form schema. Supports text, email, number, tel, url, password, textarea, select, checkbox, radio, date, time, datetime-local, and file fields with labels, placeholders, required marks, and validation attributes.","category":"data","parameters":{"type":"object","properties":{"schema":{"type":"object","description":"Form schema: { formId?, method?, action?, submitText?, fields: [{ name, type, label?, placeholder?, required?, min?, max?, minLength?, maxLength?, pattern?, rows?, accept?, options?: [{ value, label }] }] }. A JSON string of the same shape is also accepted."}},"required":["schema"],"additionalProperties":false},"examples":[]},{"id":"json-to-testimonial-card","name":"Json TO Testimonial Card","description":"Generate a testimonial / review card from JSON such as {\"quote\",\"author\",\"title\",\"company\",\"rating\",\"date\",\"highlighted\"} in one of 6 templates. Returns the card three ways: inline-style HTML, Tailwind CSS markup, and a React JSX component.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Testimonial JSON: {\"quote\": string, \"author\": string, \"title\"?, \"company\"?, \"avatar\"?: url, \"rating\"?: integer 0-5, \"date\"?, \"highlighted\"?: boolean}.","maxLength":100000},"template":{"type":"string","description":"Card template. Default \"classic\".","enum":["classic","modern","dark","bubble","minimal","gradient"],"default":"classic"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-timeline","name":"Json TO Timeline","description":"Generate the HTML for a timeline (div.timeline with .timeline-event/.event-marker/.event-content classes) from JSON of the form {\"title\",\"orientation\",\"events\":[{\"date\",\"title\",\"description\",\"color\"}]}. Returns the HTML, the orientation, and a summary of each event.","category":"generators","parameters":{"type":"object","properties":{"json":{"type":"string","description":"Timeline JSON: {\"title\"?: string, \"orientation\"?: \"vertical\"|\"horizontal\", \"events\": [{\"date\": string, \"title\": string, \"description\"?, \"color\"?: \"#hex\"}]}.","maxLength":200000},"orientation":{"type":"string","description":"Override the orientation from the JSON. Default: the JSON \"orientation\", else \"vertical\".","enum":["vertical","horizontal"]}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-typescript","name":"Json TO Typescript","description":"Generate TypeScript interfaces or type aliases from a JSON sample. Nested objects become named declarations (or inline object types), arrays infer element unions, and identical shapes are declared once.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON sample (an object, or an array of objects).","maxLength":1000000},"root_name":{"type":"string","description":"Name of the root type. Default: \"Root\".","maxLength":100,"default":"Root"},"output_type":{"type":"string","description":"\"interface\" or \"type\" (type alias). Default: \"interface\".","enum":["interface","type"],"default":"interface"},"naming_convention":{"type":"string","description":"Type-name casing: \"pascal\" or \"camel\". Default: \"pascal\".","enum":["pascal","camel"],"default":"pascal"},"make_optional":{"type":"boolean","description":"Mark every property optional with \"?\". Default: false.","default":false},"add_export":{"type":"boolean","description":"Prefix declarations with \"export\". Default: true.","default":true},"inline_nested_objects":{"type":"boolean","description":"Write nested objects inline instead of as separate declarations. Default: false.","default":false}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-url-params","name":"Json TO URL Params","description":"Convert a JSON object into a URL query string that starts with \"?\". Arrays repeat the key (or use key[] notation), nested objects are JSON-stringified, null values are skipped, and values are URL-encoded by default.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON object to convert (the root must be an object).","maxLength":1000000},"encode_values":{"type":"boolean","description":"URL-encode values with encodeURIComponent. Default: true.","default":true},"flatten_arrays":{"type":"boolean","description":"true: arrays repeat the key (tags=a&tags=b). false: use bracket notation (tags[]=a&tags[]=b). Default: true.","default":true}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-to-zod-schema","name":"Json TO ZOD Schema","description":"Generate a Zod validation schema (TypeScript source) from a JSON sample. Detects email, URL, UUID, and ISO date strings, marks integers with .int(), and emits the z.infer type.","category":"seo","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON sample to convert.","maxLength":1000000},"add_comments":{"type":"boolean","description":"Append a short comment after detected formats (e.g. \"// email format\"). Default: true.","default":true},"use_optional":{"type":"boolean","description":"Append .optional() to every object property. Default: false.","default":false},"export_type":{"type":"string","description":"How the schema is exported: \"const\" (no export), \"named\" (export const), or \"default\" (export default). Default: \"const\".","enum":["const","named","default"],"default":"const"}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-visualizer","name":"Json Visualizer","description":"Return a text tree outline, structure statistics, and JSONPath list for a JSON document. Stats count objects, arrays, strings, numbers, booleans, nulls, total keys, and max depth; paths are emitted as $.a.b[0] expressions for every object or array node.","category":"data","parameters":{"type":"object","properties":{"json":{"type":"string","description":"JSON document to analyze.","maxLength":2000000},"max_paths":{"type":"integer","description":"Maximum number of JSONPath entries to return (1-5000). Default: 500.","minimum":1,"maximum":5000,"default":500},"max_depth":{"type":"integer","description":"Maximum nesting depth shown in the outline (0-50). Default: 6.","minimum":0,"maximum":50,"default":6}},"required":["json"],"additionalProperties":false},"examples":[]},{"id":"json-yaml-converter","name":"Json Yaml Converter","description":"Convert JSON to YAML or YAML to JSON and return the converted text. json-to-yaml emits block-style YAML with the chosen indentation; yaml-to-json emits pretty-printed JSON. Parse errors report the line and column.","category":"data","parameters":{"type":"object","properties":{"input":{"type":"string","description":"The JSON or YAML text to convert.","maxLength":5000000},"mode":{"type":"string","description":"Conversion direction. Default: json-to-yaml.","enum":["json-to-yaml","yaml-to-json"],"default":"json-to-yaml"},"indent":{"type":"integer","description":"Indentation width for the output (1-8). Default: 2.","minimum":1,"maximum":8,"default":2}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"jwt-generator","name":"JWT Generator","description":"Generate a signed JWT (HS256, HS384, or HS512 via HMAC) and return the token plus the decoded header and payload. The payload contains sub, name, iat, exp, and any custom claims. Asymmetric algorithms (RS*/ES*) are not supported.","category":"security","parameters":{"type":"object","properties":{"secret":{"type":"string","description":"The HMAC secret used to sign the token.","maxLength":10000},"algorithm":{"type":"string","description":"Signing algorithm. Default: HS256.","enum":["HS256","HS384","HS512"],"default":"HS256"},"subject":{"type":"string","description":"The \"sub\" claim. Default: \"1234567890\".","maxLength":10000,"default":"1234567890"},"name":{"type":"string","description":"The \"name\" claim. Default: \"John Doe\".","maxLength":10000,"default":"John Doe"},"expires_in":{"type":"integer","description":"Seconds until expiry; exp = iat + expires_in. Default: 3600.","minimum":1,"maximum":315360000,"default":3600},"custom_claims":{"type":"object","description":"Extra claims merged into the payload. An object, or a JSON object string."},"issued_at":{"type":"integer","description":"Unix timestamp (seconds) for the \"iat\" claim. Default: now.","minimum":0}},"required":["secret"],"additionalProperties":false},"examples":[]},{"id":"jwt-security-validator","name":"JWT Security Validator","description":"Decode a JWT and return a list of security checks (algorithm strength, expiration, not-before, issued-at, issuer, audience, subject, signature presence) plus an overall valid flag. Does NOT verify the signature — it only inspects claims and header fields.","category":"security","parameters":{"type":"object","properties":{"token":{"type":"string","description":"The JWT to inspect (three dot-separated base64url segments).","maxLength":100000},"now":{"type":"integer","description":"Unix timestamp (seconds) to evaluate time claims against. Default: current time.","minimum":0}},"required":["token"],"additionalProperties":false},"examples":[]},{"id":"keyboard-shortcut-finder","name":"Keyboard Shortcut Finder","description":"Return keyboard shortcuts (Mac and Windows keys) that match a search query, app, or category. Covers VS Code, Chrome, Excel, Photoshop, Figma, Slack, macOS, Windows, Word, and Terminal. Call with no filters to list the apps and categories.","category":"productivity","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Action or keyword to search for, e.g. \"copy\", \"undo\", \"zoom in\", \"command palette\".","maxLength":200},"app":{"type":"string","description":"Restrict to one app.","enum":["VS Code","Chrome","Excel","Photoshop","Figma","Slack","macOS","Windows","Word","Terminal"]},"category":{"type":"string","description":"Restrict to one category.","enum":["General","Navigation","Editing","File Management","Selection","View","Debug","Terminal"]},"limit":{"type":"integer","description":"Maximum number of shortcuts to return (1-500). Default 50.","minimum":1,"maximum":500,"default":50}},"additionalProperties":false},"examples":[]},{"id":"keyword-density-checker","name":"Keyword Density Checker","description":"Analyze keyword density in text and return word/sentence/paragraph counts, the top 1-gram, 2-gram, and 3-gram phrases with counts and density percentages, and (optionally) the count, density, and over/good/low status of a target keyword. Densities are percentages rounded to 2 decimals.","category":"seo","parameters":{"type":"object","properties":{"content":{"type":"string","description":"The text (or HTML, with strip_html) to analyze.","maxLength":2000000},"target_keyword":{"type":"string","description":"Optional keyword or phrase to measure. Good density is 0.5% to 3%.","maxLength":200},"strip_html":{"type":"boolean","description":"Remove HTML tags before analysis. Default false.","default":false},"exclude_stop_words":{"type":"boolean","description":"Skip n-grams made only of common stop words. Default true.","default":true},"limit":{"type":"integer","description":"Maximum phrases per n-gram table. Default 20.","minimum":1,"maximum":200,"default":20}},"required":["content"],"additionalProperties":false},"examples":[]},{"id":"kktc-exchange-rates","name":"Kktc Exchange Rates","description":"Return live buy and sell exchange rates (against Turkish lira) from Northern Cyprus (KKTC) exchange offices and banks, per currency, with the best buy and best sell office. Optionally filter to one currency code.","category":"finance","parameters":{"type":"object","properties":{"currency":{"type":"string","description":"Optional ISO currency code to filter, e.g. \"GBP\", \"USD\", \"EUR\". Omit for all currencies.","maxLength":3}},"additionalProperties":false},"examples":[]},{"id":"lesson-plan-template","name":"Lesson Plan Template","description":"Fill a structured lesson plan template (header, learning objectives, materials, timed activities, assessment, homework, notes) and return the normalized plan object, a Markdown document, and a standalone HTML document. Warns when the activity minutes do not add up to the lesson duration.","category":"education","parameters":{"type":"object","properties":{"lesson_title":{"type":"string","description":"Lesson title. Default \"Untitled Lesson\".","maxLength":300},"teacher_name":{"type":"string","description":"Teacher name.","maxLength":200},"subject":{"type":"string","description":"Subject.","maxLength":200},"grade_level":{"type":"string","description":"Grade level or class.","maxLength":100},"date":{"type":"string","description":"Lesson date (any text, e.g. 2026-09-01).","maxLength":40},"duration":{"type":"integer","description":"Lesson duration in minutes. Default 45.","minimum":1,"maximum":1440,"default":45},"objectives":{"type":"array","description":"Learning objectives.","items":{"type":"string","description":"One objective."}},"materials":{"type":"array","description":"Materials and resources.","items":{"type":"string","description":"One material."}},"activities":{"type":"array","description":"Timed activities: { time (minutes), description }.","items":{"type":"object","description":"{ time: number, description: string }"}},"assessment":{"type":"string","description":"Assessment paragraph.","maxLength":5000},"homework":{"type":"string","description":"Homework or extension paragraph.","maxLength":5000},"notes":{"type":"string","description":"Teacher notes.","maxLength":5000}},"additionalProperties":false},"examples":[]},{"id":"line-prefix-suffix","name":"Line Prefix Suffix","description":"Add a prefix, a suffix, or line numbers to every line of a text. Numbering starts at any value, steps by any amount, pads with zeros on request, and can skip blank lines.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"Newline-separated input.","maxLength":10000000},"prefix":{"type":"string","description":"Text to put at the start of each line. Default: none.","maxLength":1000,"default":""},"suffix":{"type":"string","description":"Text to put at the end of each line. Default: none.","maxLength":1000,"default":""},"number_lines":{"type":"boolean","description":"Put a line number before each line. Default: false.","default":false},"start_at":{"type":"integer","description":"First line number. Default: 1.","minimum":-1000000,"maximum":1000000000,"default":1},"step":{"type":"integer","description":"Increment between line numbers. Default: 1.","minimum":1,"maximum":1000000,"default":1},"number_format":{"type":"string","description":"Template for the number with {n} as the placeholder. Default: \"{n}. \"","maxLength":100,"default":"{n}. "},"pad_numbers":{"type":"boolean","description":"Pad numbers with leading zeros to the width of the last number. Default: false.","default":false},"skip_blank":{"type":"boolean","description":"Leave lines that hold only whitespace unchanged and unnumbered. Default: false.","default":false}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"linkedin-post-generator","name":"Linkedin Post Generator","description":"Assemble a LinkedIn post from a hook, a body, a call to action and hashtags, or from one of seven built-in templates (thought leadership, story, tips, announcement, question, celebration, insight). Returns the post text, its length against the 3,000-character limit, and any template placeholders left unfilled. No AI is used.","category":"generators","parameters":{"type":"object","properties":{"post_type":{"type":"string","description":"Template family. Default \"thought-leadership\". Only used when use_template is true.","enum":["thought-leadership","story","tips","announcement","question","celebration","insight"],"default":"thought-leadership"},"hook":{"type":"string","description":"Opening line that appears in the feed preview.","maxLength":10000},"body":{"type":"string","description":"Main content. Use short paragraphs.","maxLength":10000},"cta":{"type":"string","description":"Call to action at the end of the post.","maxLength":10000},"hashtags":{"type":"string","description":"Hashtags placed after the call to action, e.g. \"#RemoteWork #Career\".","maxLength":1000},"include_line_breaks":{"type":"boolean","description":"Separate the sections with a blank line (true) or a single newline (false). Default true.","default":true},"use_template":{"type":"boolean","description":"Fill any empty hook, body or cta from the post_type template. Default false.","default":false},"template_values":{"type":"object","description":"Values for template placeholders, e.g. {\"topic\": \"remote work\", \"years\": \"5\"}. Unknown placeholders stay as {name}."}},"additionalProperties":false},"examples":[]},{"id":"llm-requirements-calculator","name":"LLM Requirements Calculator","description":"Estimate the VRAM, system RAM, and disk space needed to run an open-weight LLM locally, and which common GPUs and Macs it fits on. Covers Llama, Mistral, Qwen, DeepSeek, Gemma, Phi, Code Llama, Command R, Yi, SmolLM, StableLM, Grok, Falcon, and MiniCPM across FP32 through Q2_K quantization.","category":"calculators","parameters":{"type":"object","properties":{"model":{"type":"string","description":"Model id (or exact display name). One of: llama-3.2-1b, llama-3.2-3b, llama-3.1-8b, llama-3.1-70b, llama-3.1-405b, mistral-7b, mistral-nemo, mixtral-8x7b, mixtral-8x22b, mistral-small-3, qwen-2.5-0.5b, qwen-2.5-1.5b, qwen-2.5-3b, qwen-2.5-7b, qwen-2.5-14b, qwen-2.5-32b, qwen-2.5-72b, qwen-2.5-coder-7b, qwen-2.5-coder-32b, qwen-qwq-32b, deepseek-r1-distill-7b, deepseek-r1-distill-14b, deepseek-r1-distill-32b, deepseek-r1-distill-70b, deepseek-v3, deepseek-r1, gemma-2-2b, gemma-2-9b, gemma-2-27b, phi-3-mini, phi-3-medium, phi-4, codellama-7b, codellama-13b, codellama-34b, codellama-70b, qwen-3-0.6b, qwen-3-1.7b, qwen-3-4b, qwen-3-8b, qwen-3-14b, qwen-3-32b, qwen-3-235b, command-r-35b, command-r-plus, yi-1.5-6b, yi-1.5-9b, yi-1.5-34b, smollm-2-135m, smollm-2-360m, smollm-2-1.7b, stablelm-2-1.6b, stablelm-2-12b, grok-1, falcon-3-1b, falcon-3-3b, falcon-3-7b, falcon-3-10b, minicpm-3-4b.","enum":["llama-3.2-1b","llama-3.2-3b","llama-3.1-8b","llama-3.1-70b","llama-3.1-405b","mistral-7b","mistral-nemo","mixtral-8x7b","mixtral-8x22b","mistral-small-3","qwen-2.5-0.5b","qwen-2.5-1.5b","qwen-2.5-3b","qwen-2.5-7b","qwen-2.5-14b","qwen-2.5-32b","qwen-2.5-72b","qwen-2.5-coder-7b","qwen-2.5-coder-32b","qwen-qwq-32b","deepseek-r1-distill-7b","deepseek-r1-distill-14b","deepseek-r1-distill-32b","deepseek-r1-distill-70b","deepseek-v3","deepseek-r1","gemma-2-2b","gemma-2-9b","gemma-2-27b","phi-3-mini","phi-3-medium","phi-4","codellama-7b","codellama-13b","codellama-34b","codellama-70b","qwen-3-0.6b","qwen-3-1.7b","qwen-3-4b","qwen-3-8b","qwen-3-14b","qwen-3-32b","qwen-3-235b","command-r-35b","command-r-plus","yi-1.5-6b","yi-1.5-9b","yi-1.5-34b","smollm-2-135m","smollm-2-360m","smollm-2-1.7b","stablelm-2-1.6b","stablelm-2-12b","grok-1","falcon-3-1b","falcon-3-3b","falcon-3-7b","falcon-3-10b","minicpm-3-4b"],"maxLength":100},"quantization":{"type":"string","description":"Quantization id. Default: \"q4_k_m\".","enum":["fp32","fp16","q8_0","q6_k","q5_k_m","q4_k_m","q3_k_m","q2_k"],"default":"q4_k_m"},"context_length":{"type":"integer","description":"Context window in tokens (512-131072). Default: 8192.","minimum":512,"maximum":131072,"default":8192},"batch_size":{"type":"integer","description":"Concurrent sequences (1-64). Default: 1.","minimum":1,"maximum":64,"default":1}},"required":["model"],"additionalProperties":false},"examples":[]},{"id":"macro-calculator","name":"Macro Calculator","description":"Calculate daily calorie needs and a macronutrient split (protein, carbs, fat in grams and kcal) for weight loss, maintenance, or muscle gain. Uses Mifflin-St Jeor BMR, an activity multiplier, a +/-500 kcal goal adjustment, and goal-specific ratios.","category":"calculators","parameters":{"type":"object","properties":{"gender":{"type":"string","description":"Biological sex used by the BMR equation.","enum":["male","female"]},"age":{"type":"integer","description":"Age in years (1-120).","minimum":1,"maximum":120},"weight":{"type":"number","description":"Body weight in kg (metric) or lbs (imperial)."},"height":{"type":"number","description":"Height in cm (metric) or inches (imperial)."},"unit_system":{"type":"string","description":"Unit system for weight and height.","enum":["metric","imperial"],"default":"metric"},"activity_level":{"type":"string","description":"Activity level: sedentary 1.2, light 1.375, moderate 1.55, active 1.725, very_active 1.9.","enum":["sedentary","light","moderate","active","very_active"],"default":"moderate"},"goal":{"type":"string","description":"lose = -500 kcal with 35/35/30 split, maintain = 30/40/30, gain = +500 kcal with 25/50/25 (protein/carbs/fat).","enum":["lose","maintain","gain"],"default":"maintain"}},"required":["gender","age","weight","height"],"additionalProperties":false},"examples":[]},{"id":"markdown-table-generator","name":"Markdown Table Generator","description":"Build a GitHub-flavoured Markdown table and return the markdown string. Give headers plus rows (arrays of cell values) and optional per-column alignments (left, center, right), or import from CSV, TSV, or a JSON array of objects. Pipe characters in cells are escaped.","category":"data","parameters":{"type":"object","properties":{"headers":{"type":"array","description":"Column header labels.","items":{"type":"string","description":"One header label."}},"rows":{"type":"array","description":"Table rows; each row is an array of cell values in header order. Short rows are padded, extra cells dropped.","items":{"type":"array","description":"One row of cell values."}},"alignments":{"type":"array","description":"Per-column alignment: left, center, or right. Default: left for every column.","items":{"type":"string","description":"left, center, or right.","enum":["left","center","right"]}},"import_text":{"type":"string","description":"Alternative input: CSV/TSV text (first line = headers) or a JSON array of objects. Used when headers is not given.","maxLength":2000000},"import_format":{"type":"string","description":"Format of import_text. Default: csv.","enum":["csv","tsv","json"],"default":"csv"}},"additionalProperties":false},"examples":[]},{"id":"markdown-table-parse","name":"Markdown Table Parse","description":"Parse a GitHub-flavored Markdown table into structured rows: headers, column alignments, cell rows, and one record object per row. This is the data step of the Markdown Table to Image tool; the PNG rendering stays in the browser.","category":"data","parameters":{"type":"object","properties":{"markdown":{"type":"string","description":"Markdown table text: a header row, a divider row (---, :---:, ---:), then data rows.","maxLength":500000}},"required":["markdown"],"additionalProperties":false},"examples":[]},{"id":"math-formula-templates","name":"Math Formula Templates","description":"Return LaTeX source for well-known math and physics formulas from the built-in template library of the math expression generator page (40+ formulas across algebra, calculus, trigonometry, linear algebra, statistics, physics, and Greek symbols). Filter by category or by a search term over names and LaTeX. This tool returns LaTeX strings only; it does not render them.","category":"generators","parameters":{"type":"object","properties":{"category":{"type":"string","description":"Return only this category. Default: every category.","enum":["Algebra","Calculus","Trigonometry","Linear Algebra","Statistics & Probability","Physics","Greek Letters & Symbols"]},"search":{"type":"string","description":"Case-insensitive text to match in the formula name or its LaTeX, e.g. \"integral\" or \"\\sum\".","maxLength":200}},"additionalProperties":false},"examples":[]},{"id":"meta-tag-generator","name":"Meta TAG Generator","description":"Generate HTML <head> meta tags (title, description, keywords, robots, canonical, Open Graph, Twitter Card, viewport, charset, language) and return the HTML block plus the list of tags. Open Graph and Twitter values fall back to the basic title/description/canonical when left empty.","category":"seo","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Page title (<title> and fallback for og:title).","maxLength":500},"description":{"type":"string","description":"Meta description (fallback for og:description).","maxLength":2000},"keywords":{"type":"string","description":"Comma-separated keywords.","maxLength":1000},"author":{"type":"string","description":"Author name.","maxLength":200},"robots":{"type":"string","description":"Robots directive. Default \"index, follow\".","enum":["index, follow","index, nofollow","noindex, follow","noindex, nofollow"],"default":"index, follow"},"canonical":{"type":"string","description":"Canonical URL (also fallback for og:url and twitter:url).","maxLength":2000},"og_title":{"type":"string","description":"Open Graph title. Defaults to title.","maxLength":500},"og_description":{"type":"string","description":"Open Graph description. Defaults to description.","maxLength":2000},"og_image":{"type":"string","description":"Open Graph image URL (also fallback for twitter:image).","maxLength":2000},"og_type":{"type":"string","description":"Open Graph type. Default \"website\".","enum":["website","article","product","profile","video.movie","music.song"],"default":"website"},"og_url":{"type":"string","description":"Open Graph URL. Defaults to canonical.","maxLength":2000},"twitter_card":{"type":"string","description":"Twitter card type. Default \"summary_large_image\".","enum":["summary","summary_large_image","app","player"],"default":"summary_large_image"},"twitter_title":{"type":"string","description":"Twitter title. Defaults to og_title.","maxLength":500},"twitter_description":{"type":"string","description":"Twitter description. Defaults to og_description.","maxLength":2000},"twitter_image":{"type":"string","description":"Twitter image URL. Defaults to og_image.","maxLength":2000},"twitter_site":{"type":"string","description":"Twitter @handle of the site.","maxLength":100},"viewport":{"type":"string","description":"Viewport content. Default \"width=device-width, initial-scale=1.0\".","maxLength":200,"default":"width=device-width, initial-scale=1.0"},"charset":{"type":"string","description":"Character set. Default \"UTF-8\".","maxLength":40,"default":"UTF-8"},"language":{"type":"string","description":"Content language code. Default \"en\".","maxLength":20,"default":"en"}},"additionalProperties":false},"examples":[]},{"id":"mime-type-finder","name":"Mime Type Finder","description":"Return MIME types with their file extensions and descriptions. Search by extension (\".png\" or \"png\"), by MIME type (\"application/json\") or by keyword (\"spreadsheet\"); filter by category.","category":"network","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Extension, MIME type or keyword. Empty returns the whole table.","maxLength":100},"category":{"type":"string","description":"Limit results to one category.","enum":["all","Application","Audio","Font","Image","Text","Video","Multipart","Message"],"default":"all"},"limit":{"type":"integer","description":"Maximum number of results (1-200).","minimum":1,"maximum":200,"default":10}},"additionalProperties":false},"examples":[]},{"id":"mock-json-generator","name":"Mock Json Generator","description":"Generate an array of mock JSON records from a list of field definitions. Field types include uuid, name, firstName, lastName, email, phone, address, city, country, zipCode, company, jobTitle, username, password, url, avatar, boolean, integer, float, price, date, datetime, paragraph, sentence, word, and color. Output is random on every call.","category":"data","parameters":{"type":"object","properties":{"fields":{"type":"array","description":"Field definitions: [{ name, type }]. type is one of: uuid, name, firstName, lastName, email, phone, address, city, country, zipCode, company, jobTitle, username, password, url, avatar, boolean, integer, float, price, date, datetime, paragraph, sentence, word, color.","items":{"type":"object","description":"A field: { name: string, type: string }."}},"count":{"type":"integer","description":"Number of records to generate (1-1000). Default: 5.","minimum":1,"maximum":1000,"default":5}},"required":["fields"],"additionalProperties":false},"examples":[]},{"id":"net-worth-calculator","name":"NET Worth Calculator","description":"Return net worth (total assets minus total liabilities), the debt-to-asset ratio in percent, and subtotals per category. Asset fields: checking, savings, money_market, cash_other, stocks, bonds, mutual_funds, crypto, retirement_401k, ira, pension, primary_home, other_real_estate, vehicles, personal_property. Liability fields: mortgage, home_equity, auto_loan, credit_cards, student_loans, personal_loans, medical_debt, other_debt.","category":"finance","parameters":{"type":"object","properties":{"assets":{"type":"object","description":"Object of asset field → amount. Fields: checking, savings, money_market, cash_other, stocks, bonds, mutual_funds, crypto, retirement_401k, ira, pension, primary_home, other_real_estate, vehicles, personal_property. Missing fields count as 0."},"liabilities":{"type":"object","description":"Object of liability field → amount. Fields: mortgage, home_equity, auto_loan, credit_cards, student_loans, personal_loans, medical_debt, other_debt. Missing fields count as 0."}},"required":[],"additionalProperties":false},"examples":[]},{"id":"one-rep-max-calculator","name":"ONE REP MAX Calculator","description":"Estimate a one-rep max (1RM) from a weight lifted for a number of reps, using Brzycki, Epley, Lander, Lombardi, Mayhew, O'Conner, and Wathen formulas. Returns the chosen formula result, every formula result, and a training-weight table (100% to 60%) with rep ranges and zones.","category":"calculators","parameters":{"type":"object","properties":{"weight":{"type":"number","description":"Weight lifted, in the chosen unit."},"reps":{"type":"integer","description":"Reps performed with that weight (1-30).","minimum":1,"maximum":30},"unit":{"type":"string","description":"Weight unit, echoed back in the result.","enum":["kg","lbs"],"default":"kg"},"formula":{"type":"string","description":"Formula used for the headline one_rep_max.","enum":["brzycki","epley","lander","lombardi","mayhew","oconner","wathen"],"default":"brzycki"}},"required":["weight","reps"],"additionalProperties":false},"examples":[]},{"id":"open-graph-preview","name":"Open Graph Preview","description":"Extract Open Graph and Twitter Card tags from an HTML document (or take them as fields), and return the parsed values, validation issues (missing or too-long title/description/image/url/card), and regenerated <meta> tags. Does not fetch URLs — pass the page HTML.","category":"seo","parameters":{"type":"object","properties":{"html":{"type":"string","description":"HTML source to parse for og:* and twitter:* meta tags. Optional when tag values are given directly.","maxLength":2000000},"og_title":{"type":"string","description":"og:title value (overrides the parsed value).","maxLength":1000},"og_description":{"type":"string","description":"og:description value.","maxLength":5000},"og_image":{"type":"string","description":"og:image URL.","maxLength":2000},"og_url":{"type":"string","description":"og:url value.","maxLength":2000},"og_type":{"type":"string","description":"og:type value. Default \"website\".","enum":["website","article","product","profile","video.movie","video.episode","music.song","book"]},"og_site_name":{"type":"string","description":"og:site_name value.","maxLength":500},"twitter_card":{"type":"string","description":"twitter:card value. Default \"summary_large_image\".","enum":["summary","summary_large_image","app","player"]},"twitter_title":{"type":"string","description":"twitter:title value.","maxLength":1000},"twitter_description":{"type":"string","description":"twitter:description value.","maxLength":5000},"twitter_image":{"type":"string","description":"twitter:image URL.","maxLength":2000}},"additionalProperties":false},"examples":[]},{"id":"openapi-validator","name":"Openapi Validator","description":"Validate an OpenAPI 3.x (or Swagger 2.0) document given as JSON or YAML and return a report with errors, warnings, and summary info (title, version, path count, operation count). Errors cover a missing version field, missing info.title or info.version, a missing paths object, paths that do not start with \"/\", and operations without responses. Warnings cover missing operationId, Swagger 2.0 input, non-3.x versions, and component schemas with no type, $ref, or composition keyword.","category":"validation","parameters":{"type":"object","properties":{"spec":{"type":"string","description":"The OpenAPI or Swagger document as JSON or YAML text.","maxLength":10000000}},"required":["spec"],"additionalProperties":false},"examples":[]},{"id":"password-breach-checker","name":"Password Breach Checker","description":"Return whether a password appears in known data breaches and how many times, using the Have I Been Pwned k-anonymity range API. Only the first 5 characters of the SHA-1 hash are sent upstream.","category":"security","parameters":{"type":"object","properties":{"password":{"type":"string","description":"The password to check. It is hashed locally and never transmitted.","minLength":1,"maxLength":1024}},"required":["password"],"additionalProperties":false},"examples":[]},{"id":"password-pattern-validator","name":"Password Pattern Validator","description":"Validate a password against configurable rules and return each check (pass/fail with severity), a 0-100 score, and a strength label. Required rules: minimum length plus optional uppercase, lowercase, digit, and special-character requirements. Recommended rules: no common passwords, no keyboard patterns, no 3+ repeated characters, no sequential runs. Also reports an entropy estimate.","category":"security","parameters":{"type":"object","properties":{"password":{"type":"string","description":"The password to validate.","maxLength":1024},"min_length":{"type":"integer","description":"Minimum length. Default: 8.","minimum":1,"maximum":256,"default":8},"require_uppercase":{"type":"boolean","description":"Require at least one uppercase letter. Default: true.","default":true},"require_lowercase":{"type":"boolean","description":"Require at least one lowercase letter. Default: true.","default":true},"require_number":{"type":"boolean","description":"Require at least one digit. Default: true.","default":true},"require_special":{"type":"boolean","description":"Require at least one special character. Default: true.","default":true}},"required":["password"],"additionalProperties":false},"examples":[]},{"id":"pdf-delete-pages","name":"PDF Delete Pages","description":"Remove pages from a PDF and return the rest in their original order. Pages are given as 1-based numbers and ranges, such as \"2,5-7\". Input and output are base64-encoded PDFs. Removing every page is refused rather than returning an empty document.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to remove pages from.","maxLength":20000000},"pages":{"type":"string","description":"Pages to remove, 1-based: \"2,5-7\".","maxLength":2000}},"required":["pdf","pages"],"additionalProperties":false},"examples":[]},{"id":"pdf-merge","name":"PDF Merge","description":"Combine several PDFs into one, in the order given. Each input is a base64-encoded PDF and the result is a base64-encoded PDF. Pages are copied as they are — nothing is re-rendered, re-encoded or watermarked. An encrypted PDF must be unlocked first.","category":"documents","parameters":{"type":"object","properties":{"pdfs":{"type":"array","description":"Base64-encoded PDFs, in the order they should appear. At least two.","items":{"type":"string","description":"One base64-encoded PDF."}}},"required":["pdfs"],"additionalProperties":false},"examples":[]},{"id":"pdf-organize","name":"PDF Organize","description":"Reorder the pages of a PDF. The order is a 1-based list such as \"3,1,2\" or \"5-1\" for a reversed document, and the result contains exactly the pages named, in that order — so a short list also drops the pages it leaves out. Input and output are base64-encoded PDFs.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to reorder.","maxLength":20000000},"order":{"type":"string","description":"The new page order, 1-based: \"3,1,2\". A descending range such as \"5-1\" reverses.","maxLength":4000}},"required":["pdf","order"],"additionalProperties":false},"examples":[]},{"id":"pdf-page-numbers","name":"PDF Page Numbers","description":"Add page numbers to a PDF. The format string uses {n} for the page number and {total} for the count, so \"Page {n} of {total}\" and a bare \"{n}\" both work. Numbering can start at any value and can skip the first page, which is what a title page usually wants. Input and output are base64-encoded PDFs.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to number.","maxLength":20000000},"position":{"type":"string","description":"Where the number sits. Default: bottom-center.","enum":["bottom-center","bottom-right","bottom-left","top-center","top-right","top-left"],"default":"bottom-center"},"start":{"type":"integer","description":"The number the first numbered page gets. Default: 1.","minimum":0,"maximum":100000,"default":1},"format":{"type":"string","description":"Template with {n} and {total}. Default: \"{n}\".","maxLength":100,"default":"{n}"},"size":{"type":"number","description":"Font size in points. Default: 10.","minimum":4,"maximum":72,"default":10},"margin":{"type":"number","description":"Distance from the page edge in points. Default: 28.","minimum":0,"maximum":200,"default":28},"skip_first":{"type":"boolean","description":"Leave page 1 unnumbered, for a title page. Default: false.","default":false}},"required":["pdf"],"additionalProperties":false},"examples":[]},{"id":"pdf-rotate","name":"PDF Rotate","description":"Rotate pages of a PDF by 90, 180 or 270 degrees clockwise, or the negative of those for anticlockwise. Rotation is added to whatever a page already carries, so rotating a page twice by 90 leaves it at 180. Omit the page list to rotate every page. Input and output are base64-encoded PDFs.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to rotate.","maxLength":20000000},"degrees":{"type":"integer","description":"Clockwise rotation to add: 90, 180, 270, or a negative for anticlockwise.","enum":[90,180,270,-90,-180,-270]},"pages":{"type":"string","description":"Pages to rotate, 1-based: \"1,3,5-8\". Default: every page.","maxLength":2000}},"required":["pdf","degrees"],"additionalProperties":false},"examples":[]},{"id":"pdf-split","name":"PDF Split","description":"Take a selection of pages out of a PDF into a new one. Pages are given as 1-based numbers and ranges, such as \"1,3,5-8\", and come out in the order written. Input and output are base64-encoded PDFs. Pages are copied as they are — nothing is re-rendered or re-encoded.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to take pages from.","maxLength":20000000},"pages":{"type":"string","description":"Pages to keep, 1-based: \"1,3,5-8\". Order is preserved.","maxLength":2000}},"required":["pdf","pages"],"additionalProperties":false},"examples":[]},{"id":"pdf-watermark","name":"PDF Watermark","description":"Stamp text across the pages of a PDF — CONFIDENTIAL, DRAFT, a company name. The text is drawn centred and rotated over the existing content at the opacity you choose, so the page underneath stays readable. Input and output are base64-encoded PDFs. This is a visual mark, not a security control: anyone can remove it with the same kind of tool.","category":"documents","parameters":{"type":"object","properties":{"pdf":{"type":"string","description":"The base64-encoded PDF to stamp.","maxLength":20000000},"text":{"type":"string","description":"The watermark text.","maxLength":200},"opacity":{"type":"number","description":" 0 is invisible, 1 is solid. Default: 0.15.","minimum":0,"maximum":1,"default":0.15},"rotation":{"type":"integer","description":"Degrees anticlockwise. Default: 45.","minimum":-360,"maximum":360,"default":45},"size":{"type":"number","description":"Font size in points. Default: 0, meaning fit to the page width.","minimum":0,"maximum":400,"default":0},"color":{"type":"string","description":"Hex colour such as #808080. Default: #808080.","maxLength":7,"default":"#808080"},"pages":{"type":"string","description":"Pages to stamp, 1-based: \"1,3,5-8\". Default: every page.","maxLength":2000}},"required":["pdf","text"],"additionalProperties":false},"examples":[]},{"id":"pem-decoder","name":"PEM Decoder","description":"Parse PEM certificates, CSRs, and keys in the browser-equivalent decoder. Returns type, DER length, subject, issuer, dates, SAN, and algorithm. Private key bits are not returned.","category":"encoding","parameters":{"type":"object","properties":{"pem":{"type":"string","description":"One or more PEM blocks including BEGIN and END lines.","maxLength":16000}},"required":["pem"],"additionalProperties":false},"examples":[]},{"id":"pgp-encryption-tool","name":"PGP Encryption Tool","description":"Encrypt or decrypt a short message with RSA-OAEP (SHA-256) PEM keys, or generate a new RSA key pair. Returns the armoured ciphertext block, the decrypted plaintext, or the PEM public/private key pair. Note: this uses plain RSA-OAEP with SPKI/PKCS#8 PEM keys, not the OpenPGP message format. Messages are limited to the RSA block size (190 bytes for 2048-bit keys).","category":"security","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"Operation: encrypt, decrypt, or generate.","enum":["encrypt","decrypt","generate"]},"text":{"type":"string","description":"encrypt: the plaintext message. decrypt: the \"-----BEGIN ENCRYPTED MESSAGE-----\" block (or raw base64).","maxLength":100000},"public_key":{"type":"string","description":"encrypt: the recipient PEM public key (SPKI, \"-----BEGIN PUBLIC KEY-----\").","maxLength":20000},"private_key":{"type":"string","description":"decrypt: the PEM private key (PKCS#8, a BEGIN PRIVATE KEY block).","maxLength":20000},"modulus_length":{"type":"integer","description":"generate: RSA key size in bits. Default: 2048.","enum":[2048,3072,4096],"default":2048}},"required":["mode"],"additionalProperties":false},"examples":[]},{"id":"placeholder-image-generator","name":"Placeholder Image Generator","description":"Generate a placeholder image as an SVG string: a solid background with centred bold text (the dimensions by default, or custom text) and a thin border. Returns the SVG, a data: URL for it, and the computed font size. Sizes up to 4000x4000; the page's presets are available by name.","category":"generators","parameters":{"type":"object","properties":{"width":{"type":"integer","description":"Image width in pixels (1-4000). Default 800.","minimum":1,"maximum":4000,"default":800},"height":{"type":"integer","description":"Image height in pixels (1-4000). Default 600.","minimum":1,"maximum":4000,"default":600},"preset":{"type":"string","description":"A named size preset. When given, it replaces width and height.","enum":["Square","HD 720p","Full HD","Instagram Post","Instagram Story","Facebook Cover","Twitter Post","YouTube Thumbnail","Banner (728x90)","Leaderboard (970x250)"]},"bg_color":{"type":"string","description":"Background colour as #rgb or #rrggbb. Default \"#e2e8f0\".","default":"#e2e8f0"},"text_color":{"type":"string","description":"Text and border colour as #rgb or #rrggbb. Default \"#64748b\".","default":"#64748b"},"text":{"type":"string","description":"Custom text. Default: \"<width> × <height>\".","maxLength":200}},"additionalProperties":false},"examples":[]},{"id":"port-reference-guide","name":"Port Reference Guide","description":"Return well-known network ports that match a port number, service name, protocol, or category, with a security note (safe / caution / insecure) for each. Call with no filters to list every port in the reference table.","category":"network","parameters":{"type":"object","properties":{"query":{"type":"string","description":"Free-text search over port number, service, description, and category, e.g. \"ssh\", \"443\", \"database\".","maxLength":100},"port":{"type":"integer","description":"Exact port number to look up (0-65535).","minimum":0,"maximum":65535},"protocol":{"type":"string","description":"Restrict to one transport protocol.","enum":["TCP","UDP","TCP/UDP"]},"category":{"type":"string","description":"Restrict to one category.","enum":["Web","Email","File Transfer","Remote Access","DNS & Network","Database","Security & VPN","Messaging","Development","Container & Orchestration","Media","Proxy & Load Balancing","Monitoring","CI/CD","Message Queues"]},"limit":{"type":"integer","description":"Maximum number of entries to return (1-200). Default 50.","minimum":1,"maximum":200,"default":50}},"additionalProperties":false},"examples":[]},{"id":"postman-to-curl","name":"Postman TO Curl","description":"Convert a Postman collection (v2.x JSON) into curl commands, one per request, and return them as a script plus a per-request list. Folders are walked recursively; a single request object is accepted too. Each command carries the method, resolved URL (raw or host/path/query), enabled headers, bearer or basic auth, and raw, urlencoded, or form-data bodies. Output uses short flags by default; long_form switches to --request, --header, --user, --data, --form.","category":"network","parameters":{"type":"object","properties":{"collection":{"type":"string","description":"Postman collection JSON text (export format v2.0 or v2.1), or a single request object.","maxLength":10000000},"include_headers":{"type":"boolean","description":"Emit -H for each enabled header. Default: true.","default":true},"long_form":{"type":"boolean","description":"Use long flags (--request, --header, --user, --data, --form). Default: false.","default":false}},"required":["collection"],"additionalProperties":false},"examples":[]},{"id":"privacy-policy-checker","name":"Privacy Policy Checker","description":"Check a privacy policy text for 24 expected disclosures and return a 0-100 completeness score, each check with found/missing and severity, up to 5 warnings for missing critical elements, and a one-line summary. Keyword/regex based — no legal advice.","category":"developer","parameters":{"type":"object","properties":{"policy_text":{"type":"string","description":"The full privacy policy text to analyze.","maxLength":2000000}},"required":["policy_text"],"additionalProperties":false},"examples":[]},{"id":"privacy-policy-generator","name":"Privacy Policy Generator","description":"Generate a privacy policy in Markdown from a short questionnaire: what personal data you collect (name, email, phone, address, payment, usage data, cookies, location), which third parties you use (analytics, ads, payment processor, data sharing), and which regimes you address (GDPR, CCPA, COPPA), plus data deletion/export rights and a retention period. Returns the markdown, its section headings, and a word count. Every argument is optional; unanswered fields use the page defaults and missing company details become [placeholders].","category":"text","parameters":{"type":"object","properties":{"company_name":{"type":"string","description":"Legal or trading name shown in the policy. Default: \"[Company Name]\".","maxLength":200},"website_url":{"type":"string","description":"Website the policy applies to. Default: \"[Website URL]\".","maxLength":2048},"contact_email":{"type":"string","description":"Contact email for privacy requests. Default: \"[Contact Email]\".","maxLength":254},"effective_date":{"type":"string","description":"Effective date as YYYY-MM-DD. Default: today (UTC).","maxLength":10},"collects_name":{"type":"boolean","description":"You collect the user's name. Default true.","default":true},"collects_email":{"type":"boolean","description":"You collect email addresses. Default true.","default":true},"collects_phone":{"type":"boolean","description":"You collect phone numbers. Default false.","default":false},"collects_address":{"type":"boolean","description":"You collect postal addresses. Default false.","default":false},"collects_payment":{"type":"boolean","description":"You collect payment details. Default false.","default":false},"collects_usage_data":{"type":"boolean","description":"You collect usage data (IP, browser, pages visited). Default true.","default":true},"collects_cookies":{"type":"boolean","description":"You use cookies and tracking technologies. Default true.","default":true},"collects_location":{"type":"boolean","description":"You collect location data. Default false.","default":false},"uses_analytics":{"type":"boolean","description":"You use an analytics service. Default true.","default":true},"analytics_provider":{"type":"string","description":"Analytics provider named in the policy. Default \"google\".","enum":["google","plausible","matomo","other"],"default":"google"},"uses_ads":{"type":"boolean","description":"You work with advertising partners. Default false.","default":false},"uses_payment_processor":{"type":"boolean","description":"You use a third-party payment processor. Default false.","default":false},"payment_processor":{"type":"string","description":"Payment processor named in the policy. Default \"stripe\".","enum":["stripe","paypal","square","other"],"default":"stripe"},"share_with_third_parties":{"type":"boolean","description":"You share data with third-party service providers. Default false.","default":false},"gdpr_compliant":{"type":"boolean","description":"Include the GDPR rights section. Default false.","default":false},"ccpa_compliant":{"type":"boolean","description":"Include the CCPA rights section. Default false.","default":false},"coppa_compliant":{"type":"boolean","description":"Include the COPPA children's privacy section. Default false.","default":false},"allows_data_deletion":{"type":"boolean","description":"Users can request deletion of their data. Default true.","default":true},"allows_data_export":{"type":"boolean","description":"Users can request an export of their data. Default true.","default":true},"has_data_retention":{"type":"boolean","description":"Include the data retention section. Default true.","default":true},"retention_period":{"type":"string","description":"Retention period named in the policy. Default \"2years\".","enum":["1year","2years","5years","indefinite"],"default":"2years"}},"additionalProperties":false},"examples":[]},{"id":"profit-margin-calculator","name":"Profit Margin Calculator","description":"Return cost, selling price, profit, profit margin (percent of price), and markup (percent of cost). Mode cost_price takes cost and selling_price; mode margin takes cost and a target margin; mode markup takes cost and a target markup.","category":"finance","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"What you know: cost_price, margin, or markup. Default: cost_price.","enum":["cost_price","margin","markup"]},"cost":{"type":"number","description":"Cost of the item. Must be > 0.","minimum":0},"selling_price":{"type":"number","description":"Selling price (mode cost_price). Must be > 0.","minimum":0},"margin":{"type":"number","description":"Target profit margin in percent (mode margin). Must be > 0 and < 100.","minimum":0,"maximum":100},"markup":{"type":"number","description":"Target markup in percent (mode markup). Must be > 0.","minimum":0}},"required":["cost"],"additionalProperties":false},"examples":[]},{"id":"purchase-order-generator","name":"Purchase Order Generator","description":"Return a purchase order as structured data and as Markdown text: line items with amounts, subtotal, tax, shipping, and total, plus company, vendor, shipping, dates, notes, and terms. Amounts use 2 decimals. This tool does not produce a PDF.","category":"documents","parameters":{"type":"object","properties":{"company_name":{"type":"string","description":"Buyer company name.","maxLength":200},"company_address":{"type":"string","description":"Buyer address; newlines separate lines.","maxLength":1000},"vendor_name":{"type":"string","description":"Vendor name.","maxLength":200},"vendor_address":{"type":"string","description":"Vendor address.","maxLength":1000},"vendor_contact":{"type":"string","description":"Vendor contact (email or phone).","maxLength":200},"po_number":{"type":"string","description":"Purchase order number. Default: PO-<timestamp>.","maxLength":50},"po_date":{"type":"string","description":"Order date as YYYY-MM-DD. Default: today (UTC).","maxLength":10},"delivery_date":{"type":"string","description":"Requested delivery date as YYYY-MM-DD.","maxLength":10},"currency":{"type":"string","description":"Currency code. Default: USD.","enum":["USD","EUR","GBP","TRY","CAD","AUD"]},"shipping_address":{"type":"string","description":"Ship-to address when it differs from the buyer address.","maxLength":1000},"shipping_method":{"type":"string","description":"Shipping method.","maxLength":200},"items":{"type":"array","description":"Line items: { description, quantity, unit_price, item_number?, unit? }. 1-200 items.","items":{"type":"object","description":"One line item."}},"tax_rate":{"type":"number","description":"Tax rate in percent applied to the subtotal. Default: 0.","minimum":0,"maximum":100},"shipping_cost":{"type":"number","description":"Shipping cost added after tax. Default: 0.","minimum":0},"notes":{"type":"string","description":"Notes printed on the order.","maxLength":2000},"terms":{"type":"string","description":"Terms and conditions.","maxLength":2000}},"required":["items"],"additionalProperties":false},"examples":[]},{"id":"quiz-maker","name":"Quiz Maker","description":"Build a multiple-choice quiz from questions with options and a correct option index and return the numbered quiz, an answer key, a printable plain-text sheet, Markdown, and (when answers are given) the graded score with per-question results.","category":"education","parameters":{"type":"object","properties":{"questions":{"type":"array","description":"Questions: { question, options (2–10 strings), correct_index (0-based) }.","items":{"type":"object","description":"{ question: string, options: string[], correct_index: number }"}},"title":{"type":"string","description":"Quiz title. Default \"Quiz Maker\".","maxLength":200},"answers":{"type":"array","description":"Optional chosen option index per question (0-based, null for unanswered). When given, the quiz is graded.","items":{"type":"integer","description":"Chosen option index."}}},"required":["questions"],"additionalProperties":false},"examples":[]},{"id":"random-key-generator","name":"Random KEY Generator","description":"Generate cryptographically random keys (API keys, tokens, secrets) and return them as a list of strings. Formats: hex, base64 (URL-safe characters only), alphanumeric, or base58. Optional uppercase and prefix. Default: five 32-character hex keys.","category":"security","parameters":{"type":"object","properties":{"length":{"type":"integer","description":"Key length in characters (excluding prefix). Default: 32.","minimum":1,"maximum":4096,"default":32},"format":{"type":"string","description":"Character set. Default: hex.","enum":["hex","base64","alphanumeric","base58"],"default":"hex"},"uppercase":{"type":"boolean","description":"Uppercase the key (ignored for base64). Default: false.","default":false},"prefix":{"type":"string","description":"Optional prefix prepended to every key (e.g. \"sk_live_\").","maxLength":64},"count":{"type":"integer","description":"How many keys to generate. Default: 5.","minimum":1,"maximum":100,"default":5}},"additionalProperties":false},"examples":[]},{"id":"random-name-picker","name":"Random Name Picker","description":"Pick a random winner from a list of names. Returns the winner, every pick in order, and the names left in the pool. Duplicate and blank names are dropped first. Uses cryptographic randomness.","category":"generators","parameters":{"type":"object","properties":{"names":{"type":"array","description":"Names to pick from (array of strings, or one newline-separated string). Duplicates are ignored.","items":{"type":"string","description":"A name."}},"count":{"type":"integer","description":"How many picks to make (1-1000). Default 1. The first pick is the winner.","minimum":1,"maximum":1000,"default":1},"remove_after_pick":{"type":"boolean","description":"Remove a name from the pool after it is picked (no repeats). Default false.","default":false}},"required":["names"],"additionalProperties":false},"examples":[]},{"id":"random-picker","name":"Random Picker","description":"Generate random numbers, pick random items from a list, or split people into random teams. Returns the numbers, the picks, or the teams, plus a ready-to-paste text. Uses cryptographic randomness. Mode \"number\": min/max/count/allow_duplicates. Mode \"list\": items/pick_count (no repeats). Mode \"teams\": members/team_count (round-robin after a shuffle).","category":"generators","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"What to randomise: \"number\", \"list\", or \"teams\". Default \"number\".","enum":["number","list","teams"],"default":"number"},"min":{"type":"integer","description":"Number mode: smallest value (inclusive). Default 1.","default":1},"max":{"type":"integer","description":"Number mode: largest value (inclusive). Default 100.","default":100},"count":{"type":"integer","description":"Number mode: how many numbers (1-10000). Default 1. Without duplicates, a count above the range returns every number in the range, shuffled.","minimum":1,"maximum":10000,"default":1},"allow_duplicates":{"type":"boolean","description":"Number mode: allow the same number twice. Default false.","default":false},"items":{"type":"array","description":"List mode: items to pick from (array of strings, or one newline-separated string).","items":{"type":"string","description":"An item."}},"pick_count":{"type":"integer","description":"List mode: how many items to pick without repeats (1-10000). Default 1.","minimum":1,"maximum":10000,"default":1},"members":{"type":"array","description":"Teams mode: people to split (array of strings, or one newline-separated string).","items":{"type":"string","description":"A member name."}},"team_count":{"type":"integer","description":"Teams mode: number of teams (2-20). Default 2.","minimum":2,"maximum":20,"default":2}},"additionalProperties":false},"examples":[]},{"id":"readability-calculator","name":"Readability Calculator","description":"Compute six readability scores for English text (Flesch Reading Ease, Flesch-Kincaid Grade, Gunning Fog, SMOG, Coleman-Liau, Automated Readability Index) plus an average grade level, a reading-level label, a target audience, and text statistics. Scores are null when the text has fewer than 10 words.","category":"education","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to analyse (at least 10 words for scores).","maxLength":2000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"refinance-calculator","name":"Refinance Calculator","description":"Return the new monthly payment, monthly savings, total cost of the current vs the new loan, total savings, break-even month, and whether a mortgage refinance is worth it. Closing costs are added to the new loan balance. Rates are yearly percentages. Give current_monthly_payment, or give current_rate and it is computed from the balance and the remaining months.","category":"finance","parameters":{"type":"object","properties":{"current_balance":{"type":"number","description":"Remaining balance on the current loan. Must be > 0.","minimum":0},"current_monthly_payment":{"type":"number","description":"Current monthly payment. Optional when current_rate is given.","minimum":0},"current_rate":{"type":"number","description":"Current yearly rate in percent. Used only to compute a missing current_monthly_payment.","minimum":0,"maximum":100},"remaining_months":{"type":"integer","description":"Months left on the current loan.","minimum":1,"maximum":600},"new_rate":{"type":"number","description":"New yearly rate in percent.","minimum":0,"maximum":100},"new_term_months":{"type":"integer","description":"New loan term in months (360 = 30 years).","minimum":1,"maximum":600},"closing_costs":{"type":"number","description":"Refinance closing costs. Default: 0.","minimum":0}},"required":["current_balance","remaining_months","new_rate","new_term_months"],"additionalProperties":false},"examples":[]},{"id":"relationship-calculator","name":"Relationship Calculator","description":"Calculate how long a relationship has lasted between a start date and a target date: years/months/days, totals in days, weeks, months, hours, minutes, and seconds, the weekday it started, the next anniversary, and passed/upcoming milestones (100 days to 10 years).","category":"datetime","parameters":{"type":"object","properties":{"start_date":{"type":"string","description":"Relationship start date (YYYY-MM-DD).","maxLength":50},"target_date":{"type":"string","description":"Date to measure against (YYYY-MM-DD). Default: today (UTC).","maxLength":50}},"required":["start_date"],"additionalProperties":false},"examples":[]},{"id":"report-card-generator","name":"Report Card Generator","description":"Generate a report card from a list of subjects with letter grades and credits and return the credit-weighted GPA on a 4.0 scale, per-subject grade points, total credits, a plain-text card, and a standalone HTML card. Grades: A+ A A- B+ B B- C+ C C- D+ D D- F.","category":"education","parameters":{"type":"object","properties":{"subjects":{"type":"array","description":"Subjects: { name, grade, credits? }. credits defaults to 3. Subjects with an empty name are skipped.","items":{"type":"object","description":"{ name: string, grade: \"A+\"…\"F\", credits?: number }"}},"student_name":{"type":"string","description":"Student name.","maxLength":200},"student_id":{"type":"string","description":"Student ID.","maxLength":100},"school_name":{"type":"string","description":"School name (card heading).","maxLength":200},"semester":{"type":"string","description":"Semester or term.","maxLength":100},"academic_year":{"type":"string","description":"Academic year, e.g. 2025-2026.","maxLength":40},"comments":{"type":"string","description":"Teacher comments.","maxLength":5000}},"required":["subjects"],"additionalProperties":false},"examples":[]},{"id":"research-title-generator","name":"Research Title Generator","description":"Generate up to 20 academic research paper titles from a topic, field, variables, population, and research type, and return each title with its style (descriptive, declarative, interrogative, compound). Titles come from deterministic templates; the same inputs and regenerate_key always give the same list.","category":"education","parameters":{"type":"object","properties":{"topic":{"type":"string","description":"Research topic, e.g. \"student motivation\".","minLength":1,"maxLength":300},"field":{"type":"string","description":"Academic field, e.g. \"Educational Psychology\".","maxLength":200},"variables":{"type":"string","description":"Comma-separated key variables, e.g. \"sleep quality, academic performance\".","maxLength":500},"population":{"type":"string","description":"Target population, e.g. \"university students\".","maxLength":200},"research_type":{"type":"string","description":"Research design. Default \"quantitative\".","enum":["quantitative","qualitative","mixed","review","case_study"],"default":"quantitative"},"regenerate_key":{"type":"integer","description":"Change this number to get a different selection and order of titles. Default 0.","minimum":0,"maximum":1000000,"default":0}},"required":["topic"],"additionalProperties":false},"examples":[]},{"id":"retirement-calculator","name":"Retirement Calculator","description":"Return the projected savings at retirement, the amount needed to fund an inflation-adjusted monthly income until life expectancy, the gap or surplus, whether you are on track, the extra monthly saving needed, and the 4%-rule sustainable monthly withdrawal. Rates are yearly percentages.","category":"finance","parameters":{"type":"object","properties":{"current_age":{"type":"integer","description":"Current age in years.","minimum":1,"maximum":120},"retirement_age":{"type":"integer","description":"Planned retirement age. Must be greater than current_age.","minimum":1,"maximum":120},"current_savings":{"type":"number","description":"Retirement savings today. Default: 0.","minimum":0},"monthly_contribution":{"type":"number","description":"Amount saved every month. Default: 0.","minimum":0},"expected_return":{"type":"number","description":"Expected yearly return in percent. Default: 7.","minimum":0,"maximum":100},"inflation_rate":{"type":"number","description":"Yearly inflation in percent. Default: 3.","minimum":0,"maximum":100},"desired_monthly_income":{"type":"number","description":"Monthly income wanted in retirement, in today's money.","minimum":0},"life_expectancy":{"type":"integer","description":"Age the money must last to. Must be greater than retirement_age. Default: 90.","minimum":1,"maximum":130}},"required":["current_age","retirement_age","desired_monthly_income"],"additionalProperties":false},"examples":[]},{"id":"retro-meeting","name":"Retro Meeting","description":"Turn a finished sprint-retrospective board into shareable results: a Markdown summary grouped by category with items sorted by votes, a CSV export, and stats (item counts, revealed count, participants, counts per category, top-5 voted items). Supports the page's formats — standard (went well / needs improvement / action items), sailboat, 4Ls, start-stop-continue — or a custom list of categories. Hidden (unrevealed) items stay out of the exports, as on the page.","category":"productivity","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Retrospective / sprint name used in the title.","maxLength":200},"format":{"type":"string","description":"Board format. Default \"standard\". Use \"custom\" with your own categories.","enum":["standard","sailboat","4ls","start_stop","custom"],"default":"standard"},"categories":{"type":"array","description":"Category names for format \"custom\" (1-12). Ignored for the built-in formats.","items":{"type":"string","description":"One category name."}},"items":{"type":"array","description":"Board items: { category, text, author, votes (default 0), revealed (default true) }. category must be a category id of the format (e.g. \"went_well\") or, for custom, one of your category names.","items":{"type":"object","description":"One retro item."}},"anonymous":{"type":"boolean","description":"Print \"Anonymous\" instead of authors. Default true, as on the page.","default":true},"date":{"type":"string","description":"Session date, YYYY-MM-DD. Default: today (UTC).","maxLength":10}},"required":["name"],"additionalProperties":false},"examples":[]},{"id":"robots-txt-generator","name":"Robots TXT Generator","description":"Return a robots.txt file built from user-agent rules (allow, disallow, crawl-delay), sitemap URLs and an optional Host directive, or from a preset: allow-all, block-all, wordpress, ecommerce.","category":"seo","parameters":{"type":"object","properties":{"rules":{"type":"array","description":"Rule groups: objects with user_agent (e.g. \"*\", \"Googlebot\", \"GPTBot\"), allow (array of paths), disallow (array of paths), crawl_delay (seconds). Overrides preset.","items":{"type":"object","description":"One User-agent group."}},"preset":{"type":"string","description":"Starting rule set when rules is omitted.","enum":["allow-all","block-all","wordpress","ecommerce"],"default":"allow-all"},"sitemaps":{"type":"array","description":"Absolute sitemap URLs.","items":{"type":"string","description":"Sitemap URL.","maxLength":2048}},"host":{"type":"string","description":"Optional Host directive value (Yandex), e.g. \"https://example.com\".","maxLength":253},"include_comments":{"type":"boolean","description":"Prepend the generator comment header with the date.","default":true}},"additionalProperties":false},"examples":[]},{"id":"roi-calculator","name":"ROI Calculator","description":"Return the return on investment: total invested (amount plus extra costs), net gain, simple ROI percent, annualized ROI percent, years to double at that rate (rule of 72), gain per year, and the percentage gain on the base amount alone.","category":"finance","parameters":{"type":"object","properties":{"investment_amount":{"type":"number","description":"Amount invested. Must be > 0.","minimum":0},"final_value":{"type":"number","description":"Value of the investment at the end.","minimum":0},"investment_years":{"type":"number","description":"Holding period in years. Must be > 0. Default: 1.","minimum":0,"maximum":200},"additional_costs":{"type":"number","description":"Fees, taxes, or other costs added to the investment. Default: 0.","minimum":0}},"required":["investment_amount","final_value"],"additionalProperties":false},"examples":[]},{"id":"rubric-generator","name":"Rubric Generator","description":"Build a grading rubric from weighted criteria and performance levels and return the rubric grid, the total weight (with a flag when it is not 100%), the maximum score, a CSV, and a Markdown table. Default levels are Excellent (4), Good (3), Satisfactory (2), Needs Improvement (1).","category":"education","parameters":{"type":"object","properties":{"criteria":{"type":"array","description":"Criteria rows: { name, weight? (percent), descriptions? (one text per level, in level order) }. weight defaults to an equal share.","items":{"type":"object","description":"{ name: string, weight?: number, descriptions?: string[] }"}},"levels":{"type":"array","description":"Performance level columns: { name, points? }. Defaults to four levels with 4, 3, 2, 1 points.","items":{"type":"object","description":"{ name: string, points?: number }"}},"title":{"type":"string","description":"Rubric title. Default \"Rubric\".","maxLength":200}},"required":["criteria"],"additionalProperties":false},"examples":[]},{"id":"salary-calculator","name":"Salary Calculator","description":"Return the same pay expressed as hourly, daily, weekly, bi-weekly, semi-monthly, monthly, and yearly amounts. Assumes 52 weeks and 260 working days a year; the hourly figure uses hours_per_week.","category":"finance","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"Pay amount for the given pay_period. Must be > 0.","minimum":0},"pay_period":{"type":"string","description":"Period the amount is paid for. Default: annual.","enum":["hourly","daily","weekly","biweekly","semimonthly","monthly","annual"]},"hours_per_week":{"type":"number","description":"Working hours per week. Must be > 0. Default: 40.","minimum":0,"maximum":168}},"required":["amount"],"additionalProperties":false},"examples":[]},{"id":"savings-calculator","name":"Savings Calculator","description":"Return the future value of savings with compound interest and monthly contributions: total value, total contributions, total interest, and a year-by-year table of balance, cumulative contributions, and interest earned that year. Rate is a yearly percentage.","category":"finance","parameters":{"type":"object","properties":{"initial_deposit":{"type":"number","description":"Starting balance. Default: 0.","minimum":0},"monthly_contribution":{"type":"number","description":"Amount added every month. Default: 0.","minimum":0},"interest_rate":{"type":"number","description":"Yearly interest rate in percent (5 = 5%).","minimum":0,"maximum":100},"years":{"type":"integer","description":"Saving period in years.","minimum":1,"maximum":100},"compound_frequency":{"type":"integer","description":"Times per year the deposit compounds: 1, 2, 4, 12, or 365. Default: 12.","enum":[1,2,4,12,365]}},"required":["interest_rate","years"],"additionalProperties":false},"examples":[]},{"id":"schema-org-generator","name":"Schema ORG Generator","description":"Generate Schema.org JSON-LD markup for 8 types (Organization, LocalBusiness, Person, Product, Event, Recipe, JobPosting, Course) and return the JSON-LD string, a ready <script> tag, the schema object, and the list of required fields that are still missing. Comma-separated values for sameAs and recipeIngredient become arrays.","category":"seo","parameters":{"type":"object","properties":{"schema_type":{"type":"string","description":"The Schema.org type to generate.","enum":["Organization","LocalBusiness","Person","Product","Event","Recipe","JobPosting","Course"]},"fields":{"type":"object","description":"Flat map of field name to string value for the chosen type (for example { name, url, logo } for Organization). Unknown keys are ignored. JobPosting accepts datePosted (YYYY-MM-DD); default is today (UTC)."}},"required":["schema_type"],"additionalProperties":false},"examples":[]},{"id":"scientific-calculator","name":"Scientific Calculator","description":"Evaluate a scientific math expression and return the numeric result (12 significant digits). Supports + - * / ^ (or **), parentheses, n!, π (or pi), e, and the functions sin, cos, tan, asin, acos, atan, log (base 10), ln, sqrt (or √), abs, exp. Trigonometry in radians or degrees. Uses a safe parser — no code execution.","category":"calculators","parameters":{"type":"object","properties":{"expression":{"type":"string","description":"Expression to evaluate, e.g. \"sin(30) + 2^3 * (4 - 1)\" or \"5! / sqrt(16)\".","minLength":1,"maxLength":1000},"angle_unit":{"type":"string","description":"Angle unit for sin/cos/tan inputs and asin/acos/atan outputs.","enum":["rad","deg"],"default":"rad"}},"required":["expression"],"additionalProperties":false},"examples":[]},{"id":"scope-creep-tracker","name":"Scope Creep Tracker","description":"Measure scope creep on a project and return the numbers a stakeholder report needs: original (baseline) effort, approved / pending / rejected change effort, total current scope, growth percent versus the baseline, approval rate, counts of change requests by type (feature, enhancement, clarification, bug, removal) and by status (pending, approved, rejected), the list of approved changes, and an executive-summary paragraph. Growth above 20% is flagged as high, as on the page.","category":"productivity","parameters":{"type":"object","properties":{"project_name":{"type":"string","description":"Project name used in the summary. Default \"Untitled Project\".","maxLength":200},"scope_items":{"type":"array","description":"Baseline scope items: { title, effort (hours) }. At least one is required.","items":{"type":"object","description":"One baseline scope item."}},"change_requests":{"type":"array","description":"Change requests: { title, effort_impact (hours), type (default \"feature\"), status (default \"pending\"), requested_by }.","items":{"type":"object","description":"One change request."}}},"required":["scope_items"],"additionalProperties":false},"examples":[]},{"id":"seating-chart-maker","name":"Seating Chart Maker","description":"Assign students to a rows × columns seating grid (in list order, or shuffled) and return the grid, each student's row/column/seat number, the students left without a seat, a plain-text chart with the front of the room at the top, and a CSV. Pass a seed for a reproducible shuffle.","category":"education","parameters":{"type":"object","properties":{"students":{"type":"array","description":"Student names in the order they should be seated (row by row, left to right).","items":{"type":"string","description":"A student name."}},"rows":{"type":"integer","description":"Number of rows. Default 4.","minimum":1,"maximum":50,"default":4},"cols":{"type":"integer","description":"Seats per row. Default 5.","minimum":1,"maximum":50,"default":5},"shuffle":{"type":"boolean","description":"Shuffle the students before seating. Default false.","default":false},"seed":{"type":"integer","description":"Seed for the shuffle. Same seed → same chart.","minimum":0,"maximum":4294967295},"title":{"type":"string","description":"Chart title. Default \"Seating Chart\".","maxLength":200}},"required":["students"],"additionalProperties":false},"examples":[]},{"id":"security-headers-analyzer","name":"Security Headers Analyzer","description":"Grade a set of HTTP response headers for security: returns a 0-100 score, a letter grade (A+ to F), a pass/fail/warning summary, and a per-header finding with a recommendation for CSP, HSTS, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy, and the Cross-Origin-* headers. Pass the headers you already have; this tool does not fetch the URL.","category":"network","parameters":{"type":"object","properties":{"headers":{"type":"object","description":"Response headers as an object of header name → value (case-insensitive), e.g. {\"content-security-policy\": \"default-src 'self'\"}. A raw \"Name: value\" block string (one header per line, as copied from curl -I) is also accepted."},"url":{"type":"string","description":"Optional URL the headers came from. Echoed in the result only.","maxLength":2048}},"required":["headers"],"additionalProperties":false},"examples":[]},{"id":"self-employment-tax-calculator","name":"Self Employment TAX Calculator","description":"Return the yearly self-employment tax bill for the USA (SE tax: Social Security, Medicare, additional Medicare, plus federal income tax), Türkiye (Bağ-Kur premium plus income tax), or KKTC (social security plus income tax after the personal allowance), with taxable income, quarterly payment, effective rate, and net income after tax. Tax years 2024 and 2025.","category":"finance","parameters":{"type":"object","properties":{"country":{"type":"string","description":"Tax system: usa, turkey, or kktc. Default: turkey.","enum":["usa","turkey","kktc"]},"tax_year":{"type":"string","description":"Tax year. Default: 2025.","enum":["2024","2025"]},"gross_income":{"type":"number","description":"Gross self-employment income for the year.","minimum":0},"business_expenses":{"type":"number","description":"Deductible business expenses. Default: 0.","minimum":0},"filing_status":{"type":"string","description":"USA only. Default: single.","enum":["single","married_joint","married_separate","head_of_household"]},"other_income":{"type":"number","description":"USA only: other taxable income (W-2, interest). Default: 0.","minimum":0},"use_standard_deduction":{"type":"boolean","description":"USA only: use the standard deduction. Default: true."},"itemized_deductions":{"type":"number","description":"USA only: itemized deductions when not using the standard one; the larger of the two is applied. Default: 0.","minimum":0},"bagkur_tier":{"type":"string","description":"Türkiye only: minimum declared base, or custom. Default: minimum.","enum":["minimum","custom"]},"bagkur_has_discount":{"type":"boolean","description":"Türkiye only: 5-point discount for regular payers (29.5% instead of 34.5%). Default: true."},"custom_bagkur_base":{"type":"number","description":"Türkiye only: monthly declared base when bagkur_tier is custom; clamped to the legal range.","minimum":0}},"required":["gross_income"],"additionalProperties":false},"examples":[]},{"id":"seo-title-description-writer","name":"SEO Title Description Writer","description":"Analyze an SEO title and meta description and return character counts, estimated SERP pixel widths against Google desktop/mobile limits, keyword placement, power words, an emotional marketing value (EMV) score, and ready <title>/<meta> tags. Pixel widths are estimated from Arial glyph widths, not measured in a browser.","category":"seo","parameters":{"type":"object","properties":{"title":{"type":"string","description":"The page title to analyze.","maxLength":1000},"description":{"type":"string","description":"The meta description to analyze.","maxLength":5000},"url":{"type":"string","description":"Optional page URL shown in the SERP preview.","maxLength":2000},"keyword":{"type":"string","description":"Optional focus keyword. Reports whether it appears in the title, near the start, and in the description.","maxLength":200}},"additionalProperties":false},"examples":[]},{"id":"serp-preview","name":"Serp Preview","description":"Return how a page title and meta description will display in Google search results on desktop or mobile: the truncated display text, character and pixel counts against Google's limits, an ok/warn/danger status per field, the breadcrumb URL, and the HTML <title>/<meta> snippet.","category":"seo","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Page title (the <title> text).","maxLength":1000},"description":{"type":"string","description":"Meta description text.","maxLength":5000,"default":""},"url":{"type":"string","description":"Page URL, used for the breadcrumb and canonical link.","maxLength":2048,"default":""},"view":{"type":"string","description":"Which Google layout to simulate.","enum":["desktop","mobile"],"default":"desktop"}},"required":["title"],"additionalProperties":false},"examples":[]},{"id":"signature-generator","name":"Signature Generator","description":"Generate a typed signature as an SVG string: the name is set in a handwriting font (cursive, elegant, bold, or casual) in the chosen colour on a 600x200 white canvas. Returns the SVG plus the font family used.","category":"generators","parameters":{"type":"object","properties":{"name":{"type":"string","description":"The name to sign (1-80 characters).","minLength":1,"maxLength":80},"style":{"type":"string","description":"Handwriting style. Default \"cursive\".","enum":["cursive","elegant","bold","casual"],"default":"cursive"},"color":{"type":"string","description":"Ink colour as #rgb or #rrggbb. Default \"#000000\".","default":"#000000"}},"required":["name"],"additionalProperties":false},"examples":[]},{"id":"site-to-markdown","name":"Site TO Markdown","description":"Convert a full web page's HTML into clean Markdown, the way the Site to Markdown page does: navigation, footers, scripts, styles, iframes and SVG are removed, the content root is <main>, <article> or [role=\"main\"] when present, and headings, lists, links, images, code blocks, blockquotes and tables become Markdown. Pass the page HTML (this tool does not fetch) and optionally the page URL so relative links and images resolve to absolute ones. Returns the markdown plus word, line, and character counts.","category":"text","parameters":{"type":"object","properties":{"html":{"type":"string","description":"The page HTML to convert. A full document or a fragment both work.","maxLength":2000000},"url":{"type":"string","description":"The page's URL, used only to resolve relative links and image sources. Nothing is fetched.","maxLength":2048}},"required":["html"],"additionalProperties":false},"examples":[]},{"id":"sleep-calculator","name":"Sleep Calculator","description":"Calculate the best bedtimes for a wake-up time, or the best wake-up times for a bedtime, based on 90-minute sleep cycles plus 15 minutes to fall asleep. Returns 4 options (3-7 cycles) with duration and quality (optimal/good/fair).","category":"calculators","parameters":{"type":"object","properties":{"mode":{"type":"string","description":"\"wake\": you give the wake-up time and get bedtimes (6 down to 3 cycles). \"sleep\": you give the bedtime and get wake-up times (4 to 7 cycles). \"now\": like \"sleep\" with the current time (UTC) when time is omitted.","enum":["wake","sleep","now"],"default":"wake"},"time":{"type":"string","description":"Time of day as HH:MM (24-hour). Required for \"wake\" and \"sleep\". Optional for \"now\".","maxLength":5}},"additionalProperties":false},"examples":[]},{"id":"social-media-bio-generator","name":"Social Media BIO Generator","description":"Compose a social-media profile bio from a profession, skills, an achievement, a location and a call to action in one of five styles (professional, creative, minimalist, fun, inspirational). Returns the bio, its lines, and its length against the platform limit (Instagram 150, Twitter 160, TikTok 80, LinkedIn 220, YouTube 1000). Template-based, no AI.","category":"generators","parameters":{"type":"object","properties":{"platform":{"type":"string","description":"Target platform; sets the character limit and the separator (Twitter joins with \" | \", others with a newline). Default \"instagram\".","enum":["instagram","twitter","tiktok","linkedin","youtube"],"default":"instagram"},"style":{"type":"string","description":"Bio style. Default \"professional\". Note: \"minimalist\" omits the achievement and \"inspirational\" omits the location, like the page.","enum":["professional","creative","minimalist","fun","inspirational"],"default":"professional"},"profession":{"type":"string","description":"Job title or role, e.g. \"Software Developer\".","maxLength":500},"skills":{"type":"string","description":"Skills or niche, e.g. \"Web technologies & UI/UX\".","maxLength":500},"achievement":{"type":"string","description":"A notable achievement, e.g. \"Helped 10K+ followers\".","maxLength":500},"cta":{"type":"string","description":"Call to action, e.g. \"DM for collabs\".","maxLength":500},"location":{"type":"string","description":"City or country.","maxLength":500},"include_emojis":{"type":"boolean","description":"Prefix lines with emojis. Default true.","default":true}},"additionalProperties":false},"examples":[]},{"id":"social-media-calendar-generator","name":"Social Media Calendar Generator","description":"Turn a list of planned social media posts into a content calendar: a CSV export (Date, Time, Platform, Content Type, Title, Description, Hashtags), a plain-text schedule, posts grouped by date, counts per platform and content type, and a Monday-first month grid for the month you choose (default: the month of the earliest post). Each post needs a date, a platform (e.g. Instagram, Twitter/X, LinkedIn, TikTok, Facebook, YouTube), a content type (Post, Story, Reel, Video, Article, Thread, Live) and a title.","category":"productivity","parameters":{"type":"object","properties":{"posts":{"type":"array","description":"Planned posts: { date (YYYY-MM-DD), time (HH:MM), platform, content_type, title, description, hashtags }.","items":{"type":"object","description":"One planned post."}},"month":{"type":"string","description":"Month to render the grid for, YYYY-MM. Default: month of the earliest post.","maxLength":7}},"required":["posts"],"additionalProperties":false},"examples":[]},{"id":"sprint-capacity-calculator","name":"Sprint Capacity Calculator","description":"Calculate a team's realistic sprint capacity in hours and story points. Starts from each member's hours per day × the working days in the sprint, then subtracts meeting overhead, public holidays that fall on working days, and per-member PTO; returns the deductions, final hours, utilization rate, recommended story points (final hours ÷ hours per point), the average of any historical velocity you pass, and a per-member breakdown.","category":"productivity","parameters":{"type":"object","properties":{"team":{"type":"array","description":"Team members: { name, hours_per_day (default 8), role }.","items":{"type":"object","description":"One team member."}},"duration_days":{"type":"integer","description":"Calendar days in the sprint, counted from start_date. Default 10.","minimum":1,"maximum":90,"default":10},"start_date":{"type":"string","description":"First day of the sprint, YYYY-MM-DD. Default: today (UTC).","maxLength":10},"working_days":{"type":"array","description":"Seven booleans, Monday first, marking which weekdays count. Default Mon-Fri.","items":{"type":"boolean","description":"true when that weekday is a working day."}},"meeting_overhead_percent":{"type":"number","description":"Percent of raw hours lost to meetings. Default 20.","minimum":0,"maximum":100,"default":20},"holidays":{"type":"array","description":"Holiday dates (YYYY-MM-DD strings, or { date, name }). Only those on working days deduct time.","items":{"type":"string","description":"A holiday date."}},"pto":{"type":"array","description":"Planned time off: { member (team member name), days }.","items":{"type":"object","description":"One PTO entry."}},"historical_velocity":{"type":"array","description":"Completed story points of previous sprints, used for average_velocity.","items":{"type":"number","description":"Points completed in one past sprint."}},"hours_per_point":{"type":"number","description":"Hours of work one story point represents. Default 6.","minimum":0.01,"maximum":1000,"default":6}},"required":["team"],"additionalProperties":false},"examples":[]},{"id":"sql-formatter","name":"SQL Formatter","description":"Format (beautify) or minify a SQL query and return the result with lint warnings. Format mode puts each clause (SELECT, FROM, WHERE, JOIN, ...) on its own line, uppercases keywords, and indents by the chosen width; dialect adds MySQL, PostgreSQL, or SQLite keywords. Warnings flag unmatched parentheses, unclosed strings, empty clauses, and a missing final semicolon.","category":"developer","parameters":{"type":"object","properties":{"sql":{"type":"string","description":"The SQL text to format or minify.","maxLength":2000000},"mode":{"type":"string","description":"format = beautify, minify = one line without comments. Default: format.","enum":["format","minify"],"default":"format"},"indent":{"type":"integer","description":"Spaces per indentation level in format mode (1-8). Default: 2.","minimum":1,"maximum":8,"default":2},"dialect":{"type":"string","description":"SQL dialect for keyword recognition. Default: standard.","enum":["standard","mysql","postgresql","sqlite"],"default":"standard"}},"required":["sql"],"additionalProperties":false},"examples":[]},{"id":"sql-to-csv","name":"SQL TO CSV","description":"Read rows out of SQL INSERT statements and return CSV, one file per table. Parses a mysqldump, pg_dump or SQLite dump as text — nothing is executed against a database. Column names come from the INSERT column list, then from a CREATE TABLE in the same input, then from positions. NULL becomes an empty cell. Dump noise such as SET, LOCK TABLES and comments is ignored, and an INSERT ... SELECT with no literal VALUES is reported rather than guessed at.","category":"data","parameters":{"type":"object","properties":{"sql":{"type":"string","description":"SQL dump text containing INSERT statements.","maxLength":10000000},"table":{"type":"string","description":"Return only this table. Default: every table found.","maxLength":128},"delimiter":{"type":"string","description":"Output field separator. Default: a comma.","maxLength":4,"default":","},"max_rows":{"type":"integer","description":"Stop after this many rows per table. Default 50000, maximum 200000.","minimum":1,"maximum":200000,"default":50000}},"required":["sql"],"additionalProperties":false},"examples":[]},{"id":"srt-to-vtt","name":"SRT TO VTT","description":"Convert SubRip (.srt) captions to WebVTT (.vtt) and back. The direction is detected from the input by default: SRT uses a comma before the milliseconds, WebVTT uses a dot and starts with a WEBVTT header. Timestamps are normalized to HH:MM:SS with three fraction digits, VTT cue settings are preserved, and NOTE and STYLE blocks are skipped. Only the format changes; the caption text is never translated or edited.","category":"calculators","parameters":{"type":"object","properties":{"input":{"type":"string","description":"Caption file contents, either SubRip or WebVTT.","maxLength":10000000},"direction":{"type":"string","description":"Force a direction. Default: auto, detected from the input.","enum":["auto","srt-to-vtt","vtt-to-srt"],"default":"auto"},"keep_cue_numbers":{"type":"boolean","description":"Keep cue identifiers when writing WebVTT, where they are optional. Default: false.","default":false}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"ssl-certificate-checker","name":"SSL Certificate Checker","description":"Return the TLS certificate details of a public hostname: validity, issuer, subject, expiry and days remaining, protocol, key size, signature algorithm, serial, SHA-256 fingerprint and SANs. The scan can take a while; when status is \"in_progress\" call again after retry_after_seconds.","category":"network","parameters":{"type":"object","properties":{"domain":{"type":"string","description":"Hostname to check, e.g. \"example.com\". A URL is accepted; only the hostname is used.","maxLength":253}},"required":["domain"],"additionalProperties":false},"examples":[]},{"id":"state-machine-designer","name":"State Machine Designer","description":"Validate a finite state machine given as nodes and edges and return a normalized machine config plus issues. Checks for missing ids, dangling transitions, duplicate labels, missing or multiple initial states, unreachable states, and outgoing transitions from final states. The config matches the designer's \"Export Code\" output ({ id, initial, states: { State: { EVENT: Target } } }).","category":"validation","parameters":{"type":"object","properties":{"nodes":{"type":"array","description":"States: [{ id, data: { label, stateType: initial|normal|final, description? } }]. Flat { id, label, stateType } objects are also accepted.","items":{"type":"object","description":"State node."}},"edges":{"type":"array","description":"Transitions: [{ source, target, label }] where label is the event name (uppercased in the config; \"EVENT\" when missing).","items":{"type":"object","description":"Transition edge."}},"machine_id":{"type":"string","description":"Id written into the config. Default: \"stateMachine\".","maxLength":100,"default":"stateMachine"}},"required":["nodes","edges"],"additionalProperties":false},"examples":[]},{"id":"stock-average-calculator","name":"Stock Average Calculator","description":"Return the average cost per share (dollar cost averaging) across several buys, the total shares, total invested, break-even price, and, when a current price is given, the position value and unrealized profit or loss in money and percent.","category":"calculators","parameters":{"type":"object","properties":{"transactions":{"type":"array","description":"Buys as { shares, price }. 1-500 items; both values must be > 0.","items":{"type":"object","description":"One purchase."}},"current_price":{"type":"number","description":"Current market price per share. Optional.","minimum":0}},"required":["transactions"],"additionalProperties":false},"examples":[]},{"id":"structured-data-tester","name":"Structured Data Tester","description":"Validate JSON-LD structured data (given directly or extracted from HTML <script type=\"application/ld+json\"> blocks) and return, per detected schema.org type, the required and recommended properties that are present or missing, a pass flag, and rich-result eligibility for 15 supported types. Does not fetch URLs.","category":"seo","parameters":{"type":"object","properties":{"json_ld":{"type":"string","description":"A JSON-LD document: one object, an array of objects, or an object with @graph. Use this OR html.","maxLength":1000000},"html":{"type":"string","description":"HTML source. Every <script type=\"application/ld+json\"> block is extracted and validated.","maxLength":2000000}},"additionalProperties":false},"examples":[]},{"id":"subnet-calculator","name":"Subnet Calculator","description":"Return the full IPv4 subnet breakdown for an address: network and broadcast address, subnet mask, wildcard mask, binary mask, first and last usable host, total and usable host counts, IP class (A-E), and IP type (public, private, loopback, link-local, multicast, reserved). Accepts CIDR notation (192.168.1.0/24), a bare IP (defaults to /24), or an IP plus a dotted subnet mask.","category":"network","parameters":{"type":"object","properties":{"ip":{"type":"string","description":"IPv4 address, with or without a /prefix, e.g. \"192.168.1.0/24\" or \"10.0.0.5\". Without a prefix /24 is assumed unless mask is given.","maxLength":64},"mask":{"type":"string","description":"Optional dotted subnet mask such as \"255.255.255.0\". When given it overrides the prefix in ip.","maxLength":15}},"required":["ip"],"additionalProperties":false},"examples":[]},{"id":"subtitle-shift","name":"Subtitle Shift","description":"Shift every cue in a SubRip (.srt) or WebVTT (.vtt) caption file by one fixed offset, so a track that runs early or late lines up with the audio again. A positive offset delays the captions (they appear later); a negative one advances them. The output keeps the input format, cue text, order and WebVTT cue settings. A cue whose start would go below zero is held at zero and counted; a cue that would end before zero is dropped and counted. Timing only: nothing is stretched, translated or edited.","category":"developer","parameters":{"type":"object","properties":{"input":{"type":"string","description":"Caption file contents, either SubRip or WebVTT.","maxLength":10000000},"offset_ms":{"type":"integer","description":"Milliseconds to add to every timestamp. Positive shows captions later, negative earlier. 1500 means one and a half seconds later.","minimum":-86400000,"maximum":86400000}},"required":["input","offset_ms"],"additionalProperties":false},"examples":[]},{"id":"svg-animation-generator","name":"SVG Animation Generator","description":"Return an animated SVG (inline CSS @keyframes) and/or the CSS alone, built from a shape template (rect, circle, star, stick figure, sun…) or custom SVG elements, plus animations from a preset (bounce, pulse, spin, fade, slide, squash-stretch, color-shift, float) or custom keyframes.","category":"generators","parameters":{"type":"object","properties":{"shape":{"type":"string","description":"Shape template to start from. Ignored when elements is given.","enum":["rect","circle","ellipse","line","text","star","character-head","character-body","character-full","cloud","sun"],"default":"rect"},"elements":{"type":"array","description":"Custom elements: [{ id?, type: rect|circle|ellipse|line|path|text, attrs: { x, y, width, height, cx, cy, r, d, fill, stroke, textContent, … } }].","items":{"type":"object","description":"One SVG element."}},"preset":{"type":"string","description":"Animation preset applied to the first element. Ignored when animations is given.","enum":["bounce","pulse","spin","fade","slide","squash-stretch","color-shift","float"]},"animations":{"type":"array","description":"Custom animations: [{ element_id, property (x, y, cx, cy, r, opacity, rotate, translateX, translateY, scale, fill, stroke, …), keyframes: [{ offset: 0-100, value }], duration (ms), easing, iteration_count, direction: normal|alternate }].","items":{"type":"object","description":"One animation."}},"view_box":{"type":"string","description":"SVG viewBox.","maxLength":60,"default":"0 0 300 300"},"background":{"type":"string","description":"Background color (CSS color).","maxLength":40,"default":"#0f172a"},"output":{"type":"string","description":"What to return.","enum":["svg","css","both"],"default":"svg"}},"additionalProperties":false},"examples":[]},{"id":"swagger-to-openapi","name":"Swagger TO Openapi","description":"Convert a Swagger 2.0 document (JSON or YAML) to OpenAPI 3.0.3 and return the result as pretty-printed JSON with path and schema counts. host, basePath, and schemes become servers; body and formData parameters become requestBody; response schemas move under content; definitions become components/schemas with $ref rewritten; securityDefinitions become components/securitySchemes (basic, apiKey, oauth2 flows).","category":"data","parameters":{"type":"object","properties":{"swagger":{"type":"string","description":"The Swagger 2.0 document as JSON or YAML text.","maxLength":10000000}},"required":["swagger"],"additionalProperties":false},"examples":[]},{"id":"tailwind-to-stylex","name":"Tailwind TO Stylex","description":"Convert Tailwind CSS v4 theme variables, JSON design tokens, or a static Tailwind config theme into StyleX defineConsts source and TypeScript declarations. Uploaded JavaScript is parsed as data and never executed.","category":"developer","parameters":{"type":"object","properties":{"source":{"type":"string","description":"Tailwind @theme CSS, CSS custom properties, JSON tokens, or a static Tailwind theme object.","maxLength":500000},"format":{"type":"string","description":"Input format: auto, css, json, or config. Default: auto.","enum":["auto","css","json","config"],"default":"auto"}},"required":["source"],"additionalProperties":false},"examples":[]},{"id":"tdee-calculator","name":"Tdee Calculator","description":"Calculate Total Daily Energy Expenditure (TDEE) and Basal Metabolic Rate (BMR) with the Mifflin-St Jeor equation, plus calorie targets for weight loss or gain (mild/moderate/extreme) and a suggested 30/35/35 protein/carbs/fat split. Metric (kg/cm) or imperial (lbs, feet+inches).","category":"calculators","parameters":{"type":"object","properties":{"gender":{"type":"string","description":"Biological sex used by the BMR equation.","enum":["male","female"]},"age":{"type":"integer","description":"Age in years (1-120).","minimum":1,"maximum":120},"weight":{"type":"number","description":"Body weight in kg (metric) or lbs (imperial)."},"height":{"type":"number","description":"Height in cm (metric). For imperial, total inches (or use height_feet + height_inches)."},"height_feet":{"type":"number","description":"Imperial only: feet part of the height."},"height_inches":{"type":"number","description":"Imperial only: inches part of the height."},"unit_system":{"type":"string","description":"Unit system for weight and height.","enum":["metric","imperial"],"default":"metric"},"activity_level":{"type":"string","description":"Activity level multiplier: sedentary 1.2, light 1.375, moderate 1.55, active 1.725, very_active 1.9, extra_active 2.1.","enum":["sedentary","light","moderate","active","very_active","extra_active"],"default":"moderate"},"goal":{"type":"string","description":"Goal used for the calorie targets.","enum":["lose","maintain","gain"],"default":"maintain"}},"required":["gender","age","weight"],"additionalProperties":false},"examples":[]},{"id":"tech-debt-register","name":"Tech Debt Register","description":"Analyze a technical debt register and return the stakeholder numbers: active vs resolved counts, total hours to fix, weekly \"interest\" cost in hours, payoff weeks at a given weekly budget, breakeven weeks, counts by category and severity, the top-5 highest-interest items, a severity/effort matrix (quick wins, strategic, low priority, time sink), and an executive-summary paragraph. Each item has a category (code, architecture, testing, documentation, security, performance), a severity 1-5, effort_to_fix in hours, interest_rate in hours lost per week, and a status (active, resolved, wont_fix).","category":"productivity","parameters":{"type":"object","properties":{"items":{"type":"array","description":"Debt items: { title, category, severity (1-5), effort_to_fix (hours), interest_rate (hours/week, default 0), status (default \"active\"), description }.","items":{"type":"object","description":"One debt item."}},"weekly_budget":{"type":"number","description":"Hours per week available for paying down debt. Default 8.","minimum":0,"default":8}},"required":["items"],"additionalProperties":false},"examples":[]},{"id":"text-encryption","name":"Text Encryption","description":"Encrypt text with a password using AES-256-GCM (key derived with PBKDF2-SHA256, 100000 iterations) and return a base64 ciphertext, or decrypt such a ciphertext back to the original text. The base64 blob is salt(16) + iv(12) + ciphertext, compatible with the FindUtils Text Encryption page.","category":"security","parameters":{"type":"object","properties":{"text":{"type":"string","description":"encrypt: the plaintext. decrypt: the base64 ciphertext produced by this tool.","maxLength":1000000},"password":{"type":"string","description":"The password (passphrase) used to derive the AES key.","maxLength":1024},"mode":{"type":"string","description":"Operation. Default: encrypt.","enum":["encrypt","decrypt"],"default":"encrypt"}},"required":["text","password"],"additionalProperties":false},"examples":[]},{"id":"text-find-replace","name":"Text Find Replace","description":"Find and replace text and return the new text with the match and replacement counts. Supports case-insensitive search, whole-word matching, JavaScript regular expressions (with $1 capture groups in the replacement), and replace-first or replace-all.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The input text.","maxLength":5000000},"find":{"type":"string","description":"The text (or regex pattern when use_regex is true) to find.","maxLength":10000},"replace":{"type":"string","description":"The replacement text. Default: empty string (delete matches).","maxLength":100000,"default":""},"case_sensitive":{"type":"boolean","description":"Match case exactly. Default: false.","default":false},"whole_word":{"type":"boolean","description":"Match whole words only. Default: false.","default":false},"use_regex":{"type":"boolean","description":"Treat find as a regular expression. Default: false.","default":false},"replace_all":{"type":"boolean","description":"Replace every match (true) or only the first (false). Default: true.","default":true}},"required":["text","find"],"additionalProperties":false},"examples":[]},{"id":"text-summarizer","name":"Text Summarizer","description":"Create an extractive summary of a text and return the summary with word and sentence statistics. Sentences are scored by word frequency, position (first and last sentence boosted), and key indicator words; the top sentences are kept in original order. Length: short (20%), medium (40%), long (60%), or an explicit percentage. Rule-based, no AI model.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to summarize.","maxLength":2000000},"length":{"type":"string","description":"Target length as a share of sentences. Default: medium.","enum":["short","medium","long"],"default":"medium"},"percentage":{"type":"integer","description":"Explicit target percentage of sentences to keep (5-95). Overrides length.","minimum":5,"maximum":95}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"thesis-statement-generator","name":"Thesis Statement Generator","description":"Generate up to 5 thesis statement variations from a topic, a position, and optional supporting reasons for four essay types, and return each statement with a strength rating (weak, moderate, strong) and improvement tips. Output comes from deterministic templates.","category":"education","parameters":{"type":"object","properties":{"topic":{"type":"string","description":"The essay topic, e.g. \"Social media\".","minLength":1,"maxLength":300},"position":{"type":"string","description":"Your claim or position, e.g. \"Harms teenage mental health\".","minLength":1,"maxLength":500},"reasons":{"type":"array","description":"Up to 3 supporting reasons. More reasons produce stronger statements.","items":{"type":"string","description":"One supporting reason."}},"essay_type":{"type":"string","description":"Essay type. Default \"argumentative\".","enum":["argumentative","analytical","expository","compare_contrast"],"default":"argumentative"}},"required":["topic","position"],"additionalProperties":false},"examples":[]},{"id":"thread-generator","name":"Thread Generator","description":"Build a numbered Twitter/X thread from a list of tweets, or split long-form text into tweets of at most 280 characters. Returns each tweet with its character count and limit flag, plus the full thread text numbered \"1/N\" and separated by \"---\", exactly as the page copies it.","category":"generators","parameters":{"type":"object","properties":{"tweets":{"type":"array","description":"The tweets in order (1-100 strings). Blank entries are dropped. Give tweets or text, not both.","items":{"type":"string","description":"One tweet."}},"text":{"type":"string","description":"Long-form text to split into tweets at paragraph, sentence and word boundaries. Give text or tweets, not both.","maxLength":50000},"thread_type":{"type":"string","description":"Thread style label, returned as-is. Default \"educational\".","enum":["educational","story","listicle","howto","opinion"],"default":"educational"},"topic":{"type":"string","description":"What the thread is about. Returned as-is.","maxLength":200},"max_length":{"type":"integer","description":"Character limit per tweet (50-4000). Default 280.","minimum":50,"maximum":4000,"default":280},"number_tweets":{"type":"boolean","description":"Prefix each tweet in the joined text with \"i/N\" on its own line. Default true.","default":true}},"additionalProperties":false},"examples":[]},{"id":"time-difference","name":"Time Difference","description":"Work out how long there is between two times of day, with no dates involved. Handles a shift that crosses midnight — 22:00 to 06:00 is eight hours, not minus sixteen — and can subtract an unpaid break. Accepts 24-hour times and am/pm, and returns the duration both as hours and minutes and as decimal hours for invoicing.","category":"datetime","parameters":{"type":"object","properties":{"start":{"type":"string","description":"Start time: \"09:00\", \"9:00:30\" or \"9:00 am\".","maxLength":20},"end":{"type":"string","description":"End time, same formats. \"24:00\" means the end of the day.","maxLength":20},"overnight":{"type":"string","description":"auto wraps past midnight only when the end is not after the start. always puts the end on the NEXT day, so 09:00 to 17:00 becomes 32 hours. never refuses to wrap and errors instead. Default: auto.","enum":["auto","always","never"],"default":"auto"},"break_minutes":{"type":"number","description":"Unpaid break to subtract, in minutes. Default: 0.","minimum":0,"maximum":1440,"default":0}},"required":["start","end"],"additionalProperties":false},"examples":[]},{"id":"timesheet-calculator","name":"Timesheet Calculator","description":"Return total, regular, and overtime hours plus regular, overtime, and total pay for a list of work entries (start time, end time, break). Times are HH:MM in 24-hour format; an end time before the start time is an overnight shift. Overtime is paid on hours above regular_hours_per_week at overtime_multiplier.","category":"calculators","parameters":{"type":"object","properties":{"entries":{"type":"array","description":"Work entries: { day?, start_time: \"09:00\", end_time: \"17:00\", break_minutes?: 60 }. 1-100 items.","items":{"type":"object","description":"One work entry."}},"hourly_rate":{"type":"number","description":"Pay per hour. Default: 0 (hours only).","minimum":0},"include_overtime":{"type":"boolean","description":"Split hours above the weekly limit into overtime. Default: true."},"regular_hours_per_week":{"type":"number","description":"Regular hours before overtime starts. Default: 40.","minimum":0},"overtime_multiplier":{"type":"number","description":"Overtime pay multiplier. Default: 1.5.","minimum":1}},"required":["entries"],"additionalProperties":false},"examples":[]},{"id":"tone-analyzer","name":"Tone Analyzer","description":"Analyze the emotional tone of English text with a rule-based word dictionary and return tone scores (joy, sadness, anger, fear, confidence, analytical, tentative, polite), the dominant tone, an overall sentiment with a 0-100 score, and a formality level. Needs at least 5 words. No AI model involved.","category":"text","parameters":{"type":"object","properties":{"text":{"type":"string","description":"The text to analyse (at least 5 words).","maxLength":1000000}},"required":["text"],"additionalProperties":false},"examples":[]},{"id":"travel-budget-calculator","name":"Travel Budget Calculator","description":"Estimate a trip budget from per-day and one-off expenses: total per person, total for all travelers, daily spend, and a per-category breakdown with percentages. When expenses is omitted, a default set (flights 500, accommodation 100/day, transport 30/day, food 60/day, activities 40/day, shopping 100, misc 50) is used.","category":"finance","parameters":{"type":"object","properties":{"trip_days":{"type":"integer","description":"Trip length in days (1-3650).","minimum":1,"maximum":3650},"travelers":{"type":"integer","description":"Number of travelers (1-1000). Default 1.","minimum":1,"maximum":1000,"default":1},"currency":{"type":"string","description":"Currency code echoed back in the result (e.g. USD). Default USD.","maxLength":10,"default":"USD"},"expenses":{"type":"array","description":"Expense categories per person. Each item: { name: string, amount: number, per_day?: boolean }. per_day=true multiplies the amount by trip_days.","items":{"type":"object","description":"One expense: name, amount, per_day (optional, default false)."}}},"required":["trip_days"],"additionalProperties":false},"examples":[]},{"id":"two-fa-code-tester","name":"TWO FA Code Tester","description":"Compute the current TOTP code (RFC 6238) for a base32 secret and return the code, the seconds remaining in the window, and — when a code is supplied — whether it matches. Defaults match Google Authenticator: 6 digits, 30-second period, HMAC-SHA1. Pass \"time\" (unix seconds) to evaluate a specific moment.","category":"security","parameters":{"type":"object","properties":{"secret":{"type":"string","description":"The base32 TOTP secret (e.g. JBSWY3DPEHPK3PXP). Spaces, dashes, and padding are ignored.","maxLength":1024},"code":{"type":"string","description":"Optional code to verify against the computed one.","maxLength":16},"digits":{"type":"integer","description":"Number of digits. Default: 6.","minimum":6,"maximum":8,"default":6},"period":{"type":"integer","description":"Time step in seconds. Default: 30.","minimum":1,"maximum":3600,"default":30},"time":{"type":"integer","description":"Unix timestamp (seconds) to compute the code for. Default: now.","minimum":0},"algorithm":{"type":"string","description":"HMAC hash. Default: SHA-1.","enum":["SHA-1","SHA-256","SHA-512"],"default":"SHA-1"}},"required":["secret"],"additionalProperties":false},"examples":[]},{"id":"url-params-to-json","name":"URL Params TO Json","description":"Parse URL query parameters into a JSON object. Accepts a full URL or a bare query string, decodes values, strips a trailing \"[]\" from keys, and collapses repeated keys into arrays.","category":"data","parameters":{"type":"object","properties":{"input":{"type":"string","description":"A full URL (https://x.com/a?q=1&tags=a&tags=b) or a query string (\"q=1&tags[]=a&tags[]=b\").","maxLength":100000}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"url-safety-checker","name":"URL Safety Checker","description":"Run offline heuristic safety checks on a URL and return a risk level (low/medium/high), a 0+ risk score, per-check results, and warnings. Checks HTTPS, suspicious TLDs, URL shorteners, phishing keyword patterns, raw IP hosts, deceptive domain characters, and excessive subdomains. No network requests — pattern analysis only.","category":"security","parameters":{"type":"object","properties":{"url":{"type":"string","description":"The URL to check. \"https://\" is assumed when no scheme is given.","maxLength":8192}},"required":["url"],"additionalProperties":false},"examples":[]},{"id":"vat-calculator","name":"VAT Calculator","description":"Return the net amount, the VAT (or sales tax) amount, and the gross amount for a price. Mode add treats the amount as net and adds tax; modes remove and extract treat the amount as gross and take the tax out.","category":"finance","parameters":{"type":"object","properties":{"amount":{"type":"number","description":"The price. Net for mode add; gross for modes remove and extract.","minimum":0},"vat_rate":{"type":"number","description":"Tax rate in percent (20 = 20%).","minimum":0,"maximum":100},"mode":{"type":"string","description":"add, remove, or extract. Default: add.","enum":["add","remove","extract"]}},"required":["amount","vat_rate"],"additionalProperties":false},"examples":[]},{"id":"vcard-generate","name":"Vcard Generate","description":"Generate a vCard (.vcf) contact card from name, organisation, emails, phones, address, URL, note and birthday. vCard 3.0 by default (imports into iOS Contacts, Google Contacts and Outlook), 4.0 on request. Values are escaped and long lines folded per RFC 6350.","category":"generators","parameters":{"type":"object","properties":{"full_name":{"type":"string","description":"Display name (FN). Required.","minLength":1,"maxLength":200},"given_name":{"type":"string","description":"First name (N given part).","maxLength":100},"family_name":{"type":"string","description":"Last name (N family part).","maxLength":100},"organization":{"type":"string","description":"Company or organisation (ORG).","maxLength":200},"title":{"type":"string","description":"Job title (TITLE).","maxLength":200},"emails":{"type":"array","description":"Email addresses (EMAIL). The first is marked preferred.","items":{"type":"string","description":"An email address."}},"phones":{"type":"array","description":"Phone numbers (TEL), international format recommended. The first is marked preferred.","items":{"type":"string","description":"A phone number."}},"street":{"type":"string","description":"Street address (ADR street part).","maxLength":200},"city":{"type":"string","description":"City (ADR locality).","maxLength":100},"region":{"type":"string","description":"State, province or region (ADR region).","maxLength":100},"postal_code":{"type":"string","description":"Postal code (ADR).","maxLength":40},"country":{"type":"string","description":"Country (ADR).","maxLength":100},"url":{"type":"string","description":"Website (URL).","maxLength":500},"note":{"type":"string","description":"Free text (NOTE).","maxLength":2000},"birthday":{"type":"string","description":"Birthday as YYYY-MM-DD (BDAY).","maxLength":10},"version":{"type":"string","description":"vCard version. Defaults to 3.0.","enum":["3.0","4.0"],"default":"3.0"}},"required":["full_name"],"additionalProperties":false},"examples":[]},{"id":"vcf-to-csv","name":"VCF TO CSV","description":"Convert a vCard (.vcf) contacts export from an iPhone, an Android phone, Gmail or Outlook into CSV, one row per contact. vCard 2.1, 3.0 and 4.0 are read, including folded lines, quoted-printable values, group prefixes such as item1.TEL, and bare 2.1 parameters such as TEL;WORK;VOICE. The first email and phone fill their own columns while every value is also listed with its type in the emails and phones columns. A photo is never written into the spreadsheet: PHOTO, LOGO, SOUND and KEY values are dropped and counted. The browser page accepts a 10 MB file; the API and MCP surfaces cap a request at 1 MB, so a large address book belongs on the page.","category":"data","parameters":{"type":"object","properties":{"input":{"type":"string","description":"The .vcf file contents.","maxLength":10000000},"delimiter":{"type":"string","description":"Output field separator. Default: a comma.","maxLength":4,"default":","}},"required":["input"],"additionalProperties":false},"examples":[]},{"id":"water-intake-calculator","name":"Water Intake Calculator","description":"Calculate a recommended daily water intake in liters, ounces, cups, and 250 ml glasses, plus a per-waking-hour amount. Starts at 33 ml per kg of body weight and adjusts for age, activity level, climate, caffeinated drinks, pregnancy, and breastfeeding.","category":"calculators","parameters":{"type":"object","properties":{"weight":{"type":"number","description":"Body weight in kg (metric) or lbs (imperial)."},"age":{"type":"integer","description":"Age in years (1-120). Under 18 adds 10%, over 55 removes 5%.","minimum":1,"maximum":120},"unit_system":{"type":"string","description":"Unit system for weight.","enum":["metric","imperial"],"default":"metric"},"activity_level":{"type":"string","description":"Activity multiplier: sedentary 1.0, light 1.1, moderate 1.2, active 1.35, very_active 1.5.","enum":["sedentary","light","moderate","active","very_active"],"default":"moderate"},"climate":{"type":"string","description":"Climate multiplier: cold 0.95, moderate 1.0, hot 1.15, very_hot 1.3.","enum":["cold","moderate","hot","very_hot"],"default":"moderate"},"caffeine_drinks":{"type":"integer","description":"Caffeinated drinks per day (0-20). Each adds 350 ml.","minimum":0,"maximum":20,"default":0},"pregnant":{"type":"boolean","description":"Adds 300 ml when true.","default":false},"breastfeeding":{"type":"boolean","description":"Adds 700 ml when true.","default":false}},"required":["weight","age"],"additionalProperties":false},"examples":[]},{"id":"whois-lookup","name":"Whois Lookup","description":"Return WHOIS-style registration data for a domain from the public RDAP service: registrar, creation, update and expiry dates, EPP status codes, nameservers and DNSSEC state.","category":"network","parameters":{"type":"object","properties":{"domain":{"type":"string","description":"Registered domain name, e.g. \"example.com\". A URL is accepted; only the hostname is used.","maxLength":253}},"required":["domain"],"additionalProperties":false},"examples":[]},{"id":"windows-update-settings-generator","name":"Windows Update Settings Generator","description":"Generate a Windows Update configuration script (.reg, .ps1, or .bat) plus a matching restore script from a preset and/or individual settings, and return them with a risk level and a change summary. Presets: gamer_mode, full_control, safe_defer, metered, custom. Settings override the preset.","category":"security","parameters":{"type":"object","properties":{"output_format":{"type":"string","description":"Script format. Default: reg.","enum":["reg","ps1","bat"],"default":"reg"},"preset":{"type":"string","description":"Starting preset. Default: custom (all defaults).","enum":["gamer_mode","full_control","safe_defer","metered","custom"],"default":"custom"},"windows_version":{"type":"string","description":"Target Windows edition. Default: win11_pro.","enum":["win11_home","win11_pro","win10_home","win10_pro"],"default":"win11_pro"},"settings":{"type":"object","description":"Overrides: auto_update_mode (disabled|notify_only|download_notify|auto_install), pause_duration (\"7\"|\"30\"|\"90\"|\"365\"|\"max\"), and booleans no_auto_restart, disable_driver_updates, disable_delivery_optimization, disable_wuauserv, disable_uso_svc, disable_waas_medic_svc, disable_scheduled_tasks, minimize_telemetry, set_metered."},"include_restore":{"type":"boolean","description":"Also return the restore script. Default: true.","default":true}},"additionalProperties":false},"examples":[]},{"id":"work-anniversary-calculator","name":"Work Anniversary Calculator","description":"Calculate job tenure between a start date and a target date: years/months/days, totals in days, weeks, months, and hours, approximate working days (5 of 7) and working hours (8 per working day), the weekday the job started, the next work anniversary, and passed/upcoming milestones (1 month to 10 years).","category":"datetime","parameters":{"type":"object","properties":{"start_date":{"type":"string","description":"First day at the job (YYYY-MM-DD).","maxLength":50},"target_date":{"type":"string","description":"Date to measure against (YYYY-MM-DD). Default: today (UTC).","maxLength":50}},"required":["start_date"],"additionalProperties":false},"examples":[]},{"id":"worksheet-generator","name":"Worksheet Generator","description":"Generate a printable math worksheet of addition, subtraction, multiplication, division, or mixed problems at easy (1–10), medium (1–50), or hard (1–100) difficulty, and return the numbered problems with answers, a plain-text worksheet, and an answer-key text. Subtraction never goes negative and division always divides evenly. Pass a seed for a reproducible sheet.","category":"education","parameters":{"type":"object","properties":{"type":{"type":"string","description":"Operation type. Default \"addition\".","enum":["addition","subtraction","multiplication","division","mixed"],"default":"addition"},"difficulty":{"type":"string","description":"Number range: easy 1–10, medium 1–50, hard 1–100. Default \"easy\".","enum":["easy","medium","hard"],"default":"easy"},"count":{"type":"integer","description":"Number of problems. Default 20.","minimum":1,"maximum":200,"default":20},"title":{"type":"string","description":"Worksheet title. Default \"Math Worksheet\".","maxLength":200},"seed":{"type":"integer","description":"Random seed. Same seed and options → same problems.","minimum":0,"maximum":4294967295}},"additionalProperties":false},"examples":[]},{"id":"wvw-apps-json-generator","name":"WVW Apps Json Generator","description":"Build and validate an apps.json manifest for wvw.dev (World Vibe Web) from a store object and a list of apps. Returns the cleaned manifest with $schema and computed categories, plus validation errors (missing fields, bad kebab-case ids, duplicate ids, unknown categories, invalid GitHub URLs) and warnings (invalid optional URLs). Valid category ids: macos, web, cli, developer-tools, productivity, utilities, education, entertainment, games, music, photo-video, graphics-design, social-networking, finance, health-fitness, lifestyle, news, business, reference, travel, food-drink, navigation, sports, weather, shopping, books, medical.","category":"validation","parameters":{"type":"object","properties":{"store":{"type":"object","description":"Store info: { name, developer, tagline?, github? }."},"apps":{"type":"array","description":"Apps: [{ id (kebab-case), name, subtitle, description, category: [ids], platform, price, github, developer?, longDescription?, icon?, iconEmoji?, iconStyle?, homepage?, language?, brew?, installCommand?, downloadUrl?, requirements?, features?, screenshots? }].","items":{"type":"object","description":"App entry."}}},"required":["store","apps"],"additionalProperties":false},"examples":[]},{"id":"x402-config-generator","name":"X402 Config Generator","description":"Return ready-to-paste x402 payment integration code plus the install command: a paywalled SERVER (Express, Hono, Next.js, Fastify, Gin, FastAPI, Flask) with priced routes, or a paying CLIENT (fetch, axios, Go, Python httpx/requests) for the chosen networks.","category":"generators","parameters":{"type":"object","properties":{"role":{"type":"string","description":"Generate code for the seller (server) or the buyer (client).","enum":["server","client"],"default":"server"},"framework":{"type":"string","description":"Server framework (role=server).","enum":["express","hono","nextjs","fastify","gin","fastapi","flask"],"default":"express"},"facilitator_url":{"type":"string","description":"x402 facilitator URL (role=server).","maxLength":500,"default":"https://x402.org/facilitator"},"routes":{"type":"array","description":"Paid routes (role=server): objects with path, method, price (e.g. \"$0.001\"), scheme (exact|upto), network (CAIP-2 id such as \"eip155:8453\"), pay_to (wallet address), description, mime_type.","items":{"type":"object","description":"One paid route."}},"enable_bazaar":{"type":"boolean","description":"Advertise routes in the x402 Bazaar discovery list (role=server).","default":false},"enable_payment_id":{"type":"boolean","description":"Attach a payment id to each settlement (role=server).","default":false},"client_type":{"type":"string","description":"Client library (role=client).","enum":["fetch","axios","go","python-httpx","python-requests"],"default":"fetch"},"networks":{"type":"array","description":"Networks the client can pay on (role=client).","items":{"type":"string","description":"CAIP-2 network id.","enum":["eip155:84532","eip155:8453","eip155:137","eip155:43114","solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","aptos:2","aptos:1","stellar:testnet","stellar:pubnet"]}},"base_url":{"type":"string","description":"Base URL of the paid API (role=client).","maxLength":500,"default":"https://api.example.com"}},"additionalProperties":false},"examples":[]},{"id":"xml-formatter","name":"XML Formatter","description":"Beautify or minify an XML document and return the formatted text. The input is checked for well-formedness first (balanced tags, quoted attributes, one root element); a malformed document returns an error that names the problem and its line. Beautify re-indents one element per line; minify removes whitespace between tags.","category":"validation","parameters":{"type":"object","properties":{"xml":{"type":"string","description":"The XML source to format or minify.","maxLength":2000000},"mode":{"type":"string","description":"beautify = indent one element per line, minify = compact. Default: beautify.","enum":["beautify","minify"],"default":"beautify"},"indent":{"type":"integer","description":"Spaces per indentation level in beautify mode (1-8). Default: 2.","minimum":1,"maximum":8,"default":2}},"required":["xml"],"additionalProperties":false},"examples":[]},{"id":"xml-sitemap-generator","name":"XML Sitemap Generator","description":"Generate a valid XML sitemap from a list of URLs and return the XML, the number of URLs written, the invalid URLs that were skipped, and the byte size. Each URL can carry its own priority, changefreq, and lastmod; defaults apply otherwise. Above 50,000 valid URLs a sitemap index is returned instead.","category":"seo","parameters":{"type":"object","properties":{"urls":{"type":"array","description":"URLs as plain strings or as { url, priority?, changefreq?, lastmod? } objects. Only http(s) URLs are written; others are reported in invalid_urls.","items":{"type":"object","description":"A URL string, or { url: string, priority?: \"0.0\"-\"1.0\", changefreq?: string, lastmod?: \"YYYY-MM-DD\" }"}},"default_priority":{"type":"string","description":"Priority for URLs without one: \"0.0\" to \"1.0\" in steps of 0.1, or \"\" for none. Default \"0.5\".","default":"0.5"},"default_changefreq":{"type":"string","description":"Change frequency for URLs without one. Default \"weekly\"; \"\" omits the tag.","enum":["","always","hourly","daily","weekly","monthly","yearly","never"],"default":"weekly"},"default_lastmod":{"type":"string","description":"Last-modified date (YYYY-MM-DD) for URLs without one. Default: omitted.","maxLength":40},"remove_duplicates":{"type":"boolean","description":"Drop repeated URLs (case-insensitive). Default true.","default":true},"index_base_url":{"type":"string","description":"Base name for child sitemaps when an index is needed. Default \"https://example.com/sitemap\".","maxLength":2000}},"required":["urls"],"additionalProperties":false},"examples":[]},{"id":"yaml-validator","name":"Yaml Validator","description":"Validate YAML and return either the re-formatted document or the parse error with its line and column. Valid input is re-emitted with the chosen indentation, optionally with keys sorted alphabetically at every level.","category":"validation","parameters":{"type":"object","properties":{"yaml":{"type":"string","description":"The YAML text to validate and format.","maxLength":5000000},"indent":{"type":"integer","description":"Indentation width for the formatted output (1-8). Default: 2.","minimum":1,"maximum":8,"default":2},"sort_keys":{"type":"boolean","description":"Sort mapping keys alphabetically at every level. Default: false.","default":false}},"required":["yaml"],"additionalProperties":false},"examples":[]},{"id":"youtube-description-generator","name":"Youtube Description Generator","description":"Assemble a structured YouTube video description from main content, timestamps, links, social links, a call to action and hashtags, with the section headings the page uses (\"⏱️ Timestamps:\", \"🔗 Links & Resources:\", \"📱 Follow Me:\"). Returns the description and its length against the 5,000-character limit. Template-based, no AI.","category":"generators","parameters":{"type":"object","properties":{"title":{"type":"string","description":"Video title. Returned as-is; not part of the description text.","maxLength":500},"category":{"type":"string","description":"Video category label, returned as-is. Default \"tutorial\".","enum":["tutorial","review","vlog","gaming","music","podcast","news","educational","entertainment","other"],"default":"tutorial"},"main_content":{"type":"string","description":"Opening summary of the video. Put the primary keyword in the first 150 characters.","maxLength":10000},"timestamps":{"type":"string","description":"Chapter list, one per line, e.g. \"00:00 - Intro\".","maxLength":10000},"links":{"type":"string","description":"Resource links, one per line.","maxLength":10000},"social_links":{"type":"string","description":"Social profile links, one per line.","maxLength":10000},"hashtags":{"type":"string","description":"Hashtags placed at the end, e.g. \"#React #JavaScript\".","maxLength":1000},"call_to_action":{"type":"string","description":"Closing line. When empty, the default like-and-subscribe line is used.","maxLength":10000}},"additionalProperties":false},"examples":[]},{"id":"yoyo-component-generator","name":"Yoyo Component Generator","description":"Generate Yoyo PHP component boilerplate: the PHP class (properties, props, query string, listeners, lifecycle hooks, actions, computed properties) and the matching PHP, Blade, or Twig template. Anonymous components return only the template.","category":"generators","parameters":{"type":"object","properties":{"name":{"type":"string","description":"Component name (converted to PascalCase). Default: \"MyComponent\".","maxLength":100,"default":"MyComponent"},"namespace":{"type":"string","description":"PHP namespace. Default: \"App\\Yoyo\".","maxLength":200,"default":"App\\Yoyo"},"engine":{"type":"string","description":"Template engine. Default: \"php\".","enum":["php","blade","twig"],"default":"php"},"component_type":{"type":"string","description":"\"dynamic\" (class + template) or \"anonymous\" (template only). Default: \"dynamic\".","enum":["dynamic","anonymous"],"default":"dynamic"},"properties":{"type":"array","description":"Public properties: [{ name, type: string|int|float|bool|array, default_value? }].","items":{"type":"object","description":"Property definition."}},"use_props":{"type":"boolean","description":"Declare $props with every property name. Default: false.","default":false},"use_query_string":{"type":"boolean","description":"Declare $queryString with every property name. Default: false.","default":false},"actions":{"type":"array","description":"Action method names, e.g. [\"increment\", \"decrement\"].","items":{"type":"string","description":"Action name."}},"computed_props":{"type":"array","description":"Computed property names, e.g. [\"doubleCount\"].","items":{"type":"string","description":"Computed property name."}},"listeners":{"type":"array","description":"Event listeners: [{ event, handler }].","items":{"type":"object","description":"Listener definition."}},"hooks":{"type":"array","description":"Lifecycle hooks to stub: any of \"initialize\", \"mount\", \"rendering\", \"rendered\".","items":{"type":"string","description":"Hook name.","enum":["initialize","mount","rendering","rendered"]}}},"additionalProperties":false},"examples":[]},{"id":"yoyo-config-generator","name":"Yoyo Config Generator","description":"Generate Yoyo PHP framework setup code: the composer install command, the bootstrap/service-provider code, the route handler, and a sample page. Supports PHP, Blade, and Twig template engines for vanilla PHP or Laravel.","category":"generators","parameters":{"type":"object","properties":{"engine":{"type":"string","description":"Template engine. Default: \"php\".","enum":["php","blade","twig"],"default":"php"},"framework":{"type":"string","description":"\"vanilla\" PHP or \"laravel\". Default: \"vanilla\".","enum":["vanilla","laravel"],"default":"vanilla"},"url":{"type":"string","description":"Yoyo update endpoint URL. Default: \"/yoyo\".","maxLength":200,"default":"/yoyo"},"scripts_path":{"type":"string","description":"Path to Yoyo scripts. Default: \"assets/js/\".","maxLength":200,"default":"assets/js/"},"namespace":{"type":"string","description":"Component namespace. Default: \"App\\Yoyo\".","maxLength":200,"default":"App\\Yoyo"},"views_dir":{"type":"string","description":"PHP engine: views directory. Default: \"views/yoyo\".","maxLength":200,"default":"views/yoyo"},"blade_cache_path":{"type":"string","description":"Blade engine: compiled views cache path. Default: \"cache/views\".","maxLength":200,"default":"cache/views"},"blade_components_dir":{"type":"string","description":"Blade engine: components directory. Default: \"resources/views/yoyo\".","maxLength":200,"default":"resources/views/yoyo"},"twig_templates_path":{"type":"string","description":"Twig engine: templates path. Default: \"templates/yoyo\".","maxLength":200,"default":"templates/yoyo"},"twig_cache_path":{"type":"string","description":"Twig engine: cache path. Default: \"cache/twig\".","maxLength":200,"default":"cache/twig"},"twig_debug":{"type":"boolean","description":"Twig engine: enable debug mode. Default: false.","default":false}},"additionalProperties":false},"examples":[]},{"id":"yoyo-loading-state-builder","name":"Yoyo Loading State Builder","description":"Build Yoyo PHP \"yoyo:spinning\" loading-state attributes and a ready-to-paste HTML snippet. Choose show/hide, add class, remove class, set attribute, or a combination, with optional delay and target actions.","category":"text","parameters":{"type":"object","properties":{"behavior":{"type":"string","description":"Loading behavior. Default: \"show-hide\".","enum":["show-hide","add-class","remove-class","set-attr","combination"],"default":"show-hide"},"class_name":{"type":"string","description":"CSS class for \"add-class\" or \"remove-class\" (e.g. \"opacity-50\").","maxLength":500},"attribute":{"type":"string","description":"Attribute for \"set-attr\" (e.g. \"disabled\").","maxLength":100},"use_delay":{"type":"boolean","description":"Add yoyo:spinning.delay. Default: false.","default":false},"delay_ms":{"type":"integer","description":"Delay in milliseconds when use_delay is true. Default: 300.","minimum":0,"maximum":60000,"default":300},"target_actions":{"type":"string","description":"Comma-separated action names for yoyo:spin-on (e.g. \"save,submit\").","maxLength":500},"add_class_name":{"type":"string","description":"For \"combination\": class to add.","maxLength":500},"remove_class_name":{"type":"string","description":"For \"combination\": class to remove.","maxLength":500},"add_attribute":{"type":"string","description":"For \"combination\": attribute to set.","maxLength":100}},"additionalProperties":false},"examples":[]}],"count":321}