L1NK
REMOTE · L1NK.WEBSITE
Short links with QR, custom domains and bot-free click analytics. Create, edit, delete, analyze.
Available components
Last scanned (23 hours ago)
Scores higher than 98% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security94
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability61
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 1747 tokens (~249/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 25 Oct 26 −1
- Tool “get_analytics” rewrote its description, which is the text the model reads security
- Tool “list_links” rewrote its description, which is the text the model reads security
- Tool “update_link” rewrote its description, which is the text the model reads security
- Schema quality: 139 → 249 ▼ functional
- New tool “compare_tags” functional
- “create_link” added an optional parameter “active_from” cosmetic
- “create_link” added an optional parameter “max_clicks” cosmetic
- “create_link” added an optional parameter “tags” cosmetic
- “create_link” added an optional parameter “time_zone” cosmetic
- “create_link” added an optional parameter “unavailable_page” cosmetic
- “get_analytics” added an optional parameter “tags” cosmetic
- “list_links” added an optional parameter “tags” cosmetic
- “update_link” added an optional parameter “active_from” cosmetic
- “update_link” added an optional parameter “max_clicks” cosmetic
- “update_link” added an optional parameter “remove_active_from” cosmetic
- “update_link” added an optional parameter “remove_max_clicks” cosmetic
- “update_link” added an optional parameter “tags” cosmetic
- “update_link” added an optional parameter “time_zone” cosmetic
- “update_link” added an optional parameter “unavailable_page” cosmetic
- “create_link” reworded the description of “alias” cosmetic
- 24 Oct 26 +2
- HTTPS: unverified → pass ▲ security
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_analytics” rewrote its description, which is the text the model reads security
- Tool “get_link” rewrote its description, which is the text the model reads security
- Tool “update_link” rewrote its description, which is the text the model reads security
- Schema quality: pass → fail ▼ functional
- Schema quality: excellent → good functional
- “create_link” added an optional parameter “domain” cosmetic
- “get_analytics” added an optional parameter “code” cosmetic
- “update_link” added an optional parameter “remove_rules” cosmetic
- “update_link” added an optional parameter “rules” cosmetic
- “create_link” reworded the description of “domain_id” cosmetic
- 17 Oct 26 0
- Stability: 0.97 → pass security
- 16 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 14 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 83. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 77. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.
- 7 Oct 26 +2
No change was recorded against any check on this day. Stability & Change Management went from 57 to 67. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://l1nk.website/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=l1nk.website | CN=WE1,O=Google Trust Services,C=US | 20 Sept 2026 | 19 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 8d7b1b37f9a11aad0e4c76967aa5c204 |
| SANs: l1nk.website, *.l1nk.website | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of l1nk.website. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| website. | present | 26175 | 13 | Verified |
| l1nk.website. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://l1nk.website/.well-known/oauth-protected-resource/api/mcp", error_description="Sign in with OAuth or use Authorization: Bearer <L1NK API token>"
Bearer resource_metadata="https://l1nk.website/.well-known/oauth-protected-resource/api/mcp", error_description="Sign in with OAuth or use Authorization: Bearer <L1NK API token>" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'none'; frame-ancestors 'none' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | geolocation=(), microphone=(), camera=() |
Protected resource metadata
| Document | https://l1nk.website/.well-known/oauth-protected-resource/api/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://l1nk.website/api/mcp |
| Authorisation server | https://zlubrsnidqrbmobgsriw.supabase.co/auth/v1 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://l1nk.website/api/mcp | Verified | 200 | |
| http (plaintext) | http://l1nk.website/api/mcp | HTTPS enforced | 301 | https://l1nk.website/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
compare_tags Compare links by tag ~137
Compare the links that carry some tags (e.g. one QR per table, shop window or flyer): for each link, people, QR scans, bots apart and its top countries and devices, over the same period so the rows add up to the total. Without tags it only returns the tags the account uses (etiquetasDisponibles), to choose from. Pro plan (also during the 14-day trial).
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Days to look back. Default 30. |
| tags | array | – | Tags to compare, e.g. ["table-1","table-2"]. Omit to list the available tags. |
No output schema declared.
No examples provided.
create_link Create short link ~472
Create a short link that redirects to a URL. Returns shortUrl, which is what you share.
| Name | Type | Req | Description |
|---|---|---|---|
| active_from | string | – | Optional. Pro plan. ISO 8601 date-time (e.g. 2026-11-03T09:00:00-05:00): before it the link does not redirect and shows "this link becomes active on …". |
| alias | string | – | Optional custom alias (letters, numbers, - and _; max 20 characters, never truncated: a longer one is rejected). Pro plan only (also during the 14-day trial): on Free, omit it and the link gets a ran… |
| domain | string | – | Optional domain the user owns and has connected to L1NK (Pro plan only), to put the link on, e.g. go.mybrand.com. It must be active. |
| domain_id | integer | – | Optional id of a verified custom domain (use domain instead). |
| expires_in_days | integer | – | Optional expiry. Pro plan only. |
| max_clicks | integer | – | Optional. Pro plan. The link stops working after this many people (bots are not counted). Approximate at the boundary under simultaneous clicks. |
| name | string | – | Optional label to recognise the link in the dashboard. |
| tags | array | – | Optional tags to group links, e.g. ["table-1","instagram"] (max 10, up to 30 characters each; letters, numbers, - and _; stored lowercase). Adding tags is Pro (also during the 14-day trial). |
| time_zone | string | – | Optional IANA time zone (e.g. America/Lima) used to write the activation date to visitors. Default UTC. |
| unavailable_page | object | – | Optional. Pro plan. What visitors see when the link is expired, past max_clicks or not active yet. {"modo":"neutra"} = the neutral L1NK page (default); {"modo":"url","url":"https://..."} = redirect t… |
| url | string | yes | Destination URL. https:// is added if missing. |
No output schema declared.
No examples provided.
delete_link Delete link ~50
Delete a link permanently. Anyone opening it afterwards gets "not found". Confirm with the user first.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The short code or custom alias of the link (the part after the slash). |
No output schema declared.
No examples provided.
get_analytics Get click analytics ~184
Click analytics by people (bots reported apart): totals, daily series, countries, devices, browsers, referrers and top links. On Pro (and the trial) also aiTraffic (visits from AI assistants such as ChatGPT or Perplexity, with their share and breakdown), cities (top 10 with their country) and QR scans; on Free those fields are null. For the whole account, or for one link with code. The plan caps how far back you can look (Free 30 days, Pro 365).
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | – | Optional: only this link (its short code or alias). |
| days | integer | – | Days to look back. Default 30. |
| tags | array | – | Optional: only the links that carry at least one of these tags (e.g. ["table-1","table-2"]). |
No output schema declared.
No examples provided.
get_link Get link details ~93
Details of one link: destination, destination rules (reglas) if any, clicks by people, bots apart (link previews and crawlers, not counted in clicks), creation and expiry dates, last click and recent click history. For countries, devices and referrers use get_analytics with the same code.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The short code or custom alias of the link (the part after the slash). |
No output schema declared.
No examples provided.
list_links List links ~70
List the active (not expired) links of the account with their click counts and tags. Optionally only the links that carry any of the given tags.
| Name | Type | Req | Description |
|---|---|---|---|
| tags | array | – | Optional: only links with at least one of these tags (e.g. ["mesa-1","mesa-2"]). |
No output schema declared.
No examples provided.
update_link Update link ~625
Change where a link points, set a new expiry (Pro) or remove its expiry, or set destination rules (Pro): rotate clicks among several URLs (e.g. a WhatsApp rotator between salespeople) or send by country or device. Also (Pro) an activation date, a click limit, and what visitors see when the link is not available. The short code stays the same.
| Name | Type | Req | Description |
|---|---|---|---|
| active_from | string | – | Optional. Pro plan. ISO 8601 date-time (e.g. 2026-11-03T09:00:00-05:00): before it the link does not redirect and shows "this link becomes active on …". |
| code | string | yes | The short code or custom alias of the link (the part after the slash). |
| expires_in_days | integer | – | New expiry, counted from today. Not together with remove_expiration. |
| max_clicks | integer | – | Optional. Pro plan. The link stops working after this many people (bots are not counted). Approximate at the boundary under simultaneous clicks. |
| remove_active_from | boolean | – | true to remove the activation date (the link works right away). |
| remove_expiration | boolean | – | true to make the link permanent. |
| remove_max_clicks | boolean | – | true to remove the click limit. |
| remove_rules | boolean | – | true to remove the destination rules (the link goes back to a single URL). |
| rules | object | – | Destination rules, Pro plan. Shape: {"version":1, "condiciones":[{"si":{"pais":["PE"],"dispositivo":["ios"]},"destino":"https://..."}], "rotacion":{"destinos":[{"url":"https://wa.me/51...","peso":1}]… |
| tags | array | – | The COMPLETE list of tags the link keeps (it replaces the current one); [] removes them all. Adding a tag the link did not have is Pro (also during the trial); removing is always allowed. |
| time_zone | string | – | Optional IANA time zone (e.g. America/Lima) used to write the activation date to visitors. Default UTC. |
| unavailable_page | object | – | Optional. Pro plan. What visitors see when the link is expired, past max_clicks or not active yet. {"modo":"neutra"} = the neutral L1NK page (default); {"modo":"url","url":"https://..."} = redirect t… |
| url | string | – | New destination URL. |
No output schema declared.
No examples provided.
How do I install the L1NK MCP server?
L1NK is a hosted endpoint at https://l1nk.website/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · l1nk.website
claude mcp add --transport http website-l1nk-links 'https://l1nk.website/api/mcp'
What is the L1NK MCP server?
L1NK is an MCP server listed in the public MCP registry as website.l1nk/links. Short links with QR, custom domains and bot-free click analytics. Create, edit, delete, analyze. This page covers its hosted endpoint (https://l1nk.website/api/mcp).
Is the L1NK MCP server safe to use?
L1NK scores 91 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the L1NK MCP server expose?
L1NK exposes 7 tools: create_link, list_links, get_link, update_link, delete_link, and 2 more. Their descriptions and schemas cost roughly 1,631 tokens of context every time the server is loaded.
Does the L1NK MCP server require authentication?
Yes. L1NK asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the L1NK MCP server still maintained?
L1NK is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.