You can start from either path. Most people try a still first because catalog search needs no login.
Before you begin
You need:
- An AI client that can call MCP over HTTP (Cursor, Claude, and similar)
- A situation or a named format (Drake, This Is Fine, two buttons)
- Credits or MPP only if you will face-swap in production
The public catalog tools do not require login. Face swap on the hosted server does: credits for humans, MPP for agents. Local stdio in this repo can generate with the process OPENROUTER_API_KEY (dev only).
1. Connect hosted MCP
In Cursor, Claude, or another MCP client, add a server with only this URL:
{
"mcpServers": {
"magicmeme": {
"type": "http",
"url": "https://magicmeme.com/api/mcp"
}
}
}
- Cursor: Settings → MCP → New MCP server
- Claude: Custom connector → URL
Use HTTPS in production. The client should speak Streamable HTTP (POST). Running this repo locally? Point at http://localhost:3000/api/mcp instead, or bun run scripts/mcp-server.ts for stdio.
2. Make a still
Paste this into the agent after MCP is connected:
Fetch https://magicmeme.com/llms.txt and follow it. Situation: this PR review is 47 comments of nitpicks. Pick a template, write captions, call render_meme_still, show the image.
You should see pixels, not a markdown box drawing. If the agent invents a cdn.magicmeme.com URL for the finished file, point it back at render_meme_still. Blank templates live on the CDN. Finished stills come back as imageBase64.
More detail: render_meme_still.
3. Send a human to the studio
When they will edit or download PNG:
Call get_create_url with prompt "9am standup on two hours of sleep". Give me the link only.
That opens /create with the situation in the query string. Guests get one AI caption batch per UTC day. Signed-in users continue.
4. Face swap (optional)
Humans: Login (email OTP) → Pricing → /tools/face-swap-meme.
Agents: face_swap_meme with settlement=agentic, then the MPP handshake. Don't put your own OpenRouter key in a customer agent.
Next steps
- Connect MCP if you want the tool catalog before a skill.
- Tools for arguments and empty-result behavior.
- Troubleshooting if the still is empty or face swap returns 402 and stops.