{"openapi":"3.1.0","info":{"title":"Agent-Native Tool Factory","version":"1.0.0","description":"A collection of deterministic utility tools with REST API, OpenAPI schema, and MCP server."},"servers":[{"url":"https://quickhelp.dev","description":"Production"}],"paths":{"/api/jwt-decoder":{"post":{"operationId":"jwt-decoder","summary":"Decode and verify JSON Web Tokens — header, payload, claims, and signature.","description":"Paste a JSON Web Token to instantly decode its header and payload. Optionally supply a secret or public key to verify the signature.","tags":["encoding"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"token":{"type":"string","minLength":10,"description":"The JWT string (three base64url-encoded parts separated by dots)"},"secret":{"type":"string"},"algorithm":{"type":"string","enum":["HS256","HS384","HS512","RS256","RS384","RS512","ES256","ES384","ES512"],"default":"HS256"}},"required":["token","algorithm"]},"examples":{"Decode a basic JWT":{"summary":"Decode a basic JWT","value":{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"header":{},"payload":{},"signature":{"type":"string"},"valid_structure":{"type":"boolean"},"verified":{"type":"boolean"}},"required":["header","payload","signature","valid_structure"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/jwt-decoder","description":"Interactive UI for JWT Decoder"}}},"/api/json-formatter":{"post":{"operationId":"json-formatter","summary":"Pretty-print or minify JSON — with syntax validation.","description":"Paste raw or minified JSON and format it with configurable indentation, or minify it by removing all whitespace. Validates syntax, reports parse errors with line/column, and optionally sorts keys or repairs malformed JSON.","tags":["formatting"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"json":{"type":"string","minLength":1,"description":"The JSON string to format or minify"},"mode":{"type":"string","enum":["pretty","minify"],"default":"pretty"},"indent":{"default":2},"sort_keys":{"type":"boolean","default":false},"repair":{"type":"boolean","default":false}},"required":["json","mode","indent","sort_keys","repair"]},"examples":{"Pretty-print JSON":{"summary":"Pretty-print JSON","value":{"json":"{\"name\":\"Alice\",\"age\":30}","mode":"pretty","indent":2,"sort_keys":false,"repair":false}},"Minify JSON":{"summary":"Minify JSON","value":{"json":"{\n  \"name\": \"Alice\",\n  \"age\": 30\n}","mode":"minify","indent":2,"sort_keys":false,"repair":false}},"Sort keys":{"summary":"Sort keys","value":{"json":"{\"z\":1,\"a\":2}","mode":"pretty","indent":2,"sort_keys":true,"repair":false}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string"},"valid":{"type":"boolean"},"error":{"type":"string"},"error_line":{"type":"number"},"error_column":{"type":"number"}},"required":["output","valid"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/json-formatter","description":"Interactive UI for JSON Formatter"}}},"/api/image-converter":{"post":{"operationId":"image-converter","summary":"Convert images between PNG, JPEG, WebP, AVIF, TIFF, GIF, and SVG formats","description":"Upload an image and convert it to another format. Supports PNG, JPEG, WebP, AVIF, TIFF, GIF as both input and output; SVG is accepted as input only. Maximum input size is 3 MB. Returns the converted image as a base64 string along with dimensions and file size.","tags":["conversion"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded image data (no data-URL prefix)"},"from":{"type":"string","enum":["png","jpeg","webp","avif","tiff","gif","svg"],"description":"Source format of the input image"},"to":{"type":"string","enum":["png","jpeg","webp","avif","tiff","gif"],"description":"Target format for the converted image"},"quality":{"type":"integer","minimum":1,"maximum":100,"default":80}},"required":["image","from","to","quality"]},"examples":{"PNG to WebP":{"summary":"PNG to WebP","value":{"image":"<base64-png>","from":"png","to":"webp","quality":80}},"JPEG to AVIF":{"summary":"JPEG to AVIF","value":{"image":"<base64-jpeg>","from":"jpeg","to":"avif","quality":70}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded converted image"},"format":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"size_bytes":{"type":"number"}},"required":["image","format","width","height","size_bytes"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/image-converter","description":"Interactive UI for Image Converter"}}},"/api/background-remover":{"post":{"operationId":"background-remover","summary":"Remove image backgrounds instantly with AI — returns a transparent PNG","description":"Upload any image and the AI model removes the background, returning a transparent PNG. Processing runs in your browser — your image is never uploaded to our servers. Supports JPG, PNG, WebP, and more.","tags":["conversion"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded image data (no data-URL prefix)"}},"required":["image"]},"examples":{"Remove background from a photo":{"summary":"Remove background from a photo","value":{"image":"<base64-image>"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded transparent PNG with background removed"}},"required":["image"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/background-remover","description":"Interactive UI for Background Remover"}}},"/api/lcov-viewer":{"post":{"operationId":"lcov-viewer","summary":"Parse and visualize LCOV code coverage reports — line, function, and branch coverage per file.","description":"Paste or upload an LCOV .info file (generated by Jest, Istanbul/nyc, Vitest, gcov, coverage.py, and more) to get a structured coverage summary with per-file breakdown. All processing runs in your browser — your code never leaves your device.","tags":["validation"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"lcov":{"type":"string","description":"Raw LCOV .info file content"}},"required":["lcov"]},"examples":{"Parse a Jest LCOV report":{"summary":"Parse a Jest LCOV report","value":{"lcov":"TN:\nSF:src/utils.ts\nFNF:3\nFNH:2\nBRF:8\nBRH:6\nDA:1,1\nDA:2,1\nDA:3,0\nLF:3\nLH:2\nend_of_record"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"summary":{"type":"object","properties":{"linesCoverage":{"type":"number","description":"Overall line coverage 0–100"},"functionsCoverage":{"type":"number","description":"Overall function coverage 0–100"},"branchesCoverage":{"type":"number","description":"Overall branch coverage 0–100"},"linesHit":{"type":"number"},"linesFound":{"type":"number"},"functionsHit":{"type":"number"},"functionsFound":{"type":"number"},"branchesHit":{"type":"number"},"branchesFound":{"type":"number"}},"required":["linesCoverage","functionsCoverage","branchesCoverage","linesHit","linesFound","functionsHit","functionsFound","branchesHit","branchesFound"]},"files":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"linesCoverage":{"type":"number","description":"Line coverage percentage 0–100"},"functionsCoverage":{"type":"number","description":"Function coverage percentage 0–100"},"branchesCoverage":{"type":"number","description":"Branch coverage percentage 0–100"},"linesHit":{"type":"number"},"linesFound":{"type":"number"},"functionsHit":{"type":"number"},"functionsFound":{"type":"number"},"branchesHit":{"type":"number"},"branchesFound":{"type":"number"}},"required":["path","linesCoverage","functionsCoverage","branchesCoverage","linesHit","linesFound","functionsHit","functionsFound","branchesHit","branchesFound"]}}},"required":["summary","files"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/lcov-viewer","description":"Interactive UI for LCOV Coverage Viewer"}}},"/api/image-resizer":{"post":{"operationId":"image-resizer","summary":"Resize, crop, rotate, and flip images online — free, runs in your browser, no upload required.","description":"Upload any image to resize it to exact pixel dimensions, crop a region, rotate by 90-degree increments, or flip horizontally/vertically. Supports PNG, JPEG, WebP, AVIF, GIF input. Outputs PNG, JPEG, or WebP. The browser UI uses Canvas API — no image leaves your device.","tags":["conversion"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded image (no data-URL prefix)"},"width":{"type":"integer","minimum":0},"height":{"type":"integer","minimum":0},"fit":{"type":"string","enum":["contain","cover","fill","inside","outside"],"default":"inside"},"cropX":{"type":"integer","minimum":0},"cropY":{"type":"integer","minimum":0},"cropWidth":{"type":"integer","minimum":0},"cropHeight":{"type":"integer","minimum":0},"rotate":{},"flipHorizontal":{"type":"boolean"},"flipVertical":{"type":"boolean"},"format":{"type":"string","enum":["png","jpeg","webp"],"default":"png"},"quality":{"type":"integer","minimum":1,"maximum":100,"default":85}},"required":["image","fit","format","quality"]},"examples":{"Resize to 400 wide, preserve aspect ratio":{"summary":"Resize to 400 wide, preserve aspect ratio","value":{"image":"<base64-image>","width":400,"fit":"inside","format":"png"}},"Crop a 200×200 square from top-left":{"summary":"Crop a 200×200 square from top-left","value":{"image":"<base64-image>","cropX":0,"cropY":0,"cropWidth":200,"cropHeight":200,"format":"webp","quality":80}},"Rotate 90° clockwise":{"summary":"Rotate 90° clockwise","value":{"image":"<base64-image>","rotate":90,"format":"jpeg","quality":85}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"image":{"type":"string","description":"Base64-encoded output image"},"format":{"type":"string"},"width":{"type":"number"},"height":{"type":"number"},"originalWidth":{"type":"number"},"originalHeight":{"type":"number"},"sizeBytes":{"type":"number"}},"required":["image","format","width","height","originalWidth","originalHeight","sizeBytes"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/image-resizer","description":"Interactive UI for Image Resizer & Cropper"}}},"/api/base64":{"post":{"operationId":"base64","summary":"Encode text or data to Base64, or decode Base64 back to plain text.","description":"Encode any UTF-8 string to Base64 or decode a Base64 string back to plain text. Supports standard Base64 (RFC 4648) and URL-safe Base64 (uses - and _ instead of + and /). Detects and reports malformed input.","tags":["encoding"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"The string to encode or decode"},"mode":{"type":"string","enum":["encode","decode"],"default":"encode"},"charset":{"type":"string","enum":["standard","url-safe"],"default":"standard"}},"required":["input","mode","charset"]},"examples":{"Encode text to Base64":{"summary":"Encode text to Base64","value":{"input":"Hello, World!","mode":"encode","charset":"standard"}},"Decode Base64 to text":{"summary":"Decode Base64 to text","value":{"input":"SGVsbG8sIFdvcmxkIQ==","mode":"decode","charset":"standard"}},"URL-safe encode":{"summary":"URL-safe encode","value":{"input":"quickhelp.dev/base64?mode=encode","mode":"encode","charset":"url-safe"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string"},"valid":{"type":"boolean"},"encoding":{"type":"string","enum":["standard","url-safe"]},"byte_length":{"type":"integer","description":"Byte length of the input (encode) or decoded output (decode)"},"error":{"type":"string"}},"required":["output","valid","encoding","byte_length"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/base64","description":"Interactive UI for Base64 Encoder / Decoder"}}},"/api/hash-generator":{"post":{"operationId":"hash-generator","summary":"Generate MD5, SHA-1, SHA-256, SHA-384, or SHA-512 hashes from any text input.","description":"Compute cryptographic hashes of any UTF-8 string using the most common algorithms: MD5, SHA-1, SHA-256, SHA-384, and SHA-512. Output is a lowercase hex or base64 digest. Useful for verifying data integrity, generating checksums, and working with APIs that require signed requests.","tags":["cryptography"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"The text to hash"},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha384","sha512"],"default":"sha256"},"encoding":{"type":"string","enum":["hex","base64"],"default":"hex"}},"required":["input","algorithm","encoding"]},"examples":{"SHA-256 hex digest":{"summary":"SHA-256 hex digest","value":{"input":"Hello, World!","algorithm":"sha256","encoding":"hex"}},"MD5 checksum":{"summary":"MD5 checksum","value":{"input":"Hello, World!","algorithm":"md5","encoding":"hex"}},"SHA-512 base64":{"summary":"SHA-512 base64","value":{"input":"password123","algorithm":"sha512","encoding":"base64"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hash":{"type":"string","description":"The computed hash digest"},"algorithm":{"type":"string","enum":["md5","sha1","sha256","sha384","sha512"]},"encoding":{"type":"string","enum":["hex","base64"]},"input_byte_length":{"type":"integer","description":"Byte length of the UTF-8 input"},"digest_length":{"type":"integer","description":"Character length of the hash output"}},"required":["hash","algorithm","encoding","input_byte_length","digest_length"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/hash-generator","description":"Interactive UI for Hash Generator"}}},"/api/url-encoder":{"post":{"operationId":"url-encoder","summary":"Encode or decode URLs and query string components using percent-encoding (RFC 3986).","description":"Encode any string for safe use in a URL or query parameter using percent-encoding (RFC 3986), or decode a percent-encoded string back to plain text. Supports both full URL encoding (preserves ://?=& structure) and component encoding (encodes every special character). Shows a character-by-character encoding table for reference.","tags":["encoding"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"The string to encode or decode"},"mode":{"type":"string","enum":["encode-component","encode-full","decode"],"default":"encode-component"}},"required":["input","mode"]},"examples":{"Encode a query parameter value":{"summary":"Encode a query parameter value","value":{"input":"hello world & more=stuff","mode":"encode-component"}},"Encode a full URL (preserve structure)":{"summary":"Encode a full URL (preserve structure)","value":{"input":"https://example.com/search?q=hello world&lang=en","mode":"encode-full"}},"Decode a percent-encoded string":{"summary":"Decode a percent-encoded string","value":{"input":"hello%20world%20%26%20more%3Dstuff","mode":"decode"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string","description":"The encoded or decoded result"},"mode":{"type":"string","enum":["encode-component","encode-full","decode"]},"changed":{"type":"boolean","description":"True if the output differs from the input"},"encoding_table":{"type":"array","items":{"type":"object","properties":{"original":{"type":"string"},"encoded":{"type":"string"}},"required":["original","encoded"]},"description":"Characters that were changed, for reference (encode modes only)"}},"required":["output","mode","changed","encoding_table"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/url-encoder","description":"Interactive UI for URL Encoder / Decoder"}}},"/api/timestamp-converter":{"post":{"operationId":"timestamp-converter","summary":"Convert Unix timestamps to human-readable dates and ISO 8601, or convert dates back to epoch seconds.","description":"Convert Unix epoch timestamps (seconds or milliseconds since 1970-01-01T00:00:00Z) to ISO 8601, UTC, and local date-time strings — or parse any date string back to a Unix timestamp. Shows the relative time from now (e.g. '3 days ago'). Accepts seconds, milliseconds, or an ISO 8601 / RFC 2822 date string as input.","tags":["datetime"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"A Unix timestamp in seconds or milliseconds (e.g. 1716998400 or 1716998400000), or a date string in ISO 8601 or RFC 2822 format (e.g. '2024-05-29T12:00:00Z' or 'Wed, 29 May 2024 12:00:00 +0000')"},"mode":{"type":"string","enum":["auto","to-date","to-timestamp"],"default":"auto"}},"required":["input","mode"]},"examples":{"Unix seconds to date":{"summary":"Unix seconds to date","value":{"input":"1716998400","mode":"to-date"}},"ISO 8601 date to Unix timestamp":{"summary":"ISO 8601 date to Unix timestamp","value":{"input":"2024-05-29T16:00:00Z","mode":"to-timestamp"}},"Unix milliseconds auto-detected":{"summary":"Unix milliseconds auto-detected","value":{"input":"1716998400000","mode":"auto"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"unix_seconds":{"type":"integer","description":"Unix timestamp in seconds"},"unix_ms":{"type":"integer","description":"Unix timestamp in milliseconds"},"iso8601":{"type":"string","description":"ISO 8601 UTC string (e.g. 2024-05-29T12:00:00.000Z)"},"utc":{"type":"string","description":"Human-readable UTC string (e.g. Wed, 29 May 2024 12:00:00 UTC)"},"relative":{"type":"string","description":"Relative time from now (e.g. '3 days ago', 'in 2 hours')"},"valid":{"type":"boolean"},"error":{"type":"string"}},"required":["unix_seconds","unix_ms","iso8601","utc","relative","valid"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/timestamp-converter","description":"Interactive UI for Unix Timestamp Converter"}}},"/api/uuid-generator":{"post":{"operationId":"uuid-generator","summary":"Generate one or more cryptographically random UUID v4 identifiers instantly.","description":"Generate cryptographically random UUID version 4 identifiers (RFC 4122) using the Node.js crypto module. Produces between 1 and 100 UUIDs per request, in standard hyphenated format or compact (no hyphens). Also validates whether a given string is a valid UUID.","tags":["generation"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer","minimum":1,"maximum":100,"default":1},"format":{"type":"string","enum":["hyphenated","compact"],"default":"hyphenated"},"validate":{"type":"string"}},"required":["count","format"]},"examples":{"Generate one UUID v4":{"summary":"Generate one UUID v4","value":{"count":1,"format":"hyphenated"}},"Generate 5 compact UUIDs":{"summary":"Generate 5 compact UUIDs","value":{"count":5,"format":"compact"}},"Validate a UUID":{"summary":"Validate a UUID","value":{"count":1,"format":"hyphenated","validate":"550e8400-e29b-41d4-a716-446655440000"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"uuids":{"type":"array","items":{"type":"string"},"description":"Generated UUID(s)"},"count":{"type":"integer"},"format":{"type":"string","enum":["hyphenated","compact"]},"is_valid":{"type":"boolean"},"validated_version":{"type":"string"}},"required":["uuids","count","format"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/uuid-generator","description":"Interactive UI for UUID Generator"}}},"/api/text-case-converter":{"post":{"operationId":"text-case-converter","summary":"Convert text between camelCase, snake_case, kebab-case, PascalCase, and 7 other naming conventions.","description":"Convert any identifier or phrase between 11 naming conventions: camelCase, PascalCase, snake_case, SCREAMING_SNAKE_CASE, kebab-case, COBOL-CASE, dot.case, Title Case, Sentence case, lowercase, and UPPERCASE. Intelligently splits on whitespace, hyphens, underscores, dots, and camelCase boundaries so you can convert between any two formats in one step.","tags":["text"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"The text or identifier to convert"},"to":{"type":"string","enum":["camelCase","PascalCase","snake_case","SCREAMING_SNAKE_CASE","kebab-case","COBOL-CASE","dot.case","Title Case","Sentence case","lowercase","UPPERCASE"],"description":"Target case: camelCase | PascalCase | snake_case | SCREAMING_SNAKE_CASE | kebab-case | COBOL-CASE | dot.case | Title Case | Sentence case | lowercase | UPPERCASE"}},"required":["input","to"]},"examples":{"camelCase to snake_case":{"summary":"camelCase to snake_case","value":{"input":"myVariableName","to":"snake_case"}},"snake_case to kebab-case":{"summary":"snake_case to kebab-case","value":{"input":"my_variable_name","to":"kebab-case"}},"Phrase to PascalCase":{"summary":"Phrase to PascalCase","value":{"input":"hello world example","to":"PascalCase"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string","description":"The converted text"},"tokens":{"type":"array","items":{"type":"string"},"description":"Words extracted from the input before conversion"},"from_detected":{"type":"string","description":"The naming convention detected in the input"}},"required":["output","tokens","from_detected"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/text-case-converter","description":"Interactive UI for Text Case Converter"}}},"/api/json-to-csv":{"post":{"operationId":"json-to-csv","summary":"Convert a JSON array of objects to CSV, or parse CSV back to JSON.","description":"Convert a JSON array of objects to a comma-separated values (CSV) file with a header row, or parse a CSV string back to a JSON array. Handles nested objects by dot-notation flattening (e.g. address.city), quoted fields with embedded commas or newlines, and configurable delimiters (comma, semicolon, tab).","tags":["formatting"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1,"description":"A JSON array of objects (e.g. [{\"name\":\"Alice\"}]) or a CSV string to parse back to JSON"},"mode":{"type":"string","enum":["json-to-csv","csv-to-json"],"default":"json-to-csv"},"delimiter":{"type":"string","enum":[",",";","\t"],"default":","},"flatten":{"type":"boolean","default":true}},"required":["input","mode","delimiter","flatten"]},"examples":{"JSON array to CSV":{"summary":"JSON array to CSV","value":{"input":"[{\"name\":\"Alice\",\"age\":30,\"city\":\"London\"},{\"name\":\"Bob\",\"age\":25,\"city\":\"Paris\"}]","mode":"json-to-csv","delimiter":",","flatten":true}},"CSV to JSON array":{"summary":"CSV to JSON array","value":{"input":"name,age,city\nAlice,30,London\nBob,25,Paris","mode":"csv-to-json","delimiter":",","flatten":true}},"Nested object flattening":{"summary":"Nested object flattening","value":{"input":"[{\"name\":\"Alice\",\"address\":{\"city\":\"London\",\"zip\":\"EC1A\"}}]","mode":"json-to-csv","delimiter":",","flatten":true}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"output":{"type":"string","description":"The converted CSV or JSON string"},"row_count":{"type":"integer","description":"Number of data rows (excluding header)"},"column_count":{"type":"integer","description":"Number of columns"},"columns":{"type":"array","items":{"type":"string"},"description":"Column headers"},"mode":{"type":"string","enum":["json-to-csv","csv-to-json"]},"error":{"type":"string"}},"required":["output","row_count","column_count","columns","mode"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/json-to-csv","description":"Interactive UI for JSON to CSV Converter"}}},"/api/color-converter":{"post":{"operationId":"color-converter","summary":"Convert colors between HEX, RGB, HSL, and HSV — instantly and in any direction.","description":"Convert any color between HEX (#rrggbb), RGB (r, g, b), HSL (hue, saturation, lightness), and HSV/HSB (hue, saturation, value) formats. Accepts HEX with or without the # prefix, shorthand HEX (#abc), rgb() function syntax, hsl() function syntax, or bare r,g,b values. Returns all four representations at once.","tags":["conversion"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"color":{"type":"string","minLength":1,"description":"Color in any format: #rrggbb, #rgb, rrggbb, rgb(r,g,b), r,g,b, hsl(h,s%,l%), or hsv(h,s%,v%)"}},"required":["color"]},"examples":{"HEX to all formats":{"summary":"HEX to all formats","value":{"color":"#ff6600"}},"RGB to all formats":{"summary":"RGB to all formats","value":{"color":"rgb(30, 144, 255)"}},"Shorthand HEX":{"summary":"Shorthand HEX","value":{"color":"#abc"}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"hex":{"type":"string","description":"HEX color code with # prefix (e.g. #ff6600)"},"rgb":{"type":"object","properties":{"r":{"type":"integer"},"g":{"type":"integer"},"b":{"type":"integer"},"css":{"type":"string","description":"CSS rgb() function string"}},"required":["r","g","b","css"]},"hsl":{"type":"object","properties":{"h":{"type":"integer","description":"Hue 0–360"},"s":{"type":"integer","description":"Saturation 0–100"},"l":{"type":"integer","description":"Lightness 0–100"},"css":{"type":"string","description":"CSS hsl() function string"}},"required":["h","s","l","css"]},"hsv":{"type":"object","properties":{"h":{"type":"integer","description":"Hue 0–360"},"s":{"type":"integer","description":"Saturation 0–100"},"v":{"type":"integer","description":"Value/Brightness 0–100"}},"required":["h","s","v"]},"valid":{"type":"boolean"},"error":{"type":"string"}},"required":["hex","rgb","hsl","hsv","valid"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/color-converter","description":"Interactive UI for Color Converter"}}},"/api/number-base-converter":{"post":{"operationId":"number-base-converter","summary":"Convert numbers between binary, octal, decimal, and hexadecimal.","description":"Convert any integer between base 2 (binary), base 8 (octal), base 10 (decimal), and base 16 (hexadecimal). Returns all four representations at once, with grouped formats for readability. Supports arbitrarily large integers via BigInt.","tags":["encoding"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"input":{"type":"string","minLength":1},"from_base":{}},"required":["input","from_base"]},"examples":{"Decimal 255 to all bases":{"summary":"Decimal 255 to all bases","value":{"input":"255","from_base":10}},"Hex FF to all bases":{"summary":"Hex FF to all bases","value":{"input":"FF","from_base":16}}}}}},"responses":{"200":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","properties":{"input_normalized":{"type":"string"},"from_base":{"type":"number"},"decimal":{"type":"string"},"binary":{"type":"string"},"octal":{"type":"string"},"hexadecimal":{"type":"string"},"binary_grouped":{"type":"string"},"hex_grouped":{"type":"string"},"bit_length":{"type":"number"},"is_power_of_two":{"type":"boolean"}},"required":["input_normalized","from_base","decimal","binary","octal","hexadecimal","binary_grouped","hex_grouped","bit_length","is_power_of_two"]}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"externalDocs":{"url":"https://quickhelp.dev/number-base-converter","description":"Interactive UI for Number Base Converter"}}}},"components":{"schemas":{}}}