protogrid

Search / me.urlinks/urlinks

URLinks

R1· needs a key

Create and manage short links, go links, QR codes, and link-in-bio pages, with click analytics.

v0.3.2 · active · repository · website · descriptor JSON · versions

An agent can connect on its own if it already holds api_key.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality82good
Trust96of 100
Uptime, 30 days100%
Latency p50473 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "urlinks": {
      "type": "http",
      "url": "https://urlinks.me/api/mcp",
      "headers": {
        "Authorization": "Bearer ${api_key}"
      }
    }
  }
}
claude mcp add --transport http urlinks https://urlinks.me/api/mcp --header "Authorization: Bearer ${api_key}"
[mcp_servers.urlinks]
url = "https://urlinks.me/api/mcp"
bearer_token_env_var = "api_key"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "urlinks": {
      "type": "remote",
      "url": "https://urlinks.me/api/mcp",
      "enabled": true,
      "headers": {
        "Authorization": "Bearer {env:api_key}"
      }
    }
  }
}
{
  "mcpServers": {
    "urlinks": {
      "type": "http",
      "url": "https://urlinks.me/api/mcp",
      "headers": {
        "Authorization": "Bearer ${api_key}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=urlinks&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vdXJsaW5rcy5tZS9hcGkvbWNwIiwiaGVhZGVycyI6eyJBdXRob3JpemF0aW9uIjoiQmVhcmVyICR7YXBpX2tleX0ifX0%3D"
}
{
  "servers": {
    "urlinks": {
      "type": "http",
      "url": "https://urlinks.me/api/mcp",
      "headers": {
        "Authorization": "Bearer ${api_key}"
      }
    }
  }
}
{
  "mcpServers": {
    "urlinks": {
      "httpUrl": "https://urlinks.me/api/mcp",
      "headers": {
        "Authorization": "Bearer ${api_key}"
      }
    }
  }
}
extensions:
  "urlinks":
    enabled: true
    name: "urlinks"
    type: streamable_http
    uri: "https://urlinks.me/api/mcp"
    headers:
      "Authorization": "Bearer ${api_key}"
    timeout: 300

Placeholders to fill from your own secret store: ${api_key}. The registry never accepts secret values.

Quality 82 / 100good

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene88 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations38 of 38 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_profile (destructiveHint, idempotentHint, openWorldHint); search_links (destructiveHint, idempotentHint, openWorldHint); get_link_analytics (destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 7,102 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pull, stability.new_linkstool history recorded for 5 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

38 tools, about 7,102 tokens to load them all · tool set 234dd83301e2 · checked 2026-11-14 07:03 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 96 / 100

provenance85
liveness100
freshness100
hygiene100

+repository +dns-namespace +website +reachable +uptime-100% +updated-6d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://urlinks.me/api/mcp streamable-httpapi_key ${api_key}yes100%473 ms2025-11-252026-11-14

Tools (38)

add_blockAdd a block to the profile. Blocks appear in order — new blocks are added at the end by default, or at a specific position. Block types: link (clickable button), header (section heading), text (paragraph), divider (visual separator), image (full-width image), embed (YouTube/Spotify/SoundCloud), spacer (vertical gap), marquee (scrolling text).
add_block_v2Add a block with full prototype parity (gallery, countdown, product, embed presets).
add_social_linkAdd a social link to the profile's social icon bar. Common platforms: twitter, instagram, github, linkedin, youtube, tiktok, facebook, twitch, discord, spotify, email, website.
apply_qr_templatedestructiveApply a saved QR style template to a shortlink — copies the template's full style (colors, shapes, center logo/emblem) onto that link's QR. Reference the template by its name or id (see list_qr_templates).
apply_themedestructiveApply a canonical theme preset (paper, aurora, galaxy, …). Legacy names are aliases.
bulk_create_linksCreate multiple shortlinks at once (max 50). Use this when you need to create several links in one operation.
create_aliasCreate a username/alias for the user. This is REQUIRED before any profile operations — the alias becomes the public URL (urlinks.me/{alias}). Rules: 5+ characters, alphanumeric only, must be unique.
create_shortlinkCreate a new shortlink. The shortlink path must start with 'my/' (personal) or 'yt/' (YouTube globals). Once created, my/ shortlinks resolve publicly at https://urlinks.me/{alias}/{name} (assuming the user has set an alias via create_alias) — that's the URL QR codes encode for click tracking. Group shortlinks (e.g. work/foo) aren't supported through the API yet; use the web dashboard for those.
delete_linkdestructiveDelete a shortlink permanently. This cannot be undone.
delete_qr_templatedestructiveDelete a saved QR style template by its name or id.
edit_linkdestructiveUpdate a shortlink's destination URL or description.
get_aliasread-onlyCheck if the user has a username/alias set. An alias is required before a profile can be created — it becomes the public URL (urlinks.me/{alias}). Call this first when starting profile setup.
get_custom_cssread-onlyGet the user's current custom CSS for all profile concerns. Shows which concerns have active CSS and what CSS is applied to each.
get_customization_rulesread-onlyGet the complete rule set for customizing a URLinks profile page via CSS. Returns the concern map (which CSS classes target which profile elements), the actual HTML structure each class wraps, example CSS for each concern, allowed properties, blocked patterns, and tips. Always call this FIRST before writing any custom CSS — it tells you exactly what to target, what the DOM looks like, and what's blocked.
get_link_analyticsread-onlyGet click analytics for a shortlink — total clicks, daily breakdown, and last clicked time.
get_profileread-onlyGet the user's current profile — display name, bio, blocks, social links, theme, custom CSS, and published status. Requires an alias to be set first (use get_alias to check, create_alias to set one).
get_profile_analyticsread-onlyGet analytics for the user's profile — total views, per-link click counts, and daily breakdowns. Shows which links are getting the most engagement.
get_public_profileread-onlyView any user's public profile by username. Returns the published profile as visitors see it.
get_qr_configread-onlyGet the QR code configuration for a shortlink, including whether one has been set up.
get_qr_imageread-onlyGenerate a QR code image (SVG or PNG) for a shortlink. The QR encodes the urlinks.me redirect URL (NOT the bare destination) so scans count as clicks: my/foo → urlinks.me/{alias}/foo, yt/foo → urlinks.me/yt/foo. Personal (my/) shortlinks therefore require the user to have an alias set — call get_alias to check, create_alias to set one. Renders the link's saved QR Studio styling (dot/corner shapes, colors, gradient, logo) with the same engine as the dashboard, so the image is identical to what QR Studio shows. Override colors with fg/bg if needed.
list_linksread-onlyList all your shortlinks. Returns shortlink slugs, destination URLs, descriptions, and the public scan URL each one resolves at (e.g. urlinks.me/{alias}/foo). The public URL is what QR codes and shareable links use.
list_profile_style_optionsread-onlyCatalog of profile style options — fonts, scenes, gradients, animations, block types, embed providers.
list_qr_templatesread-onlyList the user's saved QR style templates — reusable styles (colors, shapes, center logo/emblem) they can apply to any link with apply_qr_template.
list_themesread-onlyList theme presets. Prefer list_themes_v2 for the full canonical catalog. Use set_theme or apply_theme to apply one.
list_themes_v2read-onlyList canonical theme presets (editor prototype).
publish_profiledestructivePublish or unpublish the profile. A published profile is visible at urlinks.me/{username}. An unpublished profile is a draft — only the owner can see it in the editor.
remove_blockdestructiveRemove a block from the profile by its position (0-based index). Use get_profile first to see the block list and positions.
remove_social_linkdestructiveRemove a social link by platform name.
reorder_blocksdestructiveMove a block from one position to another. Use get_profile to see current positions first.
reset_custom_cssdestructiveReset/remove custom CSS for specific concerns, or all concerns at once. This removes the custom styling and reverts to the default appearance.
save_qr_configdestructiveSave a QR code style configuration for an existing shortlink. The generated QR encodes the urlinks.me redirect URL (https://urlinks.me/{alias}/{name} for my/ links, or https://urlinks.me/{shortlink} for yt/ and group links) — NOT the destination URL directly — so every scan is counted as a click. Personal (my/) shortlinks therefore require the user to have an alias set; use get_alias to check and create_alias to set one. Available styles: dot shapes (square, circle, rounded, classy, classy-rounded, diamond, star, heart, plus, hexagon, octagon, drop), corner styles (same set — novelty shapes fill only the inner pip), an outer frame (none/square/circle/rounded), colors, center logo or a built-in emblem (heart/star/bolt/clover/shield/moon), and a scan-me frame. Gradients are dashboard-only for now.
search_linksread-onlySearch your shortlinks by name, URL, or description. Use this to find an existing link before creating a new one.
set_themedestructiveApply a visual theme preset. Uses @urlinks/profile-presets (paper, aurora, galaxy, …). Legacy names (clean, cream, dark, …) are aliases. Prefer apply_theme for the same behavior. You can also set custom colors as overrides.
submit_custom_cssdestructiveSubmit custom CSS for one or more profile concerns. The CSS is sanitized server-side and stored per-concern. Call get_customization_rules first to understand what selectors and properties are available. CSS must target .pc-* classes only. url() is blocked — use gradients and solid colors. @keyframes are supported.
update_aliasdestructiveChange the user's alias/username to a new one. Their profile URL will change from urlinks.me/{old} to urlinks.me/{new}. The profile is automatically migrated.
update_blockdestructiveUpdate block content/style by position or block_id.
update_page_styledestructiveMerge visual/layout fields into page_style. Syncs displayName/bio/avatarUrl to top-level profile when set.
update_profiledestructiveUpdate the profile's basic info — display name, bio, or avatar URL. Only the fields you provide will change; everything else stays the same. This does NOT publish the profile — use publish_profile for that.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "me.urlinks/urlinks",
  "icons": [
    {
      "src": "https://urlinks.me/favicon.png",
      "sizes": [
        "200x200"
      ],
      "mimeType": "image/png"
    }
  ],
  "title": "URLinks",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://urlinks.me/api/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "Authorization",
          "value": "Bearer {api_key}",
          "isSecret": true,
          "variables": {
            "api_key": {
              "isSecret": true,
              "isRequired": true,
              "description": "URLinks API key (starts with urk_). Create one in your URLinks dashboard settings.",
              "placeholder": "urk_..."
            }
          },
          "isRequired": true,
          "description": "Your URLinks API key, sent as a bearer token."
        }
      ]
    }
  ],
  "version": "0.3.2",
  "repository": {
    "url": "https://github.com/lwolfowitz/urlinks-mcp",
    "source": "github",
    "subfolder": "packages/mcp-server"
  },
  "websiteUrl": "https://urlinks.me",
  "description": "Create and manage short links, go links, QR codes, and link-in-bio pages, with click analytics."
}