Skip to main content
Glama
Linkly-HQ

Linkly MCP Server

by Linkly-HQ

Linkly MCP Server

Claude connector directory Glama MCP registry

Official Model Context Protocol (MCP) server for Linkly — the URL shortener and link management platform.

This repository powers the hosted MCP server at https://mcp.linklyhq.com. That is the only supported way to connect an AI assistant to Linkly via MCP. See https://linklyhq.com/support/mcp-server for setup instructions.

⚠️ The linkly-mcp-server npm package is deprecated. The self-hosted / API-key flow is no longer maintained. All users should migrate to the hosted server — it uses OAuth 2.1 with PKCE, requires no API keys or local install, and always runs the latest tool set. The npm package will continue to exist on the registry for backwards compatibility but will not receive new tools or bug fixes, and may be unpublished in the future.

Documentation

For full documentation, setup guides, and examples, visit: https://linklyhq.com/support/mcp-server

Related MCP server: DWZ Short URL MCP Server

Features

  • Create, update, and delete short links

  • View click analytics and statistics

  • Manage custom domains and favicons

  • Configure webhooks for click events

  • Search and filter links

  • Export click data

Using the hosted server

Server URL: https://mcp.linklyhq.com

Connect your MCP client to the hosted server and sign in to Linkly when your browser opens. That's it — no API keys, no installation, no config drift.

Claude Desktop

{
  "mcpServers": {
    "linkly": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.linklyhq.com"]
    }
  }
}

Claude Code (CLI)

claude mcp add --transport http linkly https://mcp.linklyhq.com

ChatGPT Desktop

{
  "servers": {
    "linkly": {
      "type": "url",
      "url": "https://mcp.linklyhq.com"
    }
  }
}

Available Tools

Tool

Description

create_link

Create a new short link

update_link

Update an existing link

delete_link

Delete a link

get_link

Get link details

list_links

List all links in workspace

search_links

Search links by name, URL, or note

get_analytics

Get time-series click data

get_analytics_by

Get clicks grouped by dimension

get_clicks

Get recent click data

export_clicks

Export detailed click records

list_domains

List custom domains

create_domain

Add a custom domain

delete_domain

Remove a custom domain

update_domain_favicon

Update domain favicon

list_webhooks

List workspace webhooks

subscribe_webhook

Add a webhook

unsubscribe_webhook

Remove a webhook

list_link_webhooks

List link-specific webhooks

subscribe_link_webhook

Add a link webhook

unsubscribe_link_webhook

Remove a link webhook

Support

For help and support, visit Linkly Support or email support@linklyhq.com.

Publishing to the MCP Registry (maintainers)

The server.json at the repo root is the official MCP Registry manifest for the com.linklyhq/linkly server. It is remote-only: it points clients at the hosted server and intentionally ships no package (the deprecated npm distribution was dropped in v2.0.0).

Publishing requires DNS access to linklyhq.com — the com.linklyhq namespace is verified via a DNS TXT record on the domain apex:

# 1. Generate an Ed25519 key + TXT record (macOS: use openssl@3; system LibreSSL lacks Ed25519)
openssl genpkey -algorithm Ed25519 -out key.pem
PUBLIC_KEY="$(openssl pkey -in key.pem -pubout -outform DER | tail -c 32 | base64)"
echo "linklyhq.com. IN TXT \"v=MCPv1; k=ed25519; p=${PUBLIC_KEY}\""   # add at the APEX of linklyhq.com

# 2. Authenticate the namespace + publish
PRIVATE_KEY="$(openssl pkey -in key.pem -noout -text | grep -A3 'priv:' | tail -n +2 | tr -d ' :\n')"
mcp-publisher login dns --domain linklyhq.com --private-key "$PRIVATE_KEY"
mcp-publisher publish

See the registry authentication guide for details.

Updating the ChatGPT app (maintainers)

chatgpt-app-submission.json is the OpenAI Apps SDK submission import — it pre-fills the per-tool annotations and the three safety justifications (read-only / open-world / destructive) for all 25 tools, so they don't have to be typed by hand in the dashboard.

OpenAI freezes a metadata snapshot at publish time and does not auto-detect MCP changes, so after deploying server changes you publish a new version:

  1. Deploy the worker (push to the connected branch / wrangler deploy).

  2. Platform dashboard → the Linkly app → create a new draft version (keep the same MCP URL https://mcp.linklyhq.com).

  3. In the MCP section, click Scan Tools to re-read the live tool list + annotations.

  4. Drag chatgpt-app-submission.json onto the form (top of the page) to fill the justifications.

  5. Review Testing, then Submit. The published version keeps running against the live server until the new one is approved.

Keep this file in sync with the worker whenever tools are added/removed or their readOnlyHint/destructiveHint change. The destructive flag is true only for the 6 genuinely destructive tools (delete_link, delete_domain, batchDeleteLinks, unsubscribe_webhook, unsubscribe_link_webhook); creates/updates/subscribes are non-destructive.

License

MIT

Available Tools

20 tools
create_domainCInspect

Add a custom domain to the workspace. The domain must be configured to point to Linkly's servers.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe domain name (e.g., 'links.example.com')

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'Adds' a domain, implying a write/mutation operation, but doesn't cover critical aspects like required permissions, whether the operation is idempotent, potential side effects, or error conditions. The prerequisite about domain configuration is helpful but insufficient for a mutation tool.

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

Conciseness5/5

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

The description is two concise sentences that are front-loaded with the core purpose and follow with a key prerequisite. Every word earns its place, with no redundancy or fluff, making it highly efficient and easy to parse.

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 tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., permissions, idempotency), expected outcomes, or error handling, which are crucial for safe and effective use in an AI agent context.

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?

The input schema has 100% description coverage, with the 'name' parameter clearly documented as 'The domain name (e.g., 'links.example.com')'. The description doesn't add any meaningful parameter details beyond what the schema provides, such as format constraints or examples, so it meets the baseline for high schema coverage without extra value.

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 clearly states the action ('Add a custom domain') and the resource ('to the workspace'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'list_domains' or 'update_domain_favicon' beyond the obvious verb difference, which keeps it from a perfect score.

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?

The description provides a prerequisite ('The domain must be configured to point to Linkly's servers'), which offers some usage context. However, it lacks explicit guidance on when to use this tool versus alternatives like 'list_domains' or 'update_domain_favicon', and doesn't mention any exclusions or complementary tools, leaving gaps in practical application.

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

delete_domainCInspect

Remove a custom domain from the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_idYesThe ID of the domain to delete

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Remove' implying a destructive mutation, but doesn't specify if this is permanent, requires admin permissions, affects associated data, or has rate limits. This leaves critical behavioral traits unaddressed for a deletion tool.

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

Conciseness5/5

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

The description is a single, direct sentence with zero wasted words. It front-loads the core action and resource, making it highly efficient and easy to parse, which is ideal for conciseness.

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 tool's destructive nature, lack of annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like permanence, permissions, or error handling, nor does it hint at return values, leaving significant gaps in context for safe and effective use.

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?

The input schema has 100% description coverage, with 'domain_id' clearly documented as 'The ID of the domain to delete'. The description adds no additional parameter details beyond what the schema provides, so it meets the baseline for high schema coverage without compensating further.

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 clearly states the action ('Remove') and resource ('a custom domain from the workspace'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'delete_link' or 'update_domain_favicon', but the specificity of 'custom domain' provides some implicit distinction.

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?

The description provides no guidance on when to use this tool versus alternatives like 'list_domains' for viewing or 'create_domain' for adding. It lacks context about prerequisites, such as needing an existing domain ID, or warnings about irreversible deletion, leaving usage unclear.

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

export_clicksCInspect

Export detailed click records with full information (timestamp, browser, country, URL, platform, referer, bot, ISP, params).

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date in YYYY-MM-DD format (default: yesterday)
botsNoBot filtering
startNoStart date in YYYY-MM-DD format (default: 30 days ago)
countryNoFilter by country code
link_idNoFilter by specific link ID
platformNoFilter by platform

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Export' but doesn't specify the output format (e.g., CSV, JSON), whether it's a file download or data stream, or any rate limits or permissions required. The mention of 'full information' hints at comprehensive data but lacks operational details.

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 description is a single, efficient sentence that front-loads the core action and key details. It avoids redundancy, though it could be slightly more structured by separating purpose from field listings for better readability.

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?

For a tool with 6 parameters, no annotations, and no output schema, the description is inadequate. It lacks critical information about the export format, data volume, error handling, and how it differs from sibling tools, leaving significant gaps for an agent to operate effectively.

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?

Schema description coverage is 100%, providing clear documentation for all 6 parameters. The description adds minimal value by implying filtering capabilities through 'detailed click records' and listing fields like 'country' and 'platform', but doesn't explain parameter interactions or default behaviors beyond what the schema already covers.

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 clearly states the verb ('Export') and resource ('detailed click records'), and specifies the scope with 'full information' listing key fields. However, it doesn't explicitly differentiate from sibling tools like 'get_clicks' or 'get_analytics', which might offer similar click data but potentially with different formats or filtering capabilities.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_clicks' or 'get_analytics'. It mentions 'full information' but doesn't clarify if this is for bulk exports, reports, or other specific use cases, leaving the agent to infer usage from context alone.

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

get_analyticsAInspect

Get time-series click analytics data for charting. Returns click counts over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date in YYYY-MM-DD format (default: today)
botsNoBot filtering: include (default), exclude, or only
startNoStart date in YYYY-MM-DD format (default: 30 days ago)
uniqueNoCount unique clicks only (by IP)
browserNoFilter by browser name
countryNoFilter by country code (e.g., 'US', 'GB')
link_idNoFilter by specific link ID
platformNoFilter by platform (e.g., 'desktop', 'mobile', 'tablet')
frequencyNoTime granularity: 'day' (default) or 'hour'

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return type ('click counts over time') but doesn't describe authentication requirements, rate limits, pagination, error conditions, or what happens with large date ranges. For a data retrieval tool with 9 parameters, this leaves significant behavioral aspects undocumented.

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

Conciseness5/5

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

The description is perfectly concise with two sentences that each earn their place: the first states the purpose and context, the second clarifies the return format. It's front-loaded with the core functionality and wastes no words.

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

Completeness3/5

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

For a tool with 9 parameters, 100% schema coverage, but no annotations and no output schema, the description provides adequate basic context about what the tool does and returns. However, it lacks information about authentication, rate limits, error handling, and output structure details that would be helpful given the complexity of the filtering options.

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?

Schema description coverage is 100%, so the schema already documents all 9 parameters thoroughly with descriptions, defaults, and enums. The description adds no parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('Get time-series click analytics data for charting') and resource ('click analytics data'), distinguishing it from siblings like get_clicks (which likely returns raw click data) or get_analytics_by (which might have different aggregation). It explicitly mentions the output format ('Returns click counts over time'), making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage for charting time-series data, but doesn't explicitly state when to use this tool versus alternatives like get_clicks or get_analytics_by. It provides context about the return format (time-series for charting), but lacks guidance on exclusions or specific scenarios where this tool is preferred over siblings.

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

get_analytics_byBInspect

Get click counts grouped by a dimension (country, platform, browser, etc.). Useful for breakdowns and top-N reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date in YYYY-MM-DD format (default: today)
botsNoBot filtering
startNoStart date in YYYY-MM-DD format (default: 30 days ago)
uniqueNoCount unique clicks only
counterYesDimension to group by (required)
countryNoFilter by country code
link_idNoFilter by specific link ID
platformNoFilter by platform

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'click counts' and 'grouped by a dimension' but lacks behavioral details like whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the output format looks like. For an analytics tool with 8 parameters, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is two concise sentences with zero waste: the first states the core functionality, and the second provides usage context. It's front-loaded with the main purpose and efficiently structured.

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 complexity (8 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain the return values (e.g., format of grouped data), behavioral aspects like error handling, or how it differs from sibling tools. For a data retrieval tool with multiple filters, more context is needed to guide effective use.

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?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by listing example dimensions (country, platform, browser, etc.), but doesn't provide additional semantics like how grouping works or interactions between parameters. Baseline 3 is appropriate when schema does the heavy lifting.

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 clearly states the tool's purpose: 'Get click counts grouped by a dimension' with examples like country, platform, browser. It specifies the verb ('Get') and resource ('click counts'), but doesn't explicitly differentiate from sibling tools like 'get_analytics' or 'get_clicks', which likely provide different analytics views.

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

Usage Guidelines3/5

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

The description provides implied usage context: 'Useful for breakdowns and top-N reports.' This suggests when to use it, but doesn't explicitly state when not to use it or name alternatives among siblings (e.g., 'get_analytics' might be for aggregated totals). No clear exclusions or prerequisites are mentioned.

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

get_clicksCInspect

Get recent click data for the workspace

ParametersJSON Schema
NameRequiredDescriptionDefault
link_idNoOptional: filter clicks by link ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation ('Get') but doesn't specify details like data recency, pagination, rate limits, or authentication needs. This leaves significant gaps in understanding how the tool behaves beyond basic retrieval.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration, earning top marks for brevity and structure.

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 lack of annotations and output schema, the description is incomplete for a data retrieval tool. It doesn't explain what 'recent' means, the format of returned data, or how to handle large datasets, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.

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?

The input schema has 100% description coverage, documenting the optional 'link_id' parameter for filtering. The description adds no additional parameter details beyond what the schema provides, so it meets the baseline score of 3 for adequate but not enhanced parameter semantics.

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 clearly states the action ('Get') and resource ('recent click data for the workspace'), making the purpose understandable. However, it doesn't distinguish itself from sibling tools like 'get_analytics' or 'export_clicks', which might also involve click data, leaving some ambiguity about its specific role.

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?

The description provides no guidance on when to use this tool versus alternatives like 'get_analytics' or 'export_clicks'. It lacks context on prerequisites, such as whether it requires specific permissions or is intended for real-time vs. historical data, offering minimal usage direction.

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

list_domainsBInspect

List all custom domains in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it's a list operation, implying read-only behavior, but doesn't cover critical aspects like pagination, sorting, rate limits, authentication needs, or what 'all' entails in terms of scope or performance impact.

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

Conciseness5/5

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

The description is a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it highly efficient and easy to parse at a glance.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. However, it lacks details on output format, potential limitations, or how it fits with siblings, leaving gaps for an agent to fully understand its use in context.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, aligning with the schema. A baseline of 4 is applied since it doesn't add unnecessary details.

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 clearly states the action ('List') and resource ('all custom domains in the workspace'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_links' or 'list_webhooks' beyond the domain focus, which prevents a perfect score.

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 is provided on when to use this tool versus alternatives. While the description implies it's for listing domains, it doesn't mention prerequisites, when to choose it over other list tools, or any contextual constraints, leaving usage decisions unclear.

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

list_webhooksAInspect

List all webhook URLs subscribed to the workspace. These receive click events for all links.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the tool's read-only nature and the type of data returned (webhook URLs for click events), but lacks details on pagination, rate limits, authentication needs, or error conditions. It adds basic behavioral context but misses operational specifics.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the core purpose ('List all webhook URLs') and adds only essential context ('subscribed to the workspace' and 'receive click events for all links'). There is zero wasted verbiage, making it highly concise and well-structured.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is adequate but minimal. It covers the basic purpose and scope but lacks details on output format (e.g., list structure), error handling, or integration with sibling tools, leaving gaps for a complete understanding in a broader context.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description does not need to compensate for any parameter gaps, and it appropriately avoids redundant parameter explanations, earning a baseline score above 3 for clarity in a parameterless context.

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

Purpose5/5

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

The description clearly states the specific action ('List all webhook URLs') and the resource ('subscribed to the workspace'), with additional context about their function ('receive click events for all links'). It distinguishes from siblings like 'list_link_webhooks' by specifying workspace-level scope versus link-level.

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

Usage Guidelines3/5

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

The description implies usage for retrieving workspace webhooks but does not explicitly state when to use this tool versus alternatives like 'list_link_webhooks' or 'subscribe_webhook'. No guidance on prerequisites or exclusions is provided, leaving usage context partially inferred.

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

subscribe_webhookCInspect

Subscribe a webhook URL to receive click events for all links in the workspace.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe webhook URL to receive click event notifications

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool's function but fails to describe critical behavioral traits: it doesn't mention whether this is a mutating operation (likely yes, as it 'subscribes'), what permissions are required, if there are rate limits, how events are formatted, or if the subscription is persistent. For a tool that likely modifies system state, this is a significant gap in transparency.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any redundant or unnecessary information. It is appropriately sized and front-loaded, with every word contributing to understanding the core functionality.

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 complexity of a subscription tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after subscription (e.g., event format, delivery guarantees), potential errors, or how to manage the subscription later. For a tool that likely involves ongoing system changes, more context is needed to ensure proper usage.

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?

The input schema has 100% description coverage, with the single parameter 'url' well-documented in the schema. The description adds no additional semantic context about the parameter beyond what's in the schema (e.g., URL format requirements or validation rules). According to the rules, when schema coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies here.

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 clearly states the action ('Subscribe a webhook URL') and the resource ('to receive click events for all links in the workspace'), providing a specific verb+resource combination. However, it doesn't explicitly distinguish this tool from its sibling 'subscribe_link_webhook', which likely subscribes to events for specific links rather than all links, leaving some ambiguity about sibling differentiation.

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?

The description provides no guidance on when to use this tool versus alternatives like 'subscribe_link_webhook' or other webhook-related tools. It lacks context about prerequisites, such as whether the URL needs to be pre-configured, or exclusions, such as when not to use it. This leaves the agent with minimal usage direction.

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

unsubscribe_webhookCInspect

Unsubscribe a webhook URL from workspace click events.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe webhook URL to unsubscribe

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'unsubscribe' implies a destructive operation, the description doesn't specify whether this requires specific permissions, whether the action is reversible, what happens if the URL isn't subscribed, or any rate limits. For a mutation tool with zero annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a tool with one parameter and gets straight to the point.

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?

For a destructive operation tool with no annotations and no output schema, the description is incomplete. It doesn't address important contextual information like what happens after unsubscription, whether there's confirmation feedback, error conditions, or how this interacts with sibling unsubscribe tools. The agent would need to guess about many behavioral aspects.

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?

The schema description coverage is 100%, with the single parameter 'url' clearly documented in the schema as 'The webhook URL to unsubscribe'. The description doesn't add any additional parameter information beyond what's already in the structured schema, so the baseline score of 3 is appropriate.

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 clearly states the action ('unsubscribe') and target ('webhook URL from workspace click events'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'unsubscribe_link_webhook' - both involve unsubscribing webhooks but for different scopes (workspace vs link-specific).

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 is provided about when to use this tool versus alternatives like 'unsubscribe_link_webhook' or what prerequisites might be needed. The description only states what the tool does, not when it should be selected over other unsubscribe options available in the sibling list.

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

update_domain_faviconCInspect

Update the favicon URL for a custom domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_idYesThe ID of the domain to update
favicon_urlYesURL to the favicon image

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It implies a mutation ('Update'), but doesn't disclose behavioral traits like required permissions, whether the change is reversible, potential side effects, or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.

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 that this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral aspects like permissions, reversibility, and response format, which are crucial for safe and effective use by an AI agent.

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?

The schema description coverage is 100%, with both parameters ('domain_id' and 'favicon_url') fully documented in the input schema. The description adds no additional meaning beyond what the schema provides, such as format details or constraints, so it meets the baseline for high schema coverage.

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 clearly states the action ('Update') and the specific resource ('favicon URL for a custom domain'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'update_link', but the specificity of 'favicon URL' and 'custom domain' provides enough distinction in context.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'update_link' or 'create_domain', nor does it mention prerequisites like needing an existing domain. It states what the tool does but offers no contextual usage advice.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 20 tool updatesv1.3.0
    • First observedcreate_domain
    • First observedcreate_link
    • First observeddelete_domain
    • First observeddelete_link
    • First observedexport_clicks
    • First observedget_analytics
    • First observedget_analytics_by
    • First observedget_clicks
    • First observedget_link
    • First observedlist_domains
    • First observedlist_link_webhooks
    • First observedlist_links
    • First observedlist_webhooks
    • First observedsearch_links
    • First observedsubscribe_link_webhook
    • First observedsubscribe_webhook
    • First observedunsubscribe_link_webhook
    • First observedunsubscribe_webhook
    • First observedupdate_domain_favicon
    • First observedupdate_link

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a distinct purpose with clear boundaries, targeting specific resources (domains, links, webhooks, analytics) and actions (create, delete, get, list, update, subscribe, unsubscribe, export). There is no overlap or ambiguity; for example, get_analytics and get_analytics_by serve different analytical functions, and webhook tools are clearly separated by scope (link-specific vs. workspace-wide).

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern throughout, with verbs like create, delete, get, list, update, subscribe, unsubscribe, export, and search applied to nouns such as domain, link, webhook, analytics, and clicks. There are no deviations in style (e.g., no camelCase or mixed conventions), making the set predictable and readable.

Tool Count4/5

With 20 tools, the count is slightly high but reasonable for a link management and analytics domain, covering domains, links, webhooks, and analytics comprehensively. It avoids being excessive (e.g., not over 25) and each tool appears justified, though it could be streamlined slightly without losing functionality.

Completeness5/5

The tool set provides complete CRUD/lifecycle coverage for domains (create, list, delete, update_favicon), links (create, get, list, update, delete, search), and webhooks (subscribe, unsubscribe, list for both link-specific and workspace-wide). Analytics tools (get_analytics, get_analytics_by, export_clicks, get_clicks) offer robust data access, leaving no obvious gaps for agent workflows in this domain.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to create, manage, and analyze short URLs through complete URL shortening functionality. Supports batch operations, custom domains, click statistics, and comprehensive link management.
    6
    18
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with the Firelinks link shortening platform to create and manage short links, track click statistics, manage custom domains, and compare analytics periods through natural language.
    3
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables users to manage short links via cliqo.link, including creating, listing, viewing, and revoking links, as well as checking credit balances.
    5
    14
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Linkly-HQ/linkly-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server