One config block plugs Prior.Run into Claude Desktop, Claude Code, Codex, Gemini CLI, Cursor, Windsurf, Cline, Zed — any MCP-compatible host. The agent calls tools, waits for synthesis, hands you back a verdict.
Run a Prior.Run ads compare on ~/desk/hero-a.png vs ~/desk/hero-b.png for a Gen Z skincare awareness campaign on TikTok.
create_ads_compare{
image_a: "~/desk/hero-a.png",
image_b: "~/desk/hero-b.png",
campaign_context: "Gen Z skincare, TikTok awareness.",
run_platform: "tiktok",
custom_audience_id: "aud_…" // optional · saved audience
}↳ running — synthesis phase ·····
Variant A wins. Scroll-stop is stronger — the reviewer audience flags B's headline as generic. Full memo at prior.run/ads/memo/comp_b81b0b93▍
01uvx priorrun-mcp0203# no clone, no pip install. requires python 3.11+ and uv.04# install uv: curl -LsSf https://astral.sh/uv/install.sh | sh
01{02 "mcpServers": {03 "prior-run": {04 "command": "uvx",05 "args": ["priorrun-mcp"],06 "env": {07 "PRIORRUN_API_KEY": "pr_live_xxxxxxxxxxxxxxxxxxxx"08 }09 }10 }11}
01{02 "mcpServers": {03 "prior-run": {04 "command": "uvx",05 "args": ["priorrun-mcp"],06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }07 }08 }09}
01[mcp_servers.prior-run]02command = "uvx"03args = ["priorrun-mcp"]0405[mcp_servers.prior-run.env]06PRIORRUN_API_KEY = "pr_live_..."
01{02 "mcpServers": {03 "prior-run": {04 "command": "uvx",05 "args": ["priorrun-mcp"],06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }07 }08 }09}
01{02 "mcpServers": {03 "prior-run": {04 "command": "uvx",05 "args": ["priorrun-mcp"],06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }07 }08 }09}
01# all modern MCP hosts share the "mcpServers" shape used by Claude Code.02# drop the same block into the host's MCP config file and you're set.
create_design_review↳ single variantcreate_design_compare↳ two variantscreate_ads_single↳ one creativecreate_ads_compare↳ two head-to-headcreate_ads_multi↳ 3–5 creativesads_inspiration_apply↳ generate paired draft (3 refined + 3 bold) from recsads_inspiration_get↳ fetch latest paired draft (refined[] + bold[])create_creative_from_fieldnotes↳ 3 ad variants from a focus-group's field notescreate_url_audit↳ walk one live URLcreate_url_compare↳ two URLs head-to-headcreate_mood↳ kick off Mood pipelineget_mood_job↳ poll a pipeline joblist_mood_reports↳ list caller's Mood reportsget_mood↳ full corpus JSONlist_mood_cohorts↳ cohort_ids for spawnregenerate_mood↳ re-run same URLspawn_mood_audiences↳ panel → synthetic audiencespersona_interview↳ ask one persona a follow-uppersona_interview_history↳ transcript + budgetpersona_audience_panel↳ open focus-group roompersona_audience_ask↳ ask the whole roompersona_audience_synthesis↳ transcript → themeslist_audience_templates↳ built-in templateslist_custom_audiences↳ saved custom audiences (id + name)rename_custom_audience↳ rename a saved audiencedelete_custom_audience↳ delete a saved audienceget_memo↳ fetch status + JSONwait_for_memo↳ block until completeImage arguments accept local paths, https URLs, or base64. Create tools default to wait=True — the agent gets the completed memo in one tool call.
Test these two landing pages — landing-a.png and landing-b.png — against Gen Z shoppers. Hypothesis: the warmer palette will lift click-through.
create_design_compare( audience_template="gen_z", hypothesis="warmer palette…" )
waiting · 90s ·
We prefer Design A · Moderate confidence. Warmer palette lands — “feels less corporate” came up across the panel. But the CTA language on B scored higher for clarity. Full memo ↗
The agent picks the right tool from your wording: "landing page" / "design compare" / "variant" → design tools. "ad creative" / "campaign context" / a platform name (Meta, TikTok, Google) → ads tools. If it guesses wrong, say so explicitly: “use create_ads_compare”.
Tool errors
The tool surfaces a clear message: 401 invalid key · 403 quota · 413 image too large · 429 slow down · 504 synthesis timeout (just re-call get_memo).
Rate limits
Per-key request rate and concurrent-job caps. The agent will see 429 with a retry hint — let it back off, don't loop manually.
Waiting
create_* tools default to wait=true and block until status=complete. For Mood, poll get_mood_job — it's a long async pipeline.
Keys
Same key as the REST API. Generate, rotate, revoke at /settings. Plaintext shown once. Old keys 401 instantly across both surfaces.
[ ready to plug in? ]