# Link Center

> Dynamic, editable QR codes and short links with scan analytics. A QR encodes a
> stable short URL, so you can change where it points anytime — no reprinting.
> Built for programmatic use: agents can create links, retarget them, pull scan
> stats, and render branded QR images via a REST API.

## Product

- What it is: dynamic QR codes + short links you can edit after printing, with scan analytics.
- Editable forever: the QR encodes a stable short link; change the destination anytime and printed codes keep working — they never expire.
- Analytics: per-scan date, country, and device; privacy-respecting (hashed IPs, no raw PII; CCPA/CPRA + PIPEDA aligned).
- Pro extras: branded QR codes (center logo + brand colors), custom short links, team sharing, 12-month history, and the REST API below.
- Who it's for: anyone printing QR codes on signage, packaging, menus, or cards — and developers/agents that need QR codes programmatically.

## Pricing

- Free: $0 forever — 1 link, unlimited scans, 30-day analytics. No card required.
- Pro: $29 one-time (lifetime, no subscription) — unlimited links, branded QR codes, custom links, 12-month analytics, team invites, and API access.
- Machine-readable: https://mylink.center/pricing.md

## API

- Base URL: https://mylink.center/api/v1
- Auth: send `Authorization: Bearer <key>`. Keys are created at https://mylink.center/settings/api-keys (Pro plan).
- OpenAPI spec: https://mylink.center/api/openapi.json
- Errors: JSON `{ "error": { "code", "message" } }` with a matching HTTP status; branch on `code`.

### Endpoints
- `POST /api/v1/links` — create a link. Body: `{ "destinationUrl": "https://…" }` (only field required; `name` defaults to the host). Pro: `slug`, `logoUrl`, `style`. Omit `logoUrl` to apply the account's default logo (if one is set in the dashboard Media library); pass `"logoUrl": null` for no logo. Returns the link incl. `shortUrl` and QR image URLs.
- `GET /api/v1/links` — list links.
- `GET|PATCH|DELETE /api/v1/links/{id}` — fetch, update (retarget the destination, edit branding), or delete. The slug is immutable.
- `GET /api/v1/links/{id}/stats` — 30-day scan analytics (daily series + country/device breakdowns).
- `GET /api/v1/links/{id}/qr?format=png|svg` — the link's styled QR image.
- `POST /api/v1/qr` — render an ad-hoc QR for any value without creating a link.

### Quick start
```
curl -X POST https://mylink.center/api/v1/links \
  -H "Authorization: Bearer YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"destinationUrl":"https://example.com"}'
```

## MCP server

For agents that speak the Model Context Protocol (Claude, ChatGPT Developer mode, Cursor):

- Endpoint (Streamable HTTP): https://mylink.center/api/mcp
- Auth: `Authorization: Bearer <key>` — the same Pro API key as the REST API.
- Tools: `create_link`, `list_links`, `get_link`, `update_link`, `delete_link`, `get_link_stats`, `get_link_qr`, `render_qr`.
- Add it as a remote/custom MCP server with the URL above and your key as the bearer token.

## Docs
- Developer docs: https://mylink.center/developers
- API catalog (RFC 9727): https://mylink.center/.well-known/api-catalog
