Linkly MCP Server
The Linkly MCP Server allows you to programmatically manage short links, track click analytics, configure custom domains, and set up webhooks.
Link Management
Create short links with custom slugs, domains, UTM parameters, OG tags, expiry settings, and tracking options
Update, delete, get details for, list, and search links
Analytics & Click Data
Get time-series click counts (by day or hour) with filters for country, browser, platform, bots, etc.
Get grouped analytics broken down by dimension (country, platform, browser, referrer, ISP, etc.)
View recent raw click data and export detailed click records (timestamp, browser, country, platform, referrer, etc.)
Custom Domain Management
List, add, and delete custom domains
Update the favicon for a custom domain
Webhook Configuration
Manage workspace-level webhooks (click events for all links)
Manage link-specific webhooks (click events for a single link)
Subscribe and unsubscribe from both webhook types
Provides tools for managing Linkly short links, analytics, domains, and webhooks, enabling ChatGPT to interact with the Linkly platform.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Linkly MCP Servercreate a short link for our new product launch page"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Linkly MCP Server
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-servernpm 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.comChatGPT Desktop
{
"servers": {
"linkly": {
"type": "url",
"url": "https://mcp.linklyhq.com"
}
}
}Available Tools
Tool | Description |
| Create a new short link |
| Update an existing link |
| Delete a link |
| Get link details |
| List all links in workspace |
| Search links by name, URL, or note |
| Get time-series click data |
| Get clicks grouped by dimension |
| Get recent click data |
| Export detailed click records |
| List custom domains |
| Add a custom domain |
| Remove a custom domain |
| Update domain favicon |
| List workspace webhooks |
| Add a webhook |
| Remove a webhook |
| List link-specific webhooks |
| Add a link webhook |
| Remove a link webhook |
Links
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 publishSee 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:
Deploy the worker (push to the connected branch /
wrangler deploy).Platform dashboard → the Linkly app → create a new draft version (keep the same MCP URL
https://mcp.linklyhq.com).In the MCP section, click Scan Tools to re-read the live tool list + annotations.
Drag
chatgpt-app-submission.jsononto the form (top of the page) to fill the justifications.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 toolscreate_domainCInspect
Add a custom domain to the workspace. The domain must be configured to point to Linkly's servers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The domain name (e.g., 'links.example.com') |
TDQS
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.
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.
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.
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.
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.
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.
create_linkCInspect
Create a new Linkly short link. Returns the created link with its short URL.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The destination URL for the link (required) | |
| name | No | A nickname for the link to identify it later | |
| note | No | A private note about this link | |
| slug | No | Custom slug/suffix for the link (must start with /) | |
| domain | No | Custom domain for the short link (without trailing /) | |
| gtm_id | No | Google Tag Manager container ID | |
| enabled | No | Whether the link is active (default: true) | |
| cloaking | No | Hide destination URL by opening in an iframe | |
| og_image | No | Open Graph image URL for social media previews | |
| og_title | No | Open Graph title for social media previews | |
| utm_term | No | UTM term parameter | |
| block_bots | No | Block known bots and spiders from following the link | |
| ga4_tag_id | No | Google Analytics 4 tag ID | |
| utm_medium | No | UTM medium parameter | |
| utm_source | No | UTM source parameter | |
| fb_pixel_id | No | Meta/Facebook Pixel ID for tracking | |
| utm_content | No | UTM content parameter | |
| utm_campaign | No | UTM campaign parameter | |
| hide_referrer | No | Hide referrer information when users click | |
| forward_params | No | Forward URL parameters to the destination | |
| og_description | No | Open Graph description for social media previews | |
| expiry_datetime | No | ISO 8601 datetime when the link should expire | |
| expiry_destination | No | Fallback URL after expiry (404 if blank) |
TDQS
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. While it mentions that the tool 'Returns the created link with its short URL,' it fails to address critical behavioral aspects such as authentication requirements, rate limits, error conditions, or whether the operation is idempotent. For a creation tool with 23 parameters, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just two sentences that directly state the tool's purpose and return value. Every word serves a clear function with zero redundancy, making it efficiently front-loaded and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (23 parameters, creation operation) and absence of both annotations and an output schema, the description is insufficiently complete. It doesn't explain what the return value looks like beyond 'the created link with its short URL,' nor does it cover error handling, permissions, or system constraints. For a tool with this many configuration options, more contextual information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with each parameter clearly documented (e.g., 'The destination URL for the link (required)'). The description adds no additional parameter information beyond what's in the schema, which is acceptable given the comprehensive schema coverage, resulting in the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create a new Linkly short link') and resource ('short link'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this tool from sibling tools like 'update_link' or 'delete_link' beyond the creation aspect, 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.
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 'update_link' for modifying existing links or 'list_links' for viewing. There's no mention of prerequisites, constraints, or typical use cases, leaving the agent without contextual usage instructions.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain to delete |
TDQS
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.
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.
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.
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.
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.
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.
delete_linkCInspect
Delete a Linkly link by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | The ID of the link to delete |
TDQS
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 'Delete' implies a destructive operation, it doesn't specify whether deletion is permanent, reversible, requires specific permissions, or has side effects (like affecting associated analytics or webhooks). For a destructive operation 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.
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 simple 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.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description is incomplete. It doesn't address critical context like whether the deletion is permanent, what happens to associated data (clicks, analytics, webhooks), or what confirmation/response to expect. Given the tool's complexity and lack of structured coverage, more behavioral information is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'link_id' fully documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema, so it meets the baseline expectation without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a Linkly link by its ID'), making the purpose immediately understandable. It doesn't explicitly distinguish from sibling tools like 'delete_domain' or 'update_link', but the specificity of 'link' vs 'domain' provides implicit differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'update_link' for modification or other deletion tools. The description only states what it does, not when it should be selected over other available options.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date in YYYY-MM-DD format (default: yesterday) | |
| bots | No | Bot filtering | |
| start | No | Start date in YYYY-MM-DD format (default: 30 days ago) | |
| country | No | Filter by country code | |
| link_id | No | Filter by specific link ID | |
| platform | No | Filter by platform |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date in YYYY-MM-DD format (default: today) | |
| bots | No | Bot filtering: include (default), exclude, or only | |
| start | No | Start date in YYYY-MM-DD format (default: 30 days ago) | |
| unique | No | Count unique clicks only (by IP) | |
| browser | No | Filter by browser name | |
| country | No | Filter by country code (e.g., 'US', 'GB') | |
| link_id | No | Filter by specific link ID | |
| platform | No | Filter by platform (e.g., 'desktop', 'mobile', 'tablet') | |
| frequency | No | Time granularity: 'day' (default) or 'hour' |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date in YYYY-MM-DD format (default: today) | |
| bots | No | Bot filtering | |
| start | No | Start date in YYYY-MM-DD format (default: 30 days ago) | |
| unique | No | Count unique clicks only | |
| counter | Yes | Dimension to group by (required) | |
| country | No | Filter by country code | |
| link_id | No | Filter by specific link ID | |
| platform | No | Filter by platform |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | No | Optional: filter clicks by link ID |
TDQS
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.
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.
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.
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.
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.
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.
get_linkCInspect
Get details of a specific Linkly link by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | The ID of the link to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves details but doesn't specify what details are included, whether authentication is required, if there are rate limits, or the response format. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 unnecessary words. It is front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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. It doesn't explain what details are returned, potential errors, or behavioral traits like permissions needed. For a retrieval tool in a context with multiple sibling tools, more guidance and transparency are warranted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema fully documents the 'link_id' parameter. The description adds no additional meaning beyond what the schema provides, such as examples or constraints, but it doesn't need to compensate for low coverage. Baseline 3 is appropriate when the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get details') and resource ('a specific Linkly link by its ID'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'list_links' or 'search_links', which also retrieve link information but with different scopes or filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'list_links' for multiple links or 'search_links' for filtered searches. It lacks context on prerequisites or exclusions, leaving the agent to infer usage based on the tool name alone.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_linksBInspect
List all links in the workspace. Returns links with click statistics.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 mentions the return includes 'click statistics', which adds some behavioral context, but lacks details on permissions, rate limits, pagination, or workspace scope. For a read operation 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero waste: the first states the action and resource, and the second adds output information. It's front-loaded and efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and output, but for a list operation in a server with many sibling tools, it should provide more context on behavior and usage to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but this is appropriate given the lack of parameters, warranting a baseline score of 4 for adequate handling.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all links in the workspace' specifies the verb (list) and resource (links), and 'Returns links with click statistics' adds output detail. However, it doesn't explicitly differentiate from sibling tools like 'search_links' or 'get_link', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. For example, it doesn't mention when to choose 'list_links' over 'search_links' (which might allow filtering) or 'get_link' (which might retrieve a single link), leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_link_webhooksBInspect
List all webhook URLs subscribed to a specific link.
| Name | Required | Description | Default |
|---|---|---|---|
| link_id | Yes | The ID of the link |
TDQS
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, rate limits, authentication needs, or what happens if the link doesn't exist. This leaves significant gaps for a tool with potential complexity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 wasted words. It's front-loaded and appropriately sized for a simple list operation, earning full marks for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description is minimally adequate but incomplete. It lacks details on behavioral traits and usage context, which are important even for basic tools, especially with siblings like 'list_webhooks' that could cause confusion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'link_id' parameter clearly documented as 'The ID of the link'. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all webhook URLs') and resource ('subscribed to a specific link'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from the sibling 'list_webhooks' tool, which appears to be a broader version, so it misses the highest clarity mark.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_webhooks' or other sibling tools. It lacks context on prerequisites, such as needing an existing link, or exclusions, leaving the agent without usage direction.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
search_linksBInspect
Search for links by name, URL, or note. Returns matching links with click statistics.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query to match against link names, URLs, and notes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'Returns matching links with click statistics,' which adds useful context about the output format beyond a simple list. However, it doesn't cover other behavioral aspects like pagination, rate limits, authentication needs, or error handling, leaving gaps for a search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise and front-loaded, consisting of two clear sentences: one for the search action and one for the return value. Every word earns its place, with no redundancy or unnecessary elaboration, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a search function with one parameter) and no output schema, the description is partially complete. It explains the search scope and return data ('click statistics'), but lacks details on output structure, error cases, or performance considerations. With no annotations, it should do more to compensate, but it's adequate for basic use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'query' parameter well-documented as 'Search query to match against link names, URLs, and notes.' The description adds minimal value by restating this ('Search for links by name, URL, or note') but doesn't provide additional syntax, format examples, or constraints beyond the schema. This 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for links by name, URL, or note.' It specifies the verb ('Search') and resource ('links'), and mentions the searchable fields. However, it doesn't explicitly differentiate from siblings like 'list_links' or 'get_link', which could be used for similar retrieval purposes, so it falls short of 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.
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. It doesn't mention siblings like 'list_links' (which might list all links without filtering) or 'get_link' (which might retrieve a specific link by ID), nor does it specify prerequisites or exclusions. Usage is implied by the search functionality but not explicitly defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_link_webhookCInspect
Subscribe a webhook URL to receive click events for a specific link.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webhook URL to receive click event notifications | |
| link_id | Yes | The ID of the link |
TDQS
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 subscribes a webhook, implying a mutation operation, but does not cover critical aspects like authentication requirements, rate limits, error handling, or what happens on success (e.g., confirmation details). This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., side effects, response format), usage context, and how it integrates with sibling tools, leaving the agent with incomplete information for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, clearly documenting both parameters ('link_id' and 'url'). The description does not add any additional meaning beyond the schema, such as format examples or constraints, but the schema adequately covers the basics, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Subscribe') and resource ('a webhook URL to receive click events for a specific link'), making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'subscribe_webhook' or 'list_link_webhooks', which might cause confusion about when to use this specific tool versus alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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_webhook' or 'unsubscribe_link_webhook'. It lacks context about prerequisites, such as whether the link must exist or if webhooks need prior setup, and does not mention any exclusions or typical use cases.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webhook URL to receive click event notifications |
TDQS
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.
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.
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.
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.
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.
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_link_webhookBInspect
Unsubscribe a webhook URL from a specific link's click events.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webhook URL to unsubscribe | |
| link_id | Yes | The ID of the link |
TDQS
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 mutation operation ('Unsubscribe') but doesn't specify whether this requires authentication, what happens on success/failure, or if it's idempotent. For a tool that likely modifies state, this lack of detail 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently conveys the core action without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (a mutation with two parameters) and no annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks details on behavior, error handling, or output, which are needed for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with clear documentation for both parameters ('link_id' and 'url'). The description adds no additional semantic context beyond what the schema provides, such as format examples or relationship between parameters, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Unsubscribe') and the target ('a webhook URL from a specific link's click events'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'unsubscribe_webhook' or 'subscribe_link_webhook', which would require mentioning scope or context differences for 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.
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 'unsubscribe_webhook' or 'subscribe_link_webhook', nor does it mention prerequisites such as needing an existing subscription. It only states what the tool does, leaving usage context entirely implicit.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The webhook URL to unsubscribe |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_id | Yes | The ID of the domain to update | |
| favicon_url | Yes | URL to the favicon image |
TDQS
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.
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.
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.
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.
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.
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.
update_linkCInspect
Update an existing Linkly link by its ID
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | New destination URL | |
| name | No | New nickname for the link | |
| note | No | New private note | |
| gtm_id | No | Google Tag Manager ID | |
| enabled | No | Whether the link is active | |
| link_id | Yes | The ID of the link to update (required) | |
| cloaking | No | Enable URL cloaking | |
| og_image | No | Open Graph image URL | |
| og_title | No | Open Graph title | |
| utm_term | No | UTM term parameter | |
| block_bots | No | Block bots | |
| ga4_tag_id | No | Google Analytics 4 tag ID | |
| utm_medium | No | UTM medium parameter | |
| utm_source | No | UTM source parameter | |
| fb_pixel_id | No | Meta Pixel ID | |
| utm_content | No | UTM content parameter | |
| utm_campaign | No | UTM campaign parameter | |
| hide_referrer | No | Hide referrer | |
| forward_params | No | Forward URL parameters | |
| og_description | No | Open Graph description | |
| expiry_datetime | No | Expiry datetime (ISO 8601) | |
| expiry_destination | No | Fallback URL after expiry |
TDQS
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 'Update' implies a mutation operation, it doesn't specify whether this requires authentication, what permissions are needed, whether changes are reversible, or what happens when only some fields are provided. For a complex mutation tool with 22 parameters, this is insufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a tool with extensive schema documentation and follows good front-loading principles by stating the core action immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 22 parameters and no annotations or output schema, the description is inadequate. It doesn't explain what happens when you update a link, what the response looks like, error conditions, or how partial updates work. The combination of high complexity and lack of structured metadata requires more descriptive context than provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with all 22 parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema, so it meets the baseline of 3 where the schema does the heavy lifting for parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing Linkly link by its ID'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like 'create_link' or 'update_domain_favicon', but the specificity about updating links by ID provides good clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 'create_link' or 'get_link'. It mentions the required 'link_id' parameter but doesn't explain prerequisites, error conditions, or typical use cases for updating versus creating new links.
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.
20 tool updates
v1.3.0- First observed
create_domain - First observed
create_link - First observed
delete_domain - First observed
delete_link - First observed
export_clicks - First observed
get_analytics - First observed
get_analytics_by - First observed
get_clicks - First observed
get_link - First observed
list_domains - First observed
list_link_webhooks - First observed
list_links - First observed
list_webhooks - First observed
search_links - First observed
subscribe_link_webhook - First observed
subscribe_webhook - First observed
unsubscribe_link_webhook - First observed
unsubscribe_webhook - First observed
update_domain_favicon - First observed
update_link
TDQS
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).
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.
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.
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
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
- zebraOAuthio.zeblink
Create, schedule, and organize Zebra short links and query real-time click analytics.
Make and manage short links on your own domain, with analytics and routing rules.
- SnipzrOAuthcom.snipzr
Short links with branded domains, cookie-less analytics and QR codes. Sign in with OAuth or a token
Publish and manage secure HTML links: PII/secret scanning, batch create, patch edits, analytics.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to create, update, and manage short links through your Dub.co account, allowing for creation, modification, and deletion of custom shortened URLs.435MIT
- AlicenseAqualityDmaintenanceEnables 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.6181MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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-

@cliqo/mcpofficial
AlicenseAqualityDmaintenanceEnables users to manage short links via cliqo.link, including creating, listing, viewing, and revoking links, as well as checking credit balances.5141MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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