kualat-mcp
Click on "Deploy 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., "@kualat-mcp Shorten https://example.com/spring-sale and tell me the new link"
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.
@kualat/mcp
A Model Context Protocol server for a kua.lat installation: shorten links, read click statistics, and manage signed webhook subscriptions from an AI assistant.
Written in TypeScript on top of the official
@modelcontextprotocol/sdk.
The server holds no state and stores no credentials; it authenticates to your
installation with a bearer API key on every request.
Requirements
Node.js 18 or newer
Network access to your installation
Related MCP server: mcp-shlink
Install
npm install -g @kualat/mcpThe kualat-mcp command is then on your path. To run it without installing:
npx -y @kualat/mcp --versionConfigure a client
Add the server to claude_desktop_config.json for Claude Desktop, or to
mcp.json for Cursor and other clients that launch stdio servers:
{
"mcpServers": {
"kualat": {
"command": "kualat-mcp",
"env": {
"KUALAT_API_URL": "https://your-domain.com/api",
"KUALAT_API_KEY": "your-api-key"
}
}
}
}If the binary is not on the client's PATH, use "command": "npx" with
"args": ["-y", "@kualat/mcp"], or pass the values as flags:
"args": ["--api-url=https://your-domain.com/api", "--api-key=..."].
Environment variable | Flag | Meaning |
|
| API root of the installation, including the |
|
| Personal API key, or a scoped key |
|
| Request timeout in seconds, default 30 |
Scopes on the key decide which tools work: links covers the link tools,
domains covers list_domains, webhooks covers the webhook tools, and all
covers everything.
Tools
Tool | Kind | Endpoint |
| write |
|
| read |
|
| read |
|
| write |
|
| destructive |
|
| read |
|
| read |
|
| read |
|
| write |
|
| destructive |
|
| write |
|
Every tool declares MCP annotations: readOnlyHint for reads,
destructiveHint for delete_link and delete_webhook, and openWorldHint
because each call reaches your installation over the network. Argument schemas
are built with zod, so invalid arguments are rejected before the API is called.
update_link follows the API's PATCH semantics: fields that are not sent are
cleared. Pass every field you want to keep.
Protocol behaviour
Built on the official SDK: stdio transport, initialize handshake and protocol version negotiation are handled there.
Advertises the
toolscapability only. No resources, prompts or sampling.Tool failures (HTTP errors, missing arguments) return
isError: truewith the API'sdetailtext, so the assistant can correct itself instead of seeing a protocol error.Notifications never receive a response.
stdout carries JSON-RPC only. Diagnostics go to stderr.
Command line
kualat-mcp --version
kualat-mcp --list-tools
kualat-mcp --call '{"name":"list_links","arguments":{"limit":2}}'
kualat-mcp --call '{"name":"shorten_link","arguments":{"url":"https://example.com"}}'--call runs the request through the same server implementation a client
talks to, so its output matches the protocol. With neither --list-tools nor
--call, the server speaks MCP over stdin/stdout:
printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| kualat-mcpDevelopment
npm install
npm run lint # tsc --noEmit
npm run check # build + smoke test over an in-memory transport, no networkLayout:
src/cli.ts argument parsing, --list-tools/--call, stdio entry point
src/server.ts McpServer assembly and tool registration
src/tools.ts tool catalog: zod schemas, annotations, handlers
src/client.ts HTTP client over fetch
src/errors.ts ApiError
src/version.ts server name and versionSecurity
The server acts with the privileges of the API key it is given. Create a scoped key when the assistant only needs part of the catalog.
Destructive tools are annotated but not gated here; the client decides whether to ask. Treat a key handed to an autonomous agent as a key that can delete links.
Nothing is written to disk. Keep the key in the client configuration.
License
MIT. See LICENSE.
Available Tools
11 toolscreate_webhookCreate a webhookA
Subscribe an endpoint to link events. The response carries the signing secret (whsec_); deliveries follow the Standard Webhooks spec, signed with HMAC-SHA256 over "{id}.{timestamp}.{payload}".
Inputs: url (required), events (required), name.
delete_linkDelete a linkBDestructive
Delete a link permanently, together with its click statistics. This cannot be undone.
Inputs: id (required).
delete_webhookDelete a webhookADestructive
Remove a webhook subscription and its delivery log. This cannot be undone.
Inputs: id (required).
get_accountGet accountCRead-only
Account profile, plan, quotas and usage counters.
Inputs: no named parameters.
get_linkGet a linkARead-only
Read one link with its click statistics, split by country, referrer, browser and OS.
Inputs: id (required).
list_domainsList domainsCRead-only
Branded domains connected to the account and their DNS status.
Inputs: page, limit.
list_linksList linksBRead-only
Page through the links of the account, newest first by default.
Inputs: page, limit, order, search.
list_webhooksList webhooksCRead-only
Webhook subscriptions of the account, including their event filter, last delivery status and failure count.
Inputs: page, limit.
shorten_linkShorten a linkB
Create a short link on the account. Returns the short URL, alias and link id.
Inputs: url (required), title, custom, domain, +3 more.
test_webhookTest a webhookA
Deliver a ping immediately and report the endpoint response code, so a broken endpoint shows up before the workflow depends on it.
Inputs: id (required).
update_linkUpdate a linkA
Change a link. The API replaces the optional settings it does not receive, so pass every field you want to keep.
Inputs: id (required), url, title, custom, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Each tool maps to a distinct resource+action pair: link CRUD (shorten/list/get/update/delete), account read, domain list, and webhook lifecycle (list/create/delete/test). The only near-neighbours, create_webhook vs test_webhook, are clearly separated by their descriptions (persistent subscription vs one-off ping). No two tools appear interchangeable.
All names are snake_case verb_noun with a consistent verb vocabulary (list_, get_, create_, update_, delete_, test_). The one deviation is shorten_link, which uses a domain-specific verb instead of the create_ prefix used elsewhere (create_webhook), a minor but noticeable inconsistency.
Eleven tools is well within the ideal range and each one earns its place: five cover the link lifecycle, one covers the account, one covers domains, and four cover webhooks. Nothing looks like filler or a redundant convenience wrapper.
Links have full CRUD plus analytics, and webhooks cover list/create/delete/test, so the core lifecycle is closed. Gaps are minor: there is no update_webhook or get_webhook (only list), and domains are read-only with no create/verify operation, which agents would have to work around.
Maintenance
Related MCP Connectors
Make, find, pause and track short links and QR codes from your AI assistant. Create short links with an optional custom address, title and tags; find links and QR codes; update, pause, resume, archive or restore them; and read click analytics (clicks, unique visitors, countries, referrers, devices, browsers) for a link, a QR code or the whole account. Sign in with OAuth and choose what the assistant may do. Every change can be undone; nothing is ever permanently deleted. Works on every plan, including Free.
Create short links and see their click counts from your AI assistant.
1Create and manage short links, track clicks, and automate URL management
Free URL shortener: manage short links, QR codes and click analytics from AI clients.
Related MCP Servers
- 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.66 npm1MIT
- AlicenseBqualityFmaintenanceEnables AI assistants to interact with a Shlink URL shortening instance, allowing creation, listing, retrieval, and deletion of short URLs, as well as tag management.54Apache 2.0
- AlicenseAqualityBmaintenanceEnables users to shorten links, bulk create URLs, generate QR codes, manage and disable links, and retrieve click analytics from MCP clients like Claude, ChatGPT, Cursor, and n8n.9MIT

LinkPilot MCP Serverofficial
AlicenseAqualityCmaintenanceEnables AI assistants to shorten URLs with click tracking and to hand over credentials as self-destructing, one-time links whose contents are encrypted locally before transmission, so the recipient can open them exactly once. Also provides tools to list links, inspect secret metadata, revoke secrets immediately, and check account plan and rate limits.658 npm1MIT