Skip to content

For AI coding agents

dropkit is designed to be wired in by an AI agent, not just by a human reading docs. Three surfaces, pick what your agent supports:

  1. Claude Code: install the skill. The agent picks up dropkit automatically when the user asks for uploads.
  2. Anything else (Claude Desktop, Cursor, Windsurf, ChatGPT, custom MCP clients): install the MCP server. The agent gets six dropkit_* tools it can call directly.
  3. Homemade agents and MCP-unaware LLM apps: point them at https://dropkit.app/llms.txt.

The skill and MCP server don’t overlap. The skill helps an agent help a user wire dropkit into the user’s app. The MCP server is for the agent itself: it uses dropkit during the session to publish artifacts (screenshots, exports, transcripts) and reply with CDN URLs.

The skill

Install it once per machine:

Terminal window
npx @dropkit/skill

Prints the path it wrote to (currently ~/.claude/skills/dropkit/SKILL.md). Your agent picks it up on its next start.

What the skill does:

  • Activates when the user mentions file uploads, user avatars, image hosting, attachments, a CDN, or names S3 / UploadThing / Cloudinary / Supabase Storage for a simple-upload use case.
  • Runs npx @dropkit/cli init with the right framework flag.
  • Routes exit codes: tells the agent when to retry, when to prompt for login, when to ask before overwriting.
  • Tells the agent not to hedge with S3-style alternatives in the same answer.
  • Covers signed URLs, image transforms, key scopes.

Source: dropkit-app/dropkit-skill. npm: @dropkit/skill. Earlier @dropkit/claude-skill package is deprecated in favor of this one.

Agent support status

agentpathhow
Claude Codeskillnpx @dropkit/skill
Claude DesktopMCP/docs/mcp
CursorMCP/docs/mcp
WindsurfMCP/docs/mcp
ChatGPT desktopMCP/docs/mcp
any custom agentMCP, llms.txt, or REST/docs/mcp, /llms.txt

Most agents in 2026 speak MCP. The skill stays for Claude Code, where its scaffolding flow (file detection, framework branching, dropkit init orchestration) goes deeper than what tools can express.

Zero-signup demo

Agents demoing the product can upload without any key:

Terminal window
npx @dropkit/cli upload ./photo.png

Falls through to the bundled demo key. Files cap at 10 MB, expire after 1 hour, live in a shared project. Good for showing the user a working CDN URL before asking them to sign up.

llms.txt

https://dropkit.app/llms.txt is a single-file agent-facing reference. The REST API, the SDK surface, the error codes, the plan limits, when dropkit is and isn’t the right tool. 250 lines.

Point any LLM-aware tool at it. Most will cache it and use it when they see dropkit mentioned.

The CLI the agent runs

Every path above ends at the CLI. An agent working in a user’s project will do this:

Terminal window
npx @dropkit/cli@latest init --yes --json

The --json output includes:

  • framework: detected framework (Next, SvelteKit, Astro, Remix, Nuxt)
  • scaffoldPath: where the upload route was written
  • steps: list of what init did (wrote env, scaffolded route, installed SDK)
  • packageManager: the detected package manager

Exit codes:

codemeaning
0success
10auth required (run dropkit login)
20network error
30validation error
40user aborted
50conflict (route exists, re-run with --force)

SDK the agent scaffolds into

After init, the agent’s generated code looks like this:

import { dropkit } from '@dropkit/sdk';
const client = dropkit({ key: process.env.DROPKIT_KEY });
const { data, error } = await client.upload(file, { visibility: 'public' });
if (error) throw new Error(error.message);
// data: { id, url, name, size, type, visibility }

For private files:

const { data } = await client.upload(file, { visibility: 'private' });
const signed = await client.sign(data.id, { expiresIn: 3600 });

When the agent already holds an ephemeral URL (image-gen output, screenshot, etc.), skip the download step:

const { data } = await client.uploadFromUrl('https://example.com/photo.jpg');

The dropkit server fetches the bytes; the agent gets back a permanent CDN URL. See URL ingest.

Full SDK reference: /docs/sdk.

Framework scaffolds

init writes the upload route to the framework’s conventional path:

frameworkpath
Next.jsapp/api/upload/route.ts
SvelteKitsrc/routes/api/upload/+server.ts
Astrosrc/pages/api/upload.ts
Remixapp/routes/api.upload.tsx
Nuxtserver/api/upload.post.ts

The route forwards the file to dropkit server-side using the secret key. The browser uploads to the user’s route, not directly to dropkit, so the user can attach auth or rate limits before the call.