TinyURL MCP by usefulapi
by usefulapi.io · remote · no sign-in to list tools · v1.3.3 · published by io.usefulapi
Create and manage TinyURL short links: aliases, destinations, tags, archive, click analytics.
8 tools: 3 can delete or cancel things, 1 change things and 4 only read.
Scanned Oct 21, 2026
- Deletes or cancels3Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads4Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http tinyurl https://tinyurl.usefulapi.io/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
8 tools
Deletes or cancels 3Claude Code: deny
tinyurl_change_destinationWRITE: point an existing short link at a new destination.No findings
Why it is in this group
- The description's first verb is "write": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: point an existing short link at a new destination. DESTRUCTIVE: everyone who opens the short link is sent to the new URL from now on and the old destination is overwritten. The new URL must be http(s). PATCH /change.
Annotations the server declares
- title: Change a short link's destination URL
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
tinyurl_set_link_archivedWRITE: archive an active short link (archived = true) or restore an archived one (archived = false).No findings
Why it is in this group
- The name "tinyurl_set_link_archived" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: archive an active short link (archived = true) or restore an archived one (archived = false). Archiving moves the link to the archived list; nothing is deleted and it can be restored. The API's archive endpoint is a toggle, so the link's current state is read first and nothing is changed when it already matches, and the state afterwards is checked. Do not run two archive calls for the same link at once. GET /alias/{domain}/{alias}, then PATCH /archive.
Annotations the server declares
- title: Archive or unarchive a short link
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
tinyurl_update_linkWRITE: change an existing short link's alias, tags, expiry, description or click-analytics switch.No findings
Why it is in this group
- The name "tinyurl_update_link" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it WRITE: change an existing short link's alias, tags, expiry, description or click-analytics switch. At least one new_* field is required. DESTRUCTIVE for what it replaces: new_tags REPLACES all existing tags, and renaming the alias (new_alias) makes the old short URL stop working. The destination URL is changed with tinyurl_change_destination. PATCH /update.
Annotations the server declares
- title: Update a short link's alias, tags or settings
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 1Claude Code: ask
tinyurl_create_linkWRITE: create ONE new short link for an http(s) destination URL.No findings
Why it is in this group
- The name "tinyurl_create_link" says "create": a word for a change.
Description, as the server wrote it WRITE: create ONE new short link for an http(s) destination URL. Optional custom alias (5-30 characters on tinyurl.com), domain (tinyurl.com or a branded domain), tags, expiry and description. Not idempotent: calling it again without an alias creates another link. Returns the new tiny_url. POST /create.
Annotations the server declares
- title: Create a short link
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 4Claude Code: allow
tinyurl_count_linksHow many short links the account has (active or archived), optionally within a creation date range or filtered by alias or tag.No findings
Why it is in this group
- The name "tinyurl_count_links" says "count": a word for reading.
Description, as the server wrote it How many short links the account has (active or archived), optionally within a creation date range or filtered by alias or tag. GET /urls/{type}/count.
Annotations the server declares
- title: Count short links
- readOnlyHint: true
tinyurl_get_analyticsAggregated click analytics for the account, or for one link (alias) or one tag, from a start date.No findings
Why it is in this group
- The name "tinyurl_get_analytics" says "get": a word for reading.
Description, as the server wrote it Aggregated click analytics for the account, or for one link (alias) or one tag, from a start date. report: timeline (clicks over time; interval minute/hour/day/week/month), general (browsers, operating systems, devices), weekday and hour (popularity), top_sources (referrers), top_languages, location (countries, or the regions of one country via region = ISO 3166 alpha-2 code). Which reports are available depends on the account's TinyURL plan. Visitor-level raw logs are not exposed. GET /analytics/*.
Annotations the server declares
- title: Get click analytics
- readOnlyHint: true
tinyurl_get_linkDetails of one short link: destination URL, tiny_url, tags, created/expires dates, archived/deleted flags, analytics settings, total hits and owner.No findings
Why it is in this group
- The name "tinyurl_get_link" says "get": a word for reading.
Description, as the server wrote it Details of one short link: destination URL, tiny_url, tags, created/expires dates, archived/deleted flags, analytics settings, total hits and owner. GET /alias/{domain}/{alias}.
Annotations the server declares
- title: Get a short link
- readOnlyHint: true
tinyurl_list_linksList the account's short links (type available = active, archived = archived), optionally created within a date range or filtered by alias or tag.No findings
Why it is in this group
- The name "tinyurl_list_links" says "list": a word for reading.
Description, as the server wrote it List the account's short links (type available = active, archived = archived), optionally created within a date range or filtered by alias or tag. The TinyURL API does not page this list: at most `limit` items (default 50, max 200) are returned together with the total, so narrow with from/to/search when truncated is true. GET /urls/{type}.
Annotations the server declares
- title: List short links
- readOnlyHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.3.3. Values in angle brackets are yours to fill in.
claude mcp add --transport http tinyurl https://tinyurl.usefulapi.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__tinyurl__tinyurl_get_link",
"mcp__tinyurl__tinyurl_list_links",
"mcp__tinyurl__tinyurl_count_links",
"mcp__tinyurl__tinyurl_get_analytics"
],
"ask": [
"mcp__tinyurl__tinyurl_create_link"
],
"deny": [
"mcp__tinyurl__tinyurl_update_link",
"mcp__tinyurl__tinyurl_change_destination",
"mcp__tinyurl__tinyurl_set_link_archived"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as tinyurl. Review it before you use it.