Cuttly MCP by usefulapi
Shorten links with Cuttly, read click stats, and edit, expire, redirect or delete short links.
我該用這個嗎
品質與安全性
發現項目(7)
- HIGH
- MEDIUM在 cuttly_shorten_link 中
- MEDIUM在 cuttly_get_link_stats 中
- MEDIUM在 cuttly_update_link 中
- MEDIUM在 cuttly_set_link_expiration 中
- MEDIUM在 cuttly_set_device_redirect 中
- MEDIUM在 cuttly_delete_link 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"cuttly": {
"url": "https://cuttly.usefulapi.io/mcp"
}
}
}遠端端點
https://cuttly.usefulapi.io/mcpstreamable-http它能做什麼
工具清單
工具(6)
🟡cuttly_shorten_link(url, alias, use_branded_domain, public_stats)
WRITE: create a Cuttly short link for a long URL, optionally with a custom alias (the part after the slash). Returns the short link, the full link and the page title. It counts against the monthly link limit of the plan. Cuttly rate limit: Free 3 calls per 60 seconds, Starter 6, Single 60. The call is sent once and never retried. GET https://cutt.ly/api/api.php?short=...
輸入結構描述
{
"type": "object",
"properties": {
"url": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The long URL to shorten (full http or https URL)."
},
"alias": {
"description": "Custom alias (back-half), e.g. 'spring-sale'. Fails if it is taken.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"use_branded_domain": {
"description": "Use the active branded domain of the account instead of cutt.ly (any paid plan).",
"type": "boolean"
},
"public_stats": {
"description": "Make the click statistics of this link readable through the API without the owner's key (Single plan and up).",
"type": "boolean"
}
},
"required": [
"url"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢cuttly_get_link_stats(link, date_from, date_to)
Click statistics of one short link: total clicks, clicks by source (Facebook, Twitter, LinkedIn, other, bots), top referrers, countries, device types, operating systems, browsers, device brands and languages. The date range filter needs the Team plan or higher. Counts as one API call (Free plan 3 per 60 seconds). GET https://cutt.ly/api/api.php?stats=...
輸入結構描述
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The Cuttly short link, e.g. https://cutt.ly/abc123 (or a link on your branded domain)."
},
"date_from": {
"description": "Start of the range (Team plan and up).",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"date_to": {
"description": "End of the range (Team plan and up). May be used alone.",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
}
},
"required": [
"link"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cuttly_update_link(link, new_alias, destination_url, title, tag, ...)
WRITE: change a short link: its alias, destination URL, title, tag or unique-click window. Send only what you want to change. Changing the alias makes the old short link stop working; changing the destination redirects every visitor to the new URL at once. Link editing needs the Single plan or higher. Cuttly sends no previous values back, so ask the user before you change a live link. The call is sent once and never retried. GET https://cutt.ly/api/api.php?edit=...
輸入結構描述
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The Cuttly short link, e.g. https://cutt.ly/abc123 (or a link on your branded domain)."
},
"new_alias": {
"description": "New alias. The old short link stops working. Fails if the alias is taken.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"destination_url": {
"description": "New destination URL the short link redirects to.",
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"title": {
"description": "New link title.",
"type": "string",
"minLength": 1,
"maxLength": 250
},
"tag": {
"description": "A tag to add to the link.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"unique_clicks_minutes": {
"description": "Unique-click counting: 0 = off, 1 = 15-minute window (Single plan), 15-1440 = custom window in minutes (Team plan and up).",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"link"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cuttly_set_link_expiration(link, mode, clicks, date, redirect_url, ...)
WRITE: set or remove the expiration of a short link. The link expires after a number of clicks or on a date, and can then redirect to another URL. mode 'none' removes an existing expiration. Needs the Single plan or higher. The call is sent once and never retried. GET https://cutt.ly/api/api.php?edit=...&expire=...
輸入結構描述
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The Cuttly short link, e.g. https://cutt.ly/abc123 (or a link on your branded domain)."
},
"mode": {
"type": "string",
"enum": [
"clicks",
"date",
"none"
],
"description": "'clicks' = expire after `clicks` clicks, 'date' = expire on `date`, 'none' = remove the expiration."
},
"clicks": {
"description": "Click threshold (mode 'clicks').",
"type": "integer",
"minimum": 1,
"maximum": 1000000000
},
"date": {
"description": "Expiration date (mode 'date').",
"type": "string",
"pattern": "^(\\d{4})-(\\d{2})-(\\d{2})$"
},
"redirect_url": {
"description": "Where visitors go after the link expired.",
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"count_unique_clicks": {
"description": "Count only unique clicks toward a click threshold.",
"type": "boolean"
}
},
"required": [
"link",
"mode"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cuttly_set_device_redirect(link, platform, destination, remove)
WRITE: send visitors on one device type to another destination (an app store page or a deep link): Android, iOS or Windows Mobile. platform 'redirect' sets the destination for all other devices. Set `remove: true` instead of a destination to delete the rule. Needs the Single plan or higher. The call is sent once and never retried. GET https://cutt.ly/api/api.php?edit=...&mobile=...
輸入結構描述
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The Cuttly short link, e.g. https://cutt.ly/abc123 (or a link on your branded domain)."
},
"platform": {
"type": "string",
"enum": [
"android",
"ios",
"windowsMobile",
"redirect"
],
"description": "Device type. 'redirect' = every other device."
},
"destination": {
"description": "URL or deep link for that device type.",
"type": "string",
"minLength": 1,
"maxLength": 2048
},
"remove": {
"description": "true = remove the rule of this device type (then do not pass a destination).",
"type": "boolean"
}
},
"required": [
"link",
"platform"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴cuttly_delete_link(link)
WRITE, IRREVERSIBLE: permanently delete a short link and its statistics. Anyone who opens the short link afterwards gets an error, and Cuttly cannot restore it. Ask the user to confirm the exact link before you call this. Needs the Single plan or higher. The call is sent once and never retried. GET https://cutt.ly/api/api.php?edit=...&delete=1
輸入結構描述
{
"type": "object",
"properties": {
"link": {
"type": "string",
"minLength": 1,
"maxLength": 2048,
"description": "The Cuttly short link, e.g. https://cutt.ly/abc123 (or a link on your branded domain)."
}
},
"required": [
"link"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}社群
證據