unfurl
Fetch clean link-preview metadata (title, description, image, siteName, favicon, oembed) for any public URL. No signup, no API key. Static-HTML parse only (no JS/SPA render).
urlrequired
io.github.SolvoHQPublished by GitHub account SolvoHQv0.1.0Updated Oct 24, 2026
Zero-signup anonymous link-unfurl API. One GET returns clean JSON metadata for any public URL.
A remote, no-signup MCP server that fetches link-preview metadata (title, description, image, site name, favicon, oEmbed) for any public URL.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.SolvoHQ%2Fopenunfurl/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"openunfurl": {
"type": "http",
"url": "https://openunfurl.vercel.app/api/mcp"
}
}
}A zero-signup link-unfurl / link-preview API. No account, no API key — one GET request.
Give it any public URL, get back clean preview metadata (title, description, image, siteName, favicon, Open Graph / Twitter Card, oembed) as JSON. Built so autonomous AI agents can use it as a tool — an agent has no human to do a signup.
Live: https://openunfurl.vercel.app
Sample response:
Any missing field is null. Errors return JSON with an error key and an
appropriate HTTP status (400 bad/blocked/missing URL, 422 fetch failed,
429 rate limited, 405 wrong method).
OpenUnfurl is also a remote MCP server, so an agent can call it as a tool with no signup, no API key, no OAuth.
https://openunfurl.vercel.app/api/mcpapplication/json response — no sessions, no SSE)unfurl — input { "url": "https://example.com" },
returns the same preview JSON as the REST endpoint (also as structuredContent)Drop this into any MCP client config (Claude Desktop, Cursor, or any client that speaks the Streamable HTTP transport):
Quick smoke test:
Over MCP, an upstream error comes back as a tool result with isError: true.
Managed link-preview alternatives — Microlink, OpenGraph.io, LinkPreview.net,
Unfurl.io, LinkPeek — all gate even their free tier behind a signup and/or an
API key. OpenUnfurl does not: it's a single anonymous GET (or one MCP
tools/call). That's especially useful to autonomous agents, which have no
human in the loop to complete a signup or paste in a key.
<meta> tags client-side you get the static fallback.The entire API is two single zero-dependency Node serverless functions:
api/unfurl.js (REST) and api/mcp.js (remote
MCP). No npm install, no cheerio/jsdom. Deploy the folder to Vercel
(zero-config /api detection) or drop the handlers into any Node serverless
runtime.
MIT — see LICENSE.
Source: README.md at commit 055b395
Fetch clean link-preview metadata (title, description, image, siteName, favicon, oembed) for any public URL. No signup, no API key. Static-HTML parse only (no JS/SPA render).
urlrequired100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
curl "https://openunfurl.vercel.app/api/unfurl?url=https://github.com"{ "url": "https://github.com", "resolvedUrl": "https://github.com/", "title": "GitHub · Build and ship software on a single, collaborative platform", "description": "Join the world's most widely adopted, AI-powered developer platform where millions of developers, businesses, and the largest open source community build software that advances humanity.", "image": "https://github.githubassets.com/assets/campaign-social-031d6161fa10.png", "siteName": "GitHub", "type": "object", "favicon": "https://github.githubassets.com/favicons/favicon.svg", "oembed": null, "fetchedAt": "2026-05-17T00:00:00.000Z", "engine": "static-html-v0.1", "note": "v0.1 parses static HTML only — no JS/SPA render"}const base = "https://openunfurl.vercel.app";const r = await fetch( base + "/api/unfurl?url=" + encodeURIComponent("https://example.com"));const meta = await r.json(); // { title, description, image, favicon, ... }{ "mcpServers": { "openunfurl": { "url": "https://openunfurl.vercel.app/api/mcp" } } }curl -s -X POST https://openunfurl.vercel.app/api/mcp \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"unfurl","arguments":{"url":"https://example.com"}}}'git clone https://github.com/SolvoHQ/openunfurlcd openunfurlnpx vercel --prod