[ Trusted by builders from ]NetflixServiceNowCiscoAdobePayPalAmazonDatadogJPMorgan ChaseDell
[ Trusted by builders from ]NetflixServiceNowCiscoAdobePayPalAmazonDatadogJPMorgan ChaseDell
Prior.Runprior.run

FIG · MCP— model context protocol integration, v1

Your agent
runs the simulation.

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.

claude code · prior-run MCP↳ 17 tools connected
you

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.


tool callcreate_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 ·····


result

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


01 · one-liner↳ fetches + runs on demand via uv
01uvx priorrun-mcp
02
03# no clone, no pip install. requires python 3.11+ and uv.
04# install uv: curl -LsSf https://astral.sh/uv/install.sh | sh

Claude Desktop↳ ~/Library/Application Support/Claude/claude_desktop_config.json
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}
Claude Code↳ ~/.claude/mcp.json — or .mcp.json in a project root
01{
02 "mcpServers": {
03 "prior-run": {
04 "command": "uvx",
05 "args": ["priorrun-mcp"],
06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }
07 }
08 }
09}
Codex (OpenAI)↳ ~/.codex/config.toml — TOML, not JSON
01[mcp_servers.prior-run]
02command = "uvx"
03args = ["priorrun-mcp"]
04
05[mcp_servers.prior-run.env]
06PRIORRUN_API_KEY = "pr_live_..."
Gemini CLI↳ ~/.gemini/settings.json
01{
02 "mcpServers": {
03 "prior-run": {
04 "command": "uvx",
05 "args": ["priorrun-mcp"],
06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }
07 }
08 }
09}
Cursor↳ ~/.cursor/mcp.json (global) or .cursor/mcp.json (project)
01{
02 "mcpServers": {
03 "prior-run": {
04 "command": "uvx",
05 "args": ["priorrun-mcp"],
06 "env": { "PRIORRUN_API_KEY": "pr_live_..." }
07 }
08 }
09}
Windsurf / Cline / Zed↳ same JSON shape as above — check the host's docs for the config path
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.

I · Design memos№ 01–02
01create_design_reviewsingle variant
02create_design_comparetwo variants
II · Ads memos№ 03–08
03create_ads_singleone creative
04create_ads_comparetwo head-to-head
05create_ads_multi3–5 creatives
06ads_inspiration_applygenerate paired draft (3 refined + 3 bold) from recs
07ads_inspiration_getfetch latest paired draft (refined[] + bold[])
08create_creative_from_fieldnotes3 ad variants from a focus-group's field notes
III · Live URL audits№ 07–08
07create_url_auditwalk one live URL
08create_url_comparetwo URLs head-to-head
IV · Mood of the Internet№ 09–15
09create_moodkick off Mood pipeline
10get_mood_jobpoll a pipeline job
11list_mood_reportslist caller's Mood reports
12get_moodfull corpus JSON
13list_mood_cohortscohort_ids for spawn
14regenerate_moodre-run same URL
15spawn_mood_audiencespanel → synthetic audiences
V · Persona interview№ 16–20
16persona_interviewask one persona a follow-up
17persona_interview_historytranscript + budget
18persona_audience_panelopen focus-group room
19persona_audience_askask the whole room
20persona_audience_synthesistranscript → themes
VI · Retrieval & audiences№ 21–26
21list_audience_templatesbuilt-in templates
22list_custom_audiencessaved custom audiences (id + name)
23rename_custom_audiencerename a saved audience
24delete_custom_audiencedelete a saved audience
25get_memofetch status + JSON
26wait_for_memoblock until complete

Image arguments accept local paths, https URLs, or base64. Create tools default to wait=True — the agent gets the completed memo in one tool call.


Session transcript↳ abridged
you

Test these two landing pages — landing-a.png and landing-b.png — against Gen Z shoppers. Hypothesis: the warmer palette will lift click-through.

agent → tool

create_design_compare( audience_template="gen_z", hypothesis="warmer palette…" )

tool

waiting · 90s ·

agent

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”.


rule i

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).

rule ii

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.

rule iii

Waiting


create_* tools default to wait=true and block until status=complete. For Mood, poll get_mood_job — it's a long async pipeline.

rule iv

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? ]

Simulate before
you ship.