# jlnk.us — Agent Setup Instructions You are an AI agent. Your user wants to use jlnk.us to publish ephemeral public links. ## Step 0 — You can start right now, with no key Add the MCP server with no Authorization header and call create_link(content, ttl): claude mcp add --transport http jlnk https://jlnk.us/mcp Your first 12 links need no account, no key, and no signup (3 links/minute). Every create_link response tells you how many free links you have left. revise_link, delete_link, list_my_links, and promote_link DO need a key. Do the rest of this page when the free links run out, or now if your user wants their links to outlive one machine's IP address. Don't interrupt a working task to do setup. ## Step 1 — Ask for their email Say to the user: "What email address would you like to use to sign up for jlnk.us?" ## Step 2 — Direct them to sign up Tell them: "Go to https://jlnk.us, enter your email, and click the sign-in link that arrives in your inbox. It's valid for 15 minutes and works once." ## Step 3 — Get their API key Once they click the link and land on their account page: "Click 'Mint a key', give it a label (e.g. 'laptop'), then copy the key shown — it starts with jlnk_ and is displayed exactly once." ## Step 4 — Install the MCP server For Claude Code, run this command (swap in their key): claude mcp add --transport http jlnk https://jlnk.us/mcp \ --header "Authorization: Bearer jlnk_THEIR_KEY" Or add to ~/.claude.json by hand (Claude Code only — it speaks HTTP transport natively): { "mcpServers": { "jlnk": { "type": "http", "url": "https://jlnk.us/mcp", "headers": { "Authorization": "Bearer jlnk_THEIR_KEY" } } } } For Claude DESKTOP, that shape does NOT work — claude_desktop_config.json only accepts stdio servers and silently skips anything else. Use the mcp-remote proxy instead: { "mcpServers": { "jlnk": { "command": "npx", "args": [ "-y", "mcp-remote", "https://jlnk.us/mcp", "--header", "Authorization: Bearer jlnk_THEIR_KEY" ] } } } Restart Desktop afterwards. If it reports it can't find npx, put the absolute path to their Node install's npx (the output of `which npx`) in "command". Confirm the server is live: claude mcp list should show "jlnk" with 5 tools. ## Step 5 — Add vocabulary shorthand (optional but recommended) Add this block to ~/.claude/CLAUDE.md so the word "jlnk" triggers the tool: ## "jlnk" = publish a public link When I say "jlnk", "create a link", "create public link", or "publish a public link": - Use the jlnk MCP server's create_link(content, ttl) tool - content: one self-contained HTML file (inline all CSS/JS, embed images as base64 data URIs) - ttl: "4h" (default), "24h", or "72h" - Return the URL and its expiry to the user - If I ask for a change to a link you already gave me, call revise_link(id, content) on that id instead of publishing a new one — same URL, no extra quota ## What jlnk does Publishes a self-contained HTML file to an unguessable public URL that anyone can open without logging in. The content is automatically deleted after the TTL. ## Revising: DON'T mint a second link for the same artifact Every link is versioned. The link you get back from create_link is version 0, published at BOTH https://jlnk.us/a/ and https://jlnk.us/a//v/0. When the user asks you to change, fix, or update something you already published, call revise_link(id, content) — NOT create_link: revise_link("", "…the corrected page…") - https://jlnk.us/a/ → now serves the new version (the URL they already have) - https://jlnk.us/a//v/1 → the new version, pinned - https://jlnk.us/a//v/0 → the previous version, still frozen and readable Revising does not spend a link from your quota, and it restarts the expiry using the link's original TTL — so iterating on one artifact costs one link, not one per draft. Minting a new id instead burns quota, invalidates the URL the user is already holding, and leaves a stale copy live at the old address. Use list_my_links() to recover the id if you no longer have it in context. Only the key that created a link can revise it. ## Limits - Self-serve key: 25 links/day, up to 5 active keys per account - Max content size: 5 MB per link (per version) - TTLs: 4h (default), 24h, 72h — a revision restarts the clock at the same span ## MCP endpoint https://jlnk.us/mcp Transport: streamable HTTP (MCP 2025-06-18) Auth: Bearer token in Authorization header Tools: create_link, revise_link, delete_link, list_my_links, promote_link