l1nk
Registry code: 728f605561b3614d
L1NK is a link shortener. Use these tools to create short links, list them, change where they point, delete them and read click analytics for the account that owns the API token. Always show the user the shortUrl you get back. Plan limits apply: Free allows 25 new links per month; Pro allows 2,000 new links per month. An error saying something is not included in the plan cannot be fixed by retrying: tell the user. Error messages come from the API in Spanish; translate them for the user if needed.
- endpoint
- https://l1nk.website/api/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is l1nk live?
- Yes — it answered the hub's last check (checked 2h ago). It answered 99% of checks over the last 30 days.
- Is l1nk free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does l1nk have?
- 7 tools: create_link, get_link, update_link, delete_link, get_analytics, compare_tags, list_links.
- Is l1nk safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 98.9%· all time 98.9%
last good check
of 7 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- degraded → live
- live → degraded· timeout after 20000ms
- topic
- developer tools
- used for
- create a short link
- update where a short link points
- read click analytics
- delete a short link
- takes → gives
- text, web pages → data
- tools
- 3 reads3 changes data
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
create_link changes data auth-required never probed
Create a short link that redirects to a URL. Returns shortUrl, which is what you share.
{ "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "maxLength": 2048, "description": "Destination URL. https:// is added if missing." }, "name": { "type": "string", "maxLength": 80, "description": "Optional label to recognise the link in the dashboard." }, "tags": { "type": "array", "items": { "type": "string", "pattern": "^[^,]{1,30}$", "maxLength": 30 }, "maxItems": 10, "description": "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)." }, "alias": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,20}$", "maxLength": 20, "description": "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 random code." }, "domain": { "type": "string", "pattern": "^[a-zA-Z0-9.-]+$", "maxLength": 253, "description": "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": { "type": "integer", "minimum": 1, "description": "Optional id of a verified custom domain (use domain instead)." }, "time_zone": { "type": "string", "maxLength": 64, "description": "Optional IANA time zone (e.g. America/Lima) used to write the activation date to visitors. Default UTC." }, "max_clicks": { "type": "integer", "maximum": 1000000, "minimum": 1, "description": "Optional. Pro plan. The link stops working after this many people (bots are not counted). Approximate at the boundary under simultaneous clicks." }, "active_from": { "type": "string", "maxLength": 40, "description": "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 …\"." }, "expires_in_days": { "type": "integer", "maximum": 365, "minimum": 1, "description": "Optional expiry. Pro plan only." }, "unavailable_page": { "type": "object", "description": "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 to that fallback URL; {\"modo\":\"mensaje\",\"mensaje\":\"...\"} = a short message of yours (max 200 characters). Shown on the same host, custom domains included." } }, "additionalProperties": false }arguments 72 linesget_link reads auth-required 20h ago
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.
{ "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,64}$", "description": "The short code or custom alias of the link (the part after the slash)." } }, "additionalProperties": false }arguments 14 linesupdate_link changes data auth-required never probed
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.
{ "type": "object", "required": [ "code" ], "properties": { "url": { "type": "string", "maxLength": 2048, "description": "New destination URL." }, "code": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,64}$", "description": "The short code or custom alias of the link (the part after the slash)." }, "tags": { "type": "array", "items": { "type": "string", "pattern": "^[^,]{1,30}$", "maxLength": 30 }, "maxItems": 10, "description": "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." }, "rules": { "type": "object", "description": "Destination rules, Pro plan. Shape: {\"version\":1, \"condiciones\":[{\"si\":{\"pais\":[\"PE\"],\"dispositivo\":[\"ios\"]},\"destino\":\"https://...\"}], \"rotacion\":{\"destinos\":[{\"url\":\"https://wa.me/51...\",\"peso\":1}]}}. Conditions are checked in order (pais = ISO country codes; dispositivo = movil, tablet, escritorio, ios, android); the first match wins. Otherwise rotacion takes turns among 2-10 URLs by weight (peso 1-100, default 1). Otherwise the link URL. Bots always get the link URL. Replaces any previous rules." }, "time_zone": { "type": "string", "maxLength": 64, "description": "Optional IANA time zone (e.g. America/Lima) used to write the activation date to visitors. Default UTC." }, "max_clicks": { "type": "integer", "maximum": 1000000, "minimum": 1, "description": "Optional. Pro plan. The link stops working after this many people (bots are not counted). Approximate at the boundary under simultaneous clicks." }, "active_from": { "type": "string", "maxLength": 40, "description": "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 …\"." }, "remove_rules": { "type": "boolean", "description": "true to remove the destination rules (the link goes back to a single URL)." }, "expires_in_days": { "type": "integer", "maximum": 365, "minimum": 1, "description": "New expiry, counted from today. Not together with remove_expiration." }, "unavailable_page": { "type": "object", "description": "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 to that fallback URL; {\"modo\":\"mensaje\",\"mensaje\":\"...\"} = a short message of yours (max 200 characters). Shown on the same host, custom domains included." }, "remove_expiration": { "type": "boolean", "description": "true to make the link permanent." }, "remove_max_clicks": { "type": "boolean", "description": "true to remove the click limit." }, "remove_active_from": { "type": "boolean", "description": "true to remove the activation date (the link works right away)." } }, "additionalProperties": false }arguments 75 linesdelete_link changes data auth-required never probed
Delete a link permanently. Anyone opening it afterwards gets "not found". Confirm with the user first.
{ "type": "object", "required": [ "code" ], "properties": { "code": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,64}$", "description": "The short code or custom alias of the link (the part after the slash)." } }, "additionalProperties": false }arguments 14 linesget_analytics reads auth-required 11h ago
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).
{ "type": "object", "properties": { "code": { "type": "string", "pattern": "^[a-zA-Z0-9_-]{1,64}$", "description": "Optional: only this link (its short code or alias)." }, "days": { "type": "integer", "maximum": 365, "minimum": 1, "description": "Days to look back. Default 30." }, "tags": { "type": "array", "items": { "type": "string", "pattern": "^[^,]{1,30}$", "maxLength": 30 }, "maxItems": 10, "description": "Optional: only the links that carry at least one of these tags (e.g. [\"table-1\",\"table-2\"])." } }, "additionalProperties": false }arguments 27 linescompare_tags auth-required 11h ago
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).
{ "type": "object", "properties": { "days": { "type": "integer", "maximum": 365, "minimum": 1, "description": "Days to look back. Default 30." }, "tags": { "type": "array", "items": { "type": "string", "pattern": "^[^,]{1,30}$", "maxLength": 30 }, "maxItems": 10, "description": "Tags to compare, e.g. [\"table-1\",\"table-2\"]. Omit to list the available tags." } }, "additionalProperties": false }arguments 22 lineslist_links reads auth-required 11h ago
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.
{ "type": "object", "properties": { "tags": { "type": "array", "items": { "type": "string", "pattern": "^[^,]{1,30}$", "maxLength": 30 }, "maxItems": 10, "description": "Optional: only links with at least one of these tags (e.g. [\"mesa-1\",\"mesa-2\"])." } }, "additionalProperties": false }arguments 16 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id728f605561b3614d.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/728f605561b3614d/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/728f605561b3614d?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.