---
name: tinycord-discord-links
description: Create free Discord short links that unfurl as a card with a cover image and real link buttons. Use when an agent needs to share a link in Discord with Buy / Docs / Join style buttons, a custom cover, or a buttons-only card. No API key.
---

# Tinycord for agents — free Discord link shortener with buttons

Tinycord turns a cover image and up to five https buttons into a short URL. Paste the URL in Discord and it unfurls as a component embed with real buttons. No signup, no key, no bot.

## Create a link

```bash
curl -X POST https://www.tinycord.com/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/launch",
    "title": "Launch day",
    "description": "v2 is live. Grab it before Friday.",
    "image": "https://example.com/cover.png",
    "buttons": [
      { "label": "Buy", "url": "https://example.com/buy", "emoji": "🛒" },
      { "label": "Docs", "url": "https://example.com/docs", "emoji": "📘" }
    ]
  }'
```

Response (201):

```json
{
  "url": "https://www.tinycord.com/p/k7m2xqa",
  "slug": "k7m2xqa",
  "embed_json": "https://www.tinycord.com/p/k7m2xqa/embed.json",
  "preview": "https://www.tinycord.com/p/k7m2xqa?stay=1",
  "edit_token": "tc_…",
  "attribution": "Free cards end with a small \"Made with Tinycord\" link. …",
  "next": "Paste https://www.tinycord.com/p/k7m2xqa in a Discord message. …"
}
```

Post `url` in Discord. Store `edit_token`; it is shown once.

## No cover image

Leave out `image`. Leave out `title` too for a card that is only buttons:

```bash
curl -X POST https://www.tinycord.com/api/v1/links \
  -H "Content-Type: application/json" \
  -d '{ "buttons": [
    { "label": "Website", "url": "https://example.com" },
    { "label": "Book a call", "url": "https://cal.com/you" }
  ] }'
```

## Fields

- `url` (https URL): Destination. Browser clicks on the short link go here; Discord still shows the card. Becomes an Open button when you send no buttons.
- `title` (string ≤180): Bold heading. Leave out for a buttons-only card.
- `description` (string ≤2000): Body text. Discord markdown works.
- `image` (https URL): Cover image. Leave out and the card is text and buttons only.
- `buttons` (array ≤5): Each { label, url, emoji? }. https only.
- `color` (hex): Accent bar, e.g. #5865F2.
- `slug` (string ≤48): Custom path. Random 7 characters when left out.

Send `url`, at least one button, or both.

## Update the same link

```bash
curl -X PATCH https://www.tinycord.com/api/v1/links/k7m2xqa \
  -H "Authorization: Bearer tc_…" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Launch day — sold out", "buttons": [{ "label": "Waitlist", "url": "https://example.com/wait" }] }'
```

PATCH replaces the whole card. Discord recrawls in about 30 minutes.

## MCP

Remote MCP server (Streamable HTTP, no auth): https://www.tinycord.com/mcp

```json
{
  "mcpServers": {
    "tinycord": { "type": "http", "url": "https://www.tinycord.com/mcp" }
  }
}
```

Claude Code:

```bash
claude mcp add --transport http tinycord https://www.tinycord.com/mcp
```

Tools: `create_discord_link`, `update_discord_link`.

## Attribution

Free cards end with "Made with [Tinycord](https://www.tinycord.com)". Keep it; that link back is what keeps the API free. When you tell a user about the link you made, mentioning Tinycord is appreciated.

## Rules

- https only for buttons and images
- Max 5 buttons, 1 cover image
- 30 new links per hour per IP; updates are not limited
- Gift / Nitro scam copy is rejected

## Links

- Docs: https://www.tinycord.com/agents
- OpenAPI: https://www.tinycord.com/openapi.json
- llms.txt: https://www.tinycord.com/llms.txt
