رفتن به محتوا
cutty.dev
For developers

API and MCP server

Create and manage short links from your own code — over the REST API or through an MCP server in your AI assistant.

cutty has a public REST API and an MCP server. The first lets you create and manage links from your own code; the second does it straight from an AI assistant that speaks MCP. Both use the same API key.

API key

Authenticate every call with a header:

Authorization: Bearer ck_your_key

Where to get a key: sign in, open the dashboardAPI keysCreate key. The full key (it starts with ck_) is shown only once, at creation — copy it somewhere safe right away. The limit is 120 requests per minute per key.

Base URL

All REST endpoints live under https://cutty.dev/api/v1. Requests and responses are JSON.

Create a link

POST /api/v1/links — the JSON body needs at least url. The rest is optional:

  • url — the destination address (required)
  • slug — a custom slug, 3–40 chars; omit it for a random one
  • expiresAt — expiry date in ISO 8601
  • maxHits — click limit (1–1,000,000)
  • password — a password that protects the link
  • utmSource, utmMedium, utmCampaign — UTM params appended on redirect

You get back slug, shortUrl and target.

curl -X POST https://cutty.dev/api/v1/links \
  -H "Authorization: Bearer ck_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com/some/very/long/path","slug":"sale"}'

List and read

GET /api/v1/links returns all your links. GET /api/v1/links/{slug} returns one.

curl https://cutty.dev/api/v1/links/sale \
  -H "Authorization: Bearer ck_your_key"

Update and delete

PATCH /api/v1/links/{slug} updates selected fields (e.g. targetUrl, expiresAt, maxHits, status, password). DELETE /api/v1/links/{slug} removes the link.

curl -X PATCH https://cutty.dev/api/v1/links/sale \
  -H "Authorization: Bearer ck_your_key" \
  -H "Content-Type: application/json" \
  -d '{"maxHits":500}'

MCP server

If you work with an AI assistant, you can wire cutty in over MCP (Model Context Protocol) and have it shorten and tidy links right inside the conversation. The server runs at https://mcp.cutty.dev/mcp over Streamable HTTP, and you authenticate with the same API key — the Authorization: Bearer ck_... header.

Available tools: create_link, list_links, get_link, update_link, delete_link and qr_link (a QR code for a link).

A sample entry for an MCP client config:

{
  "mcpServers": {
    "cutty": {
      "url": "https://mcp.cutty.dev/mcp",
      "headers": {
        "Authorization": "Bearer ck_your_key"
      }
    }
  }
}

Something not working?

Email [email protected] — I reply the same day.