mcpbeat Sign in

esyURL MCP Server

answering

esyURL is answering right now. Last checked 2 min ago. It exposes 21 tools. Last commit 7 Oct 2026.

Short links and trackable QR codes: editable after printing, device routing, scan stats.

Uptime history 5 days of history
5 days agonow
100.0%
Uptime 24h
92 of 92 checks
21
Tools
read from the server
354 ms
Response time
average over 24h
0
Stars
last commit 7 Oct 2026

What changed 8

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 11 October 2026. No other catalogue keeps this.

11 Oct 4 tool descriptions were rewritten create_short_link, get_short_link_visits, test_redirect_rules and 1 more
11 Oct 2 tools appeared preview_link_page, set_domain_home_page
11 Oct 2 tools changed the parameters they ask for create_short_link, update_short_link

Nothing serious here today

Today is the operative word: we check esyURL every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 2 min ago.

run in your terminal
claude mcp add mcp --transport http https://esyurl.fyi/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://esyurl.fyi/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.mcp]
url = "https://esyurl.fyi/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://esyurl.fyi/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "mcp": {
      "url": "https://esyurl.fyi/mcp"
    }
  }
}

Available tools 21

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

short
create_short_link
Create a short link that redirects to targetUrl, or shows a link page (pass page instead of targetUrl). Returns the link, including linkId (use it with the other tools) and shortUrl (share this). Give a slug for a memorable URL, otherwise a random 8-character one is generated. Slugs are unique across all tenants and cannot be changed later (409 if taken; route names like "api", "admin", "health" are reserved).
delete_short_link
Permanently delete a short link and remove it from its groups. Its short URL and any printed QR codes stop working (404) and the slug becomes free for anyone. Prefer update_short_link status "paused" if the link may come back.
get_short_link
Fetch one short link by linkId, including its groupIds and lifetime visitCount.
get_short_link_visits
Visit analytics for one link: totals over the window ({visits, qr, direct, bot}; visits = qr + direct, bots such as link-preview crawlers are counted separately and excluded from visits), a zero-filled per-day breakdown (UTC, oldest first), and the most recent individual visits (newest first, with source, referrerHost, userAgent, country when known, and ruleId when a redirect rule decided it; kept 90 days). byRule splits the window's visits by rule (fallback = went to the link's targetUrl); daily entries carry byRule on days a rule matched. For link pages, byItem counts button clicks per item (daily entries carry clicks by item id).
list_short_links
List your short links, newest first. Filter by tag and/or groupId. A page can hold fewer than limit items even when more exist: keep calling with cursor = nextCursor until nextCursor is absent.
update_short_link
Change a short link. Only the fields you pass change; tags, metadata, qrStyle and groupIds are replaced wholesale (pass the full new list; [] clears). Set targetUrl to send visitors somewhere else: the short URL and printed QR codes keep working. Set status "paused" to make the short URL answer 410, "active" to resume. The slug cannot be changed. page replaces the whole link page (a redirect becomes a page); page: null with a targetUrl turns a page back into a redirect.
group
create_group
Create a group to organise short links (e.g. a campaign or a venue). Groups are many-to-many: a link can be in up to 20 groups. Add links with add_links_to_group, or pass groupIds when creating/updating a link.
delete_group
Delete a group. Its links are NOT deleted; they just stop being members.
get_group
Fetch one group. To see its links use list_short_links with group = groupId.
get_group_visits
Combined visit analytics for a group's current member links: totals {visits, qr, direct, bot} and a zero-filled per-day breakdown (UTC). Links removed from the group no longer count.
update_group
Rename a group or change its description or color. Membership doesn't change here.
custom
get_custom_domain
Get this tenant's custom (alias) domain and advance its setup as far as DNS allows. Use it to check progress after creating a DNS record. Lifecycle: pending_validation (create the certificate_validation record, and the optional ownership_verification TXT if listed) → provisioning (automatic, seconds) → pending_dns (create the routing CNAME from the domain to `target`) → active. Nothing advances on its own: call get_custom_domain after each DNS change to move it along. The response always carries `dnsRecords` (exact name/type/value to create, with `done` once seen) and `instructions` saying what to do next.
remove_custom_domain
Remove this tenant's custom domain. Short links immediately stop resolving on it (QR codes printed with it break) and new short URLs use the platform domain. The DNS records can be deleted afterwards.
set_custom_domain
Serve all of this tenant's short links on a domain it controls, e.g. "go.acme.com" → https://go.acme.com/{slug}. Once active, new short URLs and QR codes use it; links keep working on the platform domain too. One domain per tenant: setting a different one replaces (and tears down) the current one. Setting the same one again is harmless, and restarts it if it failed. Two DNS records are needed at the domain's DNS provider, returned one at a time: first a record (TXT or CNAME) that proves control (for the TLS certificate), then a CNAME pointing the domain at the platform. Lifecycle: pending_validation (create the certificate_validation record, and the optional ownership_verification TXT if listed) → provisioning (automatic, seconds) → pending_dns (create the routing CNAME from the domain to `target`) → active. Nothing advances on its own: call get_custom_domain after each DNS change to move it along. The response always carries `dnsRecords` (exact name/type/value to create, with `done` once seen) and `instructions` saying what to do next. Self-signed-up tenants (see /auth.md) pay once per new domain with x402: without a payment the tool returns an error whose structuredContent is an x402 PaymentRequired (x402Version 2, exact scheme, USDC). Retry with the signed PaymentPayload in the request's _meta["x402/payment"] (the x402 MCP transport), or, if your client cannot set _meta, in the `payment` argument. The settlement comes back in _meta["x402/payment-response"]. Re-setting the current domain, reading and removing are free; tenants given a key by an operator never pay.
domain
set_domain_home_page
Choose the link that the root (/) of this tenant's custom domain shows: a link page becomes the domain's home page, a redirect link sends / there. Pass linkId null to clear it (/ answers 404 again). Has no effect on the platform domain.
groups
list_groups
List your groups (with linkCount), ordered by groupId. Page with cursor = nextCursor.
link
remove_link_from_group
Take one link out of a group. The link itself is untouched.
links
add_links_to_group
Add up to 25 links to a group in one call. Idempotent: links already in the group are reported in alreadyMembers rather than failing. Fails with not_found if any linkId is unknown (nothing is added).
preview
preview_link_page
Render a link's page as HTML for a simulated visit, without recording anything: the saved page, or a draft (page) to try before saving (pictures given as data URLs are drawn inline; nothing is stored or charged). Returns the visible item ids (items with "when" conditions depend on the visit) and the HTML.
render
render_qr_code
Render a QR code as a PNG image. Pass linkId to render a short link: the image encodes {shortUrl}?s=qr so scans are counted as qr visits, and the link's qrStyle is the default look. Or pass data to render any text (URL, Wi-Fi config, vCard...) as a static QR code that is not tracked. Returns the image plus a text line naming exactly what was encoded. Styles are free: module shapes, corner markers, a logo or a halftone photo. For SVG, use GET /v1/links/{linkId}/qr?format=svg.
test
test_redirect_rules
Dry run: which destination would a visit with these properties get from this link's rules? For a link page with no matching rule it returns page.itemIds (the buttons that visit would see) instead of targetUrl. Records no visit. Pass a real userAgent to test device routing, e.g. iPhone: "Mozilla/5.0 (iPhone; CPU iPhone OS 17_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.0 Mobile/15E148 Safari/604.1", Android: "Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Mobile Safari/537.36". Returns targetUrl, matchedRule (absent when the link's targetUrl is used) and the context the rules saw (os, device, browser, language, country, referrer, source, query, at).

Endpoints

URLTransportStateLatencyChecked
https://esyurl.fyi/mcp streamable-http answering 683 ms 2 min ago

Alternatives to esyURL

same job, measured the same way
Link Center
by mylink

Dynamic, editable QR codes + short links with scan analytics and branded QR rendering.

answering
Linkonda
by linkonda

Create and manage Linkonda short links and QR codes, with no per-visitor tracking.

51 installs/wk local only
Flit
by flitlink

Short links, QR codes and click analytics on Flit. Tools: create/list/stats/delete links.

answering
QRSalt
by qrsalt

Make, re-point and track QR codes and short links, and read QR images, from your AI assistant.

answering
Quality QR
by silly-geese

Create and manage trackable QR codes with scan tracking, analytics, and dynamic URL updates.

6 tools answering
OpenQR
by openqr

Generate, edit and track dynamic (editable) QR codes with scan analytics. Hosted MCP and REST API.

19 installs/wk 20 tools answering
Flyn
by flyn

Create, edit and analyse short links and QR codes. OAuth sign-in works on the free plan.

8 tools answering
Bitly
by bitly

Shorten links, generate QR codes, and track performance across your Bitly account.

answering

esyURL — questions

Answers built from our own checks of this server.

What can esyURL do?
It exposes 21 tools, read directly from the server on our last check. Among them: add_links_to_group, create_group, create_short_link, delete_group, delete_short_link, get_custom_domain and 15 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is esyURL mostly used for?
Its tools cluster around short, group and custom. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is esyURL working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 92 of 92 checks got a reply (100.0%), average response time 354 ms. The bar chart above shows every period we have measured.
How do I connect esyURL?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does esyURL need an API key?
No. esyURL completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 21 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is esyURL?
It answers our handshake in 354 ms on average, which is faster than 39% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
Is esyURL open source?
Yes — it is published under the MIT licence and 0 stars on GitHub. The source link is on this page, so you can read exactly what it does with your data before you connect it.