Skip to main content
Glama

update_link

Destructive

Update an existing Linkly link by its ID

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNoNew destination URL
nameNoNew nickname for the link
noteNoNew private note
gtm_idNoGoogle Tag Manager ID
enabledNoWhether the link is active
link_idYesThe ID of the link to update (required)
cloakingNoEnable URL cloaking
og_imageNoOpen Graph image URL
og_titleNoOpen Graph title
utm_termNoUTM term parameter
block_botsNoBlock bots
ga4_tag_idNoGoogle Analytics 4 tag ID
utm_mediumNoUTM medium parameter
utm_sourceNoUTM source parameter
fb_pixel_idNoMeta Pixel ID
utm_contentNoUTM content parameter
utm_campaignNoUTM campaign parameter
hide_referrerNoHide referrer
forward_paramsNoForward URL parameters
og_descriptionNoOpen Graph description
expiry_datetimeNoExpiry datetime (ISO 8601)
expiry_destinationNoFallback URL after expiry

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoLink ID
urlNoDestination URL
nameNo
noteNo
slugNo
rulesNo
domainNo
gtm_idNo
deletedNo
enabledNo
cloakingNo
full_urlNoFull short-link URL
og_imageNo
og_titleNo
passwordNo
utm_termNo
webhooksNo
body_tagsNo
head_tagsNo
qr_stylesNo
block_botsNo
ga4_tag_idNo
utm_mediumNo
utm_sourceNo
fb_pixel_idNo
utm_contentNo
notify_slackNo
replacementsNo
utm_campaignNo
workspace_idNo
expiry_clicksNo
hide_referrerNo
linkify_wordsNo
forward_paramsNo
og_descriptionNo
expiry_datetimeNo
notify_user_idsNo
reddit_pixel_idNo
tiktok_pixel_idNo
pinterest_tag_idNo
public_analyticsNo
twitter_pixel_idNo
snapchat_pixel_idNo
created_by_user_idNo
expiry_destinationNo
linkedin_partner_idNo
microsoft_uet_tag_idNo
skip_social_crawler_trackingNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "description": "A Linkly link (mirrors the OpenAPI Link schema)",
      +  "properties": {
      +    "block_bots": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "body_tags": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "cloaking": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "created_by_user_id": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "deleted": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "domain": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "enabled": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "expiry_clicks": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "expiry_datetime": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "expiry_destination": {
      +      "format": "uri",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "fb_pixel_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "forward_params": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "full_url": {
      +      "description": "Full short-link URL",
      +      "format": "uri",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "ga4_tag_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "gtm_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "head_tags": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "hide_referrer": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "id": {
      +      "description": "Link ID",
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    },
      +    "linkedin_partner_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "linkify_words": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "microsoft_uet_tag_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "name": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "note": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "notify_slack": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "notify_user_ids": {
      +      "items": {
      +        "type": "integer"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "og_description": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "og_image": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "og_title": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "password": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "pinterest_tag_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "public_analytics": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "qr_styles": {
      +      "additionalProperties": true,
      +      "type": [
      +        "object",
      +        "null"
      +      ]
      +    },
      +    "reddit_pixel_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "replacements": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "rules": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "matches": {
      +            "type": "string"
      +          },
      +          "percentage": {
      +            "type": "string"
      +          },
      +          "rule_url": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          },
      +          "what": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "skip_social_crawler_tracking": {
      +      "type": [
      +        "boolean",
      +        "null"
      +      ]
      +    },
      +    "slug": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "snapchat_pixel_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "tiktok_pixel_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "twitter_pixel_id": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "Destination URL",
      +      "format": "uri",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utm_campaign": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utm_content": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utm_medium": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utm_source": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "utm_term": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "webhooks": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": [
      +        "array",
      +        "null"
      +      ]
      +    },
      +    "workspace_id": {
      +      "type": [
      +        "integer",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds no behavioral context beyond 'update', such as whether it modifies only provided fields or resets unprovided ones, or what happens to existing analytics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise and front-loaded, containing the essential purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the high complexity (22 parameters, destructive hint, output schema exists), the description is insufficient. It does not explain update semantics, return value, or prerequisites, leaving agents to infer from the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 22 parameters have schema descriptions (100% coverage), so the description need not repeat them. However, the description adds no extra meaning or usage patterns for the parameters, only reinforcing the link_id via 'by its ID'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing Linkly link by its ID' clearly states the verb (update), resource (Linkly link), and key identifier (by its ID). It distinguishes from sibling tools like create_link and delete_link, but does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. It does not mention scenarios like partial vs full update, nor does it direct to create_link for new links or delete_link for removal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A3.5/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between `list_links` and `search_links`, and between the several analytics/click tools. However, descriptions clarify their differences, reducing ambiguity.

Naming Consistency3/5

Most tools follow snake_case verb_noun pattern, but `batchDeleteLinks` uses camelCase, breaking consistency. Additionally, `ping` and `test_authentication` deviate from the resource-based naming.

Tool Count4/5

25 tools is on the higher end but appropriate for the scope, covering links, domains, analytics, webhooks, and workspace management. Each tool has a clear role, though the count could be slightly reduced by merging some analytics tools.

Completeness5/5

The tool surface is comprehensive, covering CRUD for links and domains, analytics (raw and aggregated), webhook management, workspace settings, and authentication checks. No obvious gaps for a URL shortening service.