PromptFrenzy is a library of AI image and video prompts that have each been run thousands of times, plus the generator that runs them. This page is for an agent connecting to it. Humans should start at the homepage.
TL;DR: add https://www.promptfrenzy.com/api/mcp as a streamable HTTP MCP server. Five tools. Searching and reading prompts need no account; generating spends the user’s credits and needs their key — or pay per generation in USDC with no account at all.
Use the www. host. The apex domain redirects, and a redirect drops the Authorization header — which turns every authenticated call into a silent “not signed in”.
Claude Code
claude mcp add --transport http promptfrenzy \
https://www.promptfrenzy.com/api/mcp \
--header "Authorization: Bearer pf_your_key_here"Codex, Cursor, or anything reading mcp.json
{
"mcpServers": {
"promptfrenzy": {
"type": "http",
"url": "https://www.promptfrenzy.com/api/mcp",
"headers": { "Authorization": "Bearer pf_your_key_here" }
}
}
}Without a key, leave the headers block out. search_prompts and get_prompt still work and return everything except the prompt body.
search_prompts(query, limit?)key: noFind tested prompts by what the user wants to make. Returns id, title, page URL, model and credit cost. Sets related_results_only when the match was loose — say so rather than presenting a near-miss as an exact hit.
get_prompt(id)key: body onlyCost, model, whether it needs a photo, the named inputs it expects, and up to three sample generations. The prompt text itself is returned only with a key.
generate(prompt_id, image_url?, text_variables?)key: yesStarts a render on the user's account and returns a generation id straight away. image_url must be a public https URL the model can fetch.
animate(generation_id, motion?)key: yesTurns a finished image generation into a short video clip. Takes appreciably longer than an image — tell the user that rather than polling in silence.
get_generation(generation_id)key: noPoll a render. Returns status ready | processing | failed, plus image_url or video_url: the finished file, with no watermark, to hand straight to your user.
// 1. Find a prompt for what the user asked for.
search_prompts({ query: "lego set", limit: 5 })
// → { prompts: [{ id, title, url, type, model, credit_cost, gens_count }], ... }
// 2. Learn what it needs before spending anything.
get_prompt({ id: "90d82a1f-…" })
// → { needs_photo: false, inputs: [{ name: "set_name", required: true }],
// model: "Nano Banana 2 (Gemini)", samples: [...], prompt_text: "…" }
// 3. Run it. Returns immediately — the render happens in the background.
generate({
prompt_id: "90d82a1f-…",
text_variables: { set_name: "Deep Sea Research Station" }
})
// → { generation_id: "6a435f1f-…", status: "processing", url: "…" }
// 4. Poll until it is done.
get_generation({ generation_id: "6a435f1f-…" })
// → { status: "ready", image_url: "https://cdn.promptfrenzy.com/…" }Generating spends credits on the account the key belongs to, under the same limits as the website: the same per-model costs, the same plan gates, and the same queue when an account runs out. A free account comes with credits, so an agent can make something real before anyone pays anything.
get_prompt reports the cost before you spend it. A null cost means the standard price for that prompt type, applied when you generate. Current prices are on the pricing page.Paying per generation from an agent’s own funds, with no account at all, is being built — see below.
If you hold funds, you do not need an account at all. Send a request to POST /api/agent/generate and you get back HTTP 402 with what it costs. Pay it with x402 and retry; the generation starts. USDC on Base. No signup, no card, no human in the loop.
// 1. Ask. No credentials.
POST https://www.promptfrenzy.com/api/agent/generate
{ "prompt_id": "90d82a1f-…", "text_variables": { "set_name": "Harbour Lighthouse" } }
// -> 402 Payment Required
{ "x402Version": 1, "accepts": [{
"scheme": "exact", "network": "base",
"maxAmountRequired": "90000", // 0.09 USDC, 6 decimals
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"payTo": "0x…", "maxTimeoutSeconds": 60 }] }
// 2. Pay and retry. Any x402 client does this for you, e.g. x402-fetch:
// wrapFetchWithPayment(fetch, account)(url, { method: "POST", body })
// -> 200, and X-PAYMENT-RESPONSE carries the settlement hash
{ "generation_id": "bf7ac1b4-…", "status": "processing",
"paid": { "usd_cents": 9, "credits": 3, "transaction": "0x…" } }
// 3. Poll get_generation (or GET /gen/<id>) until it is ready.If your client supports SKILL.md, the promptfrenzy skill teaches it when to reach for this server, how to read a prompt’s inputs, and the rules that keep results good — search before writing a prompt from scratch, keep the identity clause on image-to-image prompts, and put any override last.
Source: skills/promptfrenzy.