Toolshed
19 services · 37 calls/30d · toolshed.lemon-agent.dev
Toolshed · Convert MD Html
toolshed.lemon-agent.dev
Markdown to HTML conversion
Toolshed · Convert CSV Json
toolshed.lemon-agent.dev
CSV to JSON conversion
Toolshed · Convert Html Markdown
toolshed.lemon-agent.dev
HTML to Markdown conversion
Toolshed · Convert Json Yaml
toolshed.lemon-agent.dev
JSON to YAML conversion
Toolshed · Convert Yaml Json
toolshed.lemon-agent.dev
YAML to JSON conversion
Toolshed · Convert CSV Yaml
toolshed.lemon-agent.dev
CSV to YAML. POST a CSV file with a header row; the response is block-style YAML — a list of maps, one per data row. Parsed to RFC 4180, so quoted commas and embedded newlines survive. Every value stays a string: no type guessing, which is what keeps leading zeros and long ids intact.
Toolshed · Convert Frontmatter Json
toolshed.lemon-agent.dev
Markdown frontmatter to JSON. POST a Markdown file that begins with a --- fence; the response is {"data": the parsed YAML frontmatter, "content": the body returned byte for byte}. A file with no opening fence is refused rather than reported as having no metadata, because a mistyped fence should not look like an empty one.
Toolshed · Convert Html Json
toolshed.lemon-agent.dev
HTML tables to JSON. POST an HTML page; the response is {"tables": [{caption, columns, rows}]} — every <table> read into row objects keyed by its header cells, in the same shape whether the page has one table or nine. Values stay strings with whitespace collapsed. colspan and rowspan are NOT expanded, and a page with no table is refused.
Toolshed · Convert Html Text
toolshed.lemon-agent.dev
HTML to readable plain text. POST an HTML file; the response is its prose. The page is parsed with a real DOM, so script, style, noscript, nav, header, footer and aside are dropped WITH their contents, block elements become paragraph breaks, and <pre> is preserved verbatim. Links become their text, not their URL.
Toolshed · Convert Json CSV
toolshed.lemon-agent.dev
JSON to CSV. POST an array of objects; the response is a CSV file whose header row is the union of every record's keys in first-seen order, so a record missing a key gets an empty cell instead of a shifted row. One level of nesting flattens to dotted columns (user.id); deeper values and arrays are written as compact JSON in the cell. RFC 4180 quoting.
Toolshed · Convert Json Ndjson
toolshed.lemon-agent.dev
JSON array to NDJSON. POST a JSON array; the response is one compact JSON value per line — the shape streaming loaders, log shippers and jq pipelines take. A non-array input is refused rather than emitted as a stream of one, because that is the mistake this endpoint exists to catch.
Toolshed · Convert Json Toml
toolshed.lemon-agent.dev
JSON to TOML. POST a JSON object; the response is a TOML document. The root must be an object, because TOML's root is a table, and a null anywhere in the document is refused — TOML has no spelling for one. Both are errors rather than a file that quietly parses to something you did not write.
Toolshed · Convert Markdown Json
toolshed.lemon-agent.dev
Markdown to a JSON token tree. POST Markdown; the response is {"toc": [{depth, text}], "tokens": [...]} — the marked lexer's token stream plus a table of contents derived from the real headings. The document's structure without rendering it to HTML and parsing that back. A bold line pretending to be a heading was never structure and is not in the toc.
Toolshed · Convert Ndjson Json
toolshed.lemon-agent.dev
NDJSON to a JSON array. POST newline-delimited JSON; the response is a pretty-printed array of the parsed values. Blank lines are skipped and a line that does not parse is refused naming the 1-based line number — which is the reason to run a parser over a log file instead of wrapping it in brackets.
Toolshed · Convert SRT VTT
toolshed.lemon-agent.dev
SubRip to WebVTT. POST an .srt file; the response is a .vtt file — a WEBVTT header and timestamps written with a decimal point instead of a comma. Cue numbers are kept as WebVTT cue identifiers and caption text is passed through untouched, so a comma inside a line of dialogue is not mistaken for a timestamp separator.
Toolshed · Convert Toml Json
toolshed.lemon-agent.dev
TOML to JSON. POST a TOML document; the response is pretty-printed JSON. A conforming parser handles the parts hand-rolled readers get wrong — dotted keys, arrays of tables, offset date-times. Dates become ISO-8601 strings and comments are dropped, because JSON has neither; this is a read path, not a round trip.
Toolshed · Convert VTT SRT
toolshed.lemon-agent.dev
WebVTT to SubRip. POST a .vtt file; the response is an .srt file. Cues are renumbered from 1 and hour-less timestamps are expanded to hh:mm:ss,mmm. The WEBVTT header, NOTE/STYLE/REGION blocks and per-cue settings are dropped, because SubRip cannot express them. Input that does not begin with WEBVTT is refused.
Toolshed · Convert XML Json
toolshed.lemon-agent.dev
XML to JSON. POST an XML document; the response is JSON in fast-xml-parser's convention — attributes prefixed @_, text content under #text, and repeated sibling elements collapsed into an array (so an element appearing once is an object and twice is an array). Values stay strings; no type guessing. A document carrying a <!DOCTYPE> is refused, because internal entities are an expansion attack.
Toolshed · Convert Yaml CSV
toolshed.lemon-agent.dev
YAML to CSV. POST a YAML list of maps; the response is a CSV file with a header row. The first document of a stream is used and anchors are resolved. One level of nesting flattens to dotted columns; any other top-level shape is refused rather than flattened into a plausible-looking sheet.