# clip > Ephemeral URL service. Upload content, get a short-lived link. > Designed for both humans (web UI) and AI agents (RFC 8628 device > flow + Bearer-token API). Hosted at https://clip.rac.so. ## Documentation - [API & Agent Reference](https://clip.rac.so/api): Single source of truth — authentication, endpoints, tiers, examples. Same content available at https://clip.rac.so/AGENTS.md. ## For agents - [Device flow](https://clip.rac.so/api#device-flow): RFC 8628 OAuth Device Authorization Grant. How an unattended agent provisions itself an API key on the operator's behalf, no human credentials passing through. - [MCP server](https://clip.rac.so/api#mcp-server-claude-desktop--cursor--zed--): Native tools for Claude Desktop / Cursor / Zed via the `@rac.so/clip-mcp` npm package. - [Upload](https://clip.rac.so/api#upload): POST raw body to `/api/`, get back a short URL with optional TTL. Bearer auth. Extension-first: a type is mandatory — send `X-Extension` (or `?ext=`) e.g. `md`/`json`/`png`, `bin`/`dat`/`raw` for binary, or `X-Content-Type` for an unmapped MIME. The ambient `Content-Type` header is ignored. - [Retrieve](https://clip.rac.so/api#retrieve): Public — no auth. `GET /view/` renders diff/markdown/JSON as HTML, otherwise serves raw. `GET /raw/` always returns raw bytes with the stored content-type (use this for parseable bytes). `GET /c/` is a legacy alias for `/raw/`. - [Errors and rate limits](https://clip.rac.so/api#errors): JSON shape, HTTP statuses, backoff guidance. ## For humans - [Web UI](https://clip.rac.so/): paste/upload via the dashboard. - [OAuth login](https://clip.rac.so/api#oauth-login-humans): `GET /auth/github` or `GET /auth/google`. Email-anchored — same email at either provider lands in the same account.