Twelve composable nodes for turning web pages and documents into PDFs, screenshots, Markdown and structured JSON — with a browser playground, an OpenAPI spec and an MCP endpoint generated from one schema. Runs entirely on Cloudflare's free tier.
Every node has a browser playground, a REST endpoint, an OpenAPI operation and an MCP tool — all generated from one schema definition, so they can never disagree.
Real Chromium: PDFs, screenshots, JavaScript-rendered pages.
Render raw HTML or a live URL into a print-ready PDF with real Chromium.
Capture any URL or HTML string as PNG / JPEG / WebP, at any device size.
Retrieve a page as a chosen user-agent — raw HTTP or fully JS-rendered.
Pull named fields out of a page with CSS selectors — deterministic, no AI tokens.
Deterministic format conversion. No model, no AI quota.
Strip the chrome, keep the article. Typically 80–90% fewer tokens than raw HTML.
PDF, DOCX, XLSX, CSV, ODT and images in — Markdown out.
GitHub-flavoured Markdown to a styled, self-contained HTML document.
One call from model-generated Markdown to a shareable PDF.
Workers AI: summarise, extract, translate, see.
Compress text or a whole web page into Markdown at a length you choose.
Turn messy text or a web page into JSON that matches your schema.
Translate text between 100+ languages while keeping Markdown structure intact.
Read text out of an image, or write alt text and captions for it.
The same parameter definition drives the form you fill in, the validation that runs on the edge, the spec your function-calling framework reads, and the tool list your agent discovers.
curl -X POST https://YOUR-HOST/api/v1/html-to-markdown \
-H 'content-type: application/json' \
-d '{"url":"https://example.com","readability":true}'Binary tools stream the file by default. Add ?output=json to get a descriptor with a download URL instead — much kinder to a model's context window.
{
"mcpServers": {
"ai-function-nodes": {
"type": "http",
"url": "https://YOUR-HOST/mcp"
}
}
}One stateless HTTP endpoint, all 12 tools, no session to manage. Works with Claude Code, Claude Desktop and anything else speaking Streamable HTTP.
Not a trial. The architecture is shaped by the limits: streaming HTML parsing instead of a DOM, browser-session reuse instead of cold launches, deterministic converters before AI ones.
Browser jobs reuse warm sessions and are rate limited per caller, so one heavy user cannot drain the day's allowance.
HTML → Markdown runs as a streaming HTMLRewriter pass: a couple of milliseconds even on large pages, and no AI quota at all.
AI nodes default to the cheapest capable model and tell you what a call costs before you make it.
Optional KV and R2 bindings improve things when present. Without them everything still works — files just come back as base64.