linkonda-mcp
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., "@linkonda-mcpCreate a short link for https://example.com"
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.
Linkonda MCP server
Create and manage Linkonda short links from Claude, Claude Code, Cursor, or any other MCP client.
Linkonda records a total redirect count per link and nothing else — no IP addresses, geolocation, device data, or referrers. That matters more than usual for an agent, which can generate links in bulk without building a visitor dataset you then have to secure, retain, and answer requests about.
Works without an API key
Most shortener MCP servers refuse to start without credentials. This one shortens URLs immediately on install: anonymous links are capped per network and expire after 30 days. Add a key when you want links that persist and can be managed.
No key | With | |
| ✅ 10 links, expire after 30 days | ✅ permanent, saved to your account |
| ✅ | ✅ |
| ✅ anonymous allowance | ✅ your plan |
| ✗ | ✅ |
Bearer authentication requires a paid plan — see pricing. Create a key in the dashboard under API keys; it is shown once.
Related MCP server: enke
Install
Add to your MCP client config (Claude Desktop: claude_desktop_config.json; Claude Code: .mcp.json):
{
"mcpServers": {
"linkonda": {
"command": "npx",
"args": ["-y", "@veranoapp/linkonda-mcp"]
}
}
}To use an API key, add it to the same entry:
{
"mcpServers": {
"linkonda": {
"command": "npx",
"args": ["-y", "@veranoapp/linkonda-mcp"],
"env": { "LINKONDA_API_KEY": "lk_your_key_here" }
}
}
}Variable | Default | Purpose |
| (unset) | Bearer key. Omit to run anonymously. |
|
| Point at another instance. |
Tools
Tool | What it does | Key required |
| Shorten one URL | No |
| Shorten up to 100 URLs in one request | Yes |
| List your links with destinations and click counts | Yes |
| Change a destination, or pause/resume a link | Yes |
| Permanently delete a link | Yes |
| Total redirect count for a link | No |
| Links live vs. plan allowance | No |
shorten_links_bulk is partial-success: some entries can fail (quota, invalid URL) while others are created, and the tool reports both lists rather than only the successes.
What you cannot get
There is no per-visitor data to return, so there are no tools for geographic, device, or referrer breakdowns — that data is never collected. If your workflow needs click attribution, a tracking shortener is the right tool; see the comparisons.
Development
npm install
npm run build
LINKONDA_API_KEY=lk_... npm start # speaks MCP over stdionpm run typecheck runs the compiler without emitting.
Available Tools
7 toolscheck_quotaCheck remaining link allowanceARead-only
Report how many links are live and how many the current plan allows. Without an API key this reports the anonymous allowance. Use it before a bulk create to check for room.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=true, so the description adds value with API key behavior (anonymous allowance without a key) and what the report contains. It goes beyond the annotation without contradicting it.
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 sentences, front-loaded with the main action, and contains no redundant phrasing. Every word contributes to understanding.
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 zero-parameter, read-only tool without an output schema, the description fully covers what it reports (live vs allowed) and when to use it (before bulk creates), including the anonymous allowance nuance. No gaps remain.
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 zero parameters, which sets a baseline of 4. The description doesn't need to elaborate on parameter semantics, and the reference to API key context is not a parameter.
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 uses the specific verb 'Report' and clearly identifies the resource: link allowance. It explains exactly what is measured (live links vs. plan allowance) and distinguishes it from sibling tools that create, list, update, or delete links.
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 explicitly advises using the tool before a bulk create to check for room, which is a clear usage context. However, it doesn't mention when-not-to-use or point to alternatives like the top-tier example does.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkDelete a short linkADestructiveIdempotent
Permanently delete a short link. The short URL stops working immediately and anyone who already has it will get a 404 — prefer update_link with paused:true if it might be needed again. Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The link's short code (the part after the domain). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds valuable context about the immediate effect ('the short URL stops working immediately and anyone who already has it will get a 404') and the API key requirement. No contradiction with annotations.
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 sentences, front-loaded with the core purpose. It includes the destructive effect, an important caveat, an alternative tool, and an auth requirement—all without unnecessary wording.
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 single-parameter destructive tool with annotations and no output schema, the description is comprehensive. It explains the immediate consequence (404), suggests a safer alternative, and mentions the API key requirement, covering all critical context a user would need.
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 covers the sole parameter slug at 100% with a clear description ('The link's short code (the part after the domain)'). The tool description does not add additional parameter semantics beyond what the schema already provides, so the baseline of 3 applies.
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 opens with 'Permanently delete a short link,' which is a specific verb+resource statement. It further distinguishes the tool from its sibling update_link by mentioning 'prefer update_link with paused:true,' clearly identifying the difference.
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 explicitly provides a when-not-to-use alternative: 'prefer update_link with paused:true if it might be needed again.' It also states the prerequisite 'Requires an API key,' giving clear context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_link_statsGet a short link's click countARead-only
Return the total number of times a short link has been followed. This is the only click data that exists — Linkonda stores no per-visitor information, so there is no geographic, device, or referrer breakdown to report. No API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The link's short code (the part after the domain). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, but the description adds valuable behavioral context: it states there is no geographic/device/referrer breakdown and that no API key is needed. This goes beyond the annotation by explaining data limits and authentication requirements.
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 sentences long with no redundant phrasing. The first sentence clearly states the function, and the second adds important limitations and the no-auth detail, making every sentence purposeful.
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 one-parameter, read-only tool with no output schema, the description is complete: it explains what it returns, what data is not available, and that no API key is needed. It leaves no major gaps for an agent to invoke it correctly.
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% (the 'slug' parameter is fully described as the short code). The tool description does not add additional parameter-level meaning beyond what the schema already provides, so baseline 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 uses a specific verb ('Return') and resource ('total number of times a short link has been followed'), clearly defining the tool's purpose. It also distinguishes itself from sibling tools by focusing solely on click count, unlike link management tools such as shorten_link or delete_link.
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 explicitly states that this is the only click data available and clarifies that no per-visitor breakdown exists, giving clear context for when to use the tool. While it doesn't name alternative tools, it guides usage by setting expectations about what data is not available.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksList my short linksARead-only
List the short links on the authenticated account, with their destinations and total redirect counts. Requires an API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, so the description correctly aligns by describing a read-only listing operation. It adds the API key requirement and clarifies the scope (authenticated account). However, it does not mention pagination, result limits, or other behavioral details, but this is a reasonable amount given the simple 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 only two sentences, front-loaded with the action and resource. The second sentence about requiring an API key is useful authentication context. No filler or redundant wording.
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 zero-parameter tool with simple functionality, the description adequately covers what the tool does, the data returned (destinations and redirect counts), and the API key requirement. It lacks explicit return format or pagination details, but those are not critical for this simple list operation.
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 zero parameters, so the baseline is 4. The description does not need to add parameter-level detail because the schema is empty and there are no inputs to explain.
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 uses a specific verb ('List') with a resource ('short links on the authenticated account') and states what is included (destinations and total redirect counts). This clearly distinguishes it from sibling mutation tools like shorten_link, update_link, and delete_link, as well as the more specific get_link_stats.
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 gives clear context: this lists the short links on the authenticated account. It implies this is the account-level listing tool and differentiates from creating/updating/deleting links, but does not explicitly state when to use it over get_link_stats or mention exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_linkShorten a URLA
Create a short link for a URL. Works without an API key (anonymous links expire and are not saved to an account). Linkonda records only a total redirect count per link — no IP addresses, geolocation, device data, or referrers. Use when the user wants a short or shareable URL, or a link for a QR code.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The destination URL to shorten. Must be absolute, e.g. https://example.com/page | |
| slug | No | Optional custom short code. Requires a paid plan; omit it to get a generated one. | |
| expiresInDays | No | Optional. Delete the link automatically after this many days. Requires a Pro or Enterprise plan — omit it on other plans, where the plan's own lifetime applies. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety hints (all false), so the description carries the full burden. It discloses important behaviors: anonymous links expire and aren't saved, and only total redirect counts are recorded without IPs, geolocation, device data, or referrers. This adds meaningful privacy context beyond the annotations.
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?
Three sentences, each earning its place: the first states the action, the second explains anonymous behavior, and the third gives usage guidance. No redundancy or filler.
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 simple single-link creation tool with no output schema and only one required parameter, the description covers purpose, usage, and privacy behavior. It is complete enough for an agent to invoke correctly without further clarification.
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 each parameter (url, slug, expiresInDays) already documented. The description adds no param-specific details beyond the schema, so the baseline 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 opens with 'Create a short link for a URL,' a specific verb and resource. It clearly distinguishes from the sibling tool 'shorten_links_bulk' by focusing on a single URL, and the usage line further clarifies its scope.
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?
Explicitly states when to use: 'Use when the user wants a short or shareable URL, or a link for a QR code.' It doesn't explicitly name alternatives or exclusions, but the singular 'a URL' implies the bulk sibling is for multiple URLs, so usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_links_bulkShorten many URLs at onceA
Create up to 100 short links in a single request. Requires an API key. Use this instead of calling shorten_link repeatedly when shortening several URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| links | Yes | Up to 100 links to create. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate a write operation (readOnly=false), and the description adds valuable context by mentioning "Requires an API key" and the batch limit of 100. This goes beyond the annotations without contradicting them, though it does not discuss partial failures or idempotency.
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 consists of two concise sentences, each carrying essential information: action/scope and usage guidance. There is no repetition or superfluous detail.
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 simple bulk-creation tool with one well-documented parameter, the description covers purpose, usage, and authentication requirements. It lacks details about response format or partial failure behavior, but given the tool's straightforward nature and the annotations provided, this is a minor omission.
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 fully documents the only parameter 'links' with descriptions like 'Up to 100 links to create' and nested fields. The tool description does not add significant new parameter-level meaning beyond what the schema already provides, so the baseline of 3 applies.
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 action and scope: "Create up to 100 short links in a single request." It distinguishes this from sibling shorten_link by specifying batch creation, making it immediately clear what the tool does and when it differs.
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 second sentence provides explicit guidance: "Use this instead of calling shorten_link repeatedly when shortening several URLs." This directly tells the agent when to choose this tool over the alternative, which is strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_linkUpdate or pause a short linkAIdempotent
Change a short link's destination, or pause/resume it. A paused link stops redirecting but is not deleted. Requires an API key. Changing the destination requires a paid plan.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | New destination URL. | |
| slug | Yes | The link's short code (the part after the domain). | |
| paused | No | true to stop the link redirecting, false to resume it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds useful behavioral context beyond annotations: paused links stop redirecting but are not deleted, an API key is required, and changing destinations requires a paid plan. This is consistent with the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) and enriches the agent's understanding of side effects and constraints.
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?
Three concise sentences that front-load the main action. The first sentence states what the tool does, the second clarifies a behavioral nuance, and the third lists requirements. No filler or repetition.
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 relatively simple tool with three parameters and no output schema, the description covers the primary use cases, constraints, and authentication requirements. Minor gaps exist, such as unspecified behavior when both 'url' and 'paused' are supplied simultaneously, but these are not critical for 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 schema already documents all three parameters at 100% coverage. The description adds semantic context for two key parameters: the 'url' parameter requires a paid plan, and the 'paused' parameter affects redirect behavior without deletion. This goes beyond the schema's basic property descriptions.
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?
Clearly states the tool's function with specific verbs 'change' and 'pause/resume' on the resource 'short link'. This distinguishes it from sibling tools: it is not for creating links (shorten_link), deleting links (delete_link), or retrieving stats (get_link_stats).
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?
Provides clear context for when to use the tool: updating an existing link's destination or pausing/resuming it. It also states prerequisites (API key) and a condition (paid plan for destination changes). However, it does not explicitly mention alternative tools or when not to use it, so it stops short of full exclusionary guidance.
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.
7 tool updates
v0.1.3- First observed
check_quota - First observed
delete_link - First observed
get_link_stats - First observed
list_links - First observed
shorten_link - First observed
shorten_links_bulk - First observed
update_link
TDQS
Each tool has a clearly distinct purpose: creating single vs bulk links, listing, updating, deleting, fetching stats, and checking quota. The only potential overlap between list_links and get_link_stats is clarified by their descriptions (account-level vs single-link, with different API key requirements).
All tool names follow a consistent verb_noun pattern (shorten_link, list_links, update_link, delete_link, get_link_stats, check_quota). The one exception, shorten_links_bulk, still follows the pattern and is clearly readable.
Seven tools is well-scoped for a link shortener service. Each tool addresses a distinct operation, covering the full lifecycle without unnecessary bloat or missing essentials.
The tool set provides full CRUD coverage (create, read, update, delete) plus bulk creation, statistics, and quota checking. There are no obvious dead ends; users can perform all core link management tasks.
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
Official PicSee MCP server for short links, link management, click analytics, and optional OAuth.
Official in.bio MCP server: shorten URLs, styled QR codes, and click analytics. No API key needed.
Free privacy-first URL shortener API. Shorten URLs with custom codes and automatic expiry. No tracking, no API keys required.
Related MCP Servers
AlicenseAqualityDmaintenanceMCP server for Linklee that enables creating short links, listing links, getting click analytics, and managing workspace tags.412MIT- AlicenseAqualityCmaintenanceMCP server for en.ke link management enabling AI agents to shorten URLs, manage links, and view analytics.1213MIT
- AlicenseBqualityBmaintenanceMCP server for opn.onl, the open-source self-hostable URL shortener. Shorten links, read click analytics, generate branded QR codes, and manage links — against the hosted service or your own instance.24482MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that enables AI agents to manage Lnkify links, domains, API keys, and analytics. Allows creation and resolution of short links through natural language.MIT
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/Verano-DE/linkonda-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server