Skip to content
furl
Esc
↑↓navigate↵open⌘Jpreview

furl

furl is a curl replacement for AI agents: it fetches a URL and returns LLM-optimized markdown.

It works nicely with LLM-friendly websites, and comes with a set of strategies that detect whether a website can serve markdown — so nothing needs parsing and the whole thing runs locally.

furl is also configurable and extensible with plugins, and the same engine is available as a library for Node and Bun.


See it in action

furl https://eve.dev/

Output:

# eve

A filesystem-first, Apache-2.0 framework for building durable backend AI agents that run on Vercel or your own infrastructure. eve is currently in beta.

This file helps AI agents understand and use this documentation site.

## Documentation Surfaces

- [Docs](https://eve.dev/docs): Documentation section: docs
- [Documentation index](https://eve.dev/llms.txt): Curated task-oriented map of the most useful documentation
- [Full documentation context](https://eve.dev/llms-full.txt): All configured documentation as Markdown
- [Semantic documentation sitemap](https://eve.dev/sitemap.md): High-level documentation map for agent navigation
- Canonical HTML pages use `/docs/...`, `/integrations/...`, and `/templates/...` URLs.
...
curl https://eve.dev/

Output:

<!DOCTYPE html>
	<html 
		data-dpl-id="dpl_96XoZyTBc2qfKfdQ21yUA4evwTz3" 
		class="geist_f7ab312d-module__AHFjPq__variable geist_mono_f1b46983-module__KMLIlG__variable antialiased" lang="en">
			<head>
				<meta charSet="utf-8"/>
				<meta name="viewport" content="width=device-width, initial-scale=1"/>
				<link rel="preload" as="image" imageSrcSet="/_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffallback-light-content.08cywqinfyl60.webp&amp;w=32&amp;q=95 32w, /_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffallback-light-content.08cywqinfyl60.webp&amp;w=48&amp;q=95 48w, /_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffallback-light-content.08cywqinfyl60.webp&amp;w=64&amp;q=95 64w, /_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffallback-light-content.08cywqinfyl60.webp&amp;w=96&amp;q=95 96w, /_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffallback-light-content.08cywqinfyl60.webp&amp;w=128&amp;q=95 128w, /_next/image?url=%2F_next%2Fstatic%2Fimmutable%2Fmedia%2Ffal
...

Getting started

Installation

brew install fdarian/tap/furl
Also available via npm
npx furl-cli [url]
pnpx furl-cli [url]
bunx furl-cli [url]

First fetch

furl [url]
furl https://mintlify.com
furl https://github.com/fdarian/nisi
furl https://mintlify.com

Output:

# The Knowledge Platform Built for Agents

> [llms.txt](https://www.mintlify.com/llms.txt)

Self-updating documentation for startups, enterprises, and agents.

URL: https://www.mintlify.com
...

Mintlify honors Accept: text/markdown, so it served markdown directly.

furl https://github.com/fdarian/nisi

Output:

# nisi

[Permalink: nisi](https://github.com/fdarian/nisi#nisi)

**A simpler way to review code.**

* * *

**What's unique about nisi**:

- Re-review only what changed since you last looked. Every other tool resets 400 lines of a reviewed file when you only added one nit. nisi snapshots your review and diffs from there.
...

A GitHub repo page doesn’t serve markdown, so firecrawl handled the parsing.

Tip You can write your own plugin to intercept github.com/<org>/<repo>, route it through the GitHub API, and format the result the way you prefer.

Was this page helpful?