"Great idea — here's the roadmap."
The model cheers, outlines a sprint plan, names a tech stack. No user quote required. No competitor named. Six months of work for an idea that fell apart on the first customer call.
MarketPrior generates competitive landscape reports, distribution channel maps, and advertising opportunity briefs from a proprietary corpus — SEC EDGAR + Crunchbase open data + verified press feeds. The intelligence CB Insights charges $60K for, built for founders at founder prices. Every claim cites a corpus row; Pro re-verifies each source.
> scale4.start({ pitch: "AI-native contract review for mid-market legal teams" }) // 200 OK · session opened · signed { session: "srv1.eyJ2IjoiMSIsInNpZ...", protocol: "7-axis@2026.06", axes: 7, next: "collect signals — submit_signal per axis. score gated until all minimum signals in." } scale4.submit_signal({ axis: "problem", kind: "user_quote", value: { verbatim: "We spend 40h/week on first-pass contract review..." }, citation: "https://news.ycombinator.com/..." }) // Accepted: problem.user_quote. 2/3 required.✓ signal validated · token refreshed
The structural failure
Nothing in the default agent loop forces it to find a real user quote, name a real competitor, or explain why the incumbents haven't already done this. It can simulate validation as easily as it can do validation.
The model cheers, outlines a sprint plan, names a tech stack. No user quote required. No competitor named. Six months of work for an idea that fell apart on the first customer call.
Four-paragraph regurgitation of every business-school template the model has ever seen. Reads sophisticated. Nothing in it is falsifiable. You've learned nothing you didn't already know.
Confident lists of named companies, half of which are miscategorised or fabricated. The agent simulates market research as convincingly as it does market research, and you can't tell the difference.
MarketPrior fixes this with a state machine that refuses to return a score until evidence has been collected — verbatim quotes, cited URLs, named competitors, one counterfactual for every axis. The protocol is the locked door the agent can't walk around.
The 7-axis protocol
Each axis declares its minimum signal set. The agent collects those signals using its own tools — web search, the user's clarifying answers, pasted links — and submits them back. The server checks shape and citations; the agent does the semantic work.
Confirm the pain is real and held by specific people.
Required signals
user_quote ×3 (verbatim, URL, date, speaker role) · counterfactual_quote ×1 (someone for whom the pain is NOT acute, with explanation)
Identify the smallest market you can win completely.
Required signals
icp_definition ×1 (named segment) · named_prospect ×3 (org + URL) · acv_estimate ×1 (with comparable-pricing citation)
Map the competitive landscape with real pricing and real dissatisfaction.
Required signals
named_competitor ×5 (URL required) · dissatisfaction_quote ×3 (per-competitor) · pricing_row ×3 (comparable pricing table)
Define the single entry vector that incumbents cannot quickly copy.
Required signals
wedge_statement ×1 (3-sentence max) · anti_wedge ×1 (why incumbents haven't done this — specific reason required) · replication_estimate ×1 (time-to-copy estimate)
Name one channel and prove the unit economics of acquiring through it.
Required signals
channel_choice ×1 (specific, not "content marketing") · cac_benchmark ×1 (comparable cost data, cited) · founder_channel_fit ×1 (why this founder in this channel)
Confirm the business has a path to positive margin before the runway ends.
Required signals
cac ×1 (with sourcing) · ltv ×1 (with churn assumption) · gross_margin ×1 · breakeven_customers ×1
Confirm the founder has earned the right to win this specific market.
Required signals
domain_years ×1 (specifics, not "I've always been interested in X") · unfair_advantage ×1 (structural, not motivational) · shipped_artifact ×1 (public link to prior work)
Scoring
Maximum 70 points. Verdict flows from the math.
Every axis scores 0–10. The total determines the verdict; kill thresholds fire on individual axis weakness before the total even matters. A single axis at 3 or below triggers kill-or-pivot regardless of how well the rest scored.
The protocol flow
The server enforces ordering on tool calls and refuses to advance until evidence is in. That's the structural difference between asking an LLM nicely and wiring a locked door.
The pitch text opens a session. The server returns the 7-axis protocol spec and a signed session token. No storage — the token travels with the agent.
Each submit_signal call requires a citation URL. The server HEAD-checks it. Placeholder text and generic quotes are blocked by regex validators. Evidence is non-negotiable.
The server refuses to score until every axis has its minimum signal count. Returns a 70-point scorecard, per-axis scores, and a verdict computed from the thresholds.
generate_roadmap turns the scored axes into risk-weighted milestones. A BUILD verdict hands off directly to Stackforge's compose_stack. KILL emits the evidence ledger.
Scoring rubric — problem axis
The disconfirming signal is required by design.
Every axis carries at least one signal that requires evidence against the idea. You cannot score problem hypothesis without a counterfactual quote. You cannot score solutions without naming five competitors. The rubric makes cherry-picking structurally impossible — the score drops to 3 if you skip it.
{
"id": "problem",
"version": "2026.06.01",
"required_signals": [
{
"kind": "user_quote",
"min_count": 3,
"schema": {
"verbatim": "string, min 60 chars",
"source_url": "url, HEAD-checked",
"source_date": "iso8601",
"speaker_role": "string, min 6 chars"
}
},
{
"kind": "counterfactual_quote",
"min_count": 1,
"schema": {
"verbatim": "string, min 40 chars",
"source_url": "url, HEAD-checked",
"explanation": "string, min 100 chars"
}
}
],
"scoring": {
"rubric": [
{ "if": "quotes>=5 && counter>=1", "pts": 8 },
{ "if": "quotes>=3 && counter>=1", "pts": 6 },
{ "if": "quotes>=3 && counter==0", "pts": 3 },
{ "if": "quotes<3", "pts": 0 }
]
},
"signature": { "algo": "ed25519", ... }
}The five verdicts
MarketPrior does not have opinions. It has thresholds. The verdict is computed from the scores; the scores are computed from the evidence submitted. The tool can't be friendlier than the evidence allows.
All axes ≥ 7 AND total ≥ 56
Every axis has strong evidence. The idea is validated across problem, market, solutions, wedge, distribution, economics, and founder fit. Ready to hand off to Stackforge for stack composition.
Total 42–55, no axis ≤ 4
Strong foundation, but two or three axes need more evidence. The core insight is valid — collect the missing signals, re-score. Do not build yet.
Three or more axes score ≤ 5
The founder is trying to do too much. Pick the single strongest dimension and make it the entire company for the next 12 months. The rest of the axes are speculative.
Any single axis ≤ 3
One dimension is so weak that fixing it would require redefining the company. The work is not to iterate — it's to go talk to 20 people and find the real pain.
Pivot verdict + problem or founder ≤ 3
The foundational signal is missing — either the problem isn't real or the founder has no right to win it. The evidence ledger says stop. Six months saved.
Exact threshold logic — from the protocol spec
computeVerdict(axes, total): if (total >= 56 && no axis score below 6) → "build" if (any single axis score <= 3) → "pivot" if (count(axes where score <= 5) >= 3) → "scope_cut" if (total >= 42 && total <= 55) → "iterate" default → "iterate" // "kill" is a pivot verdict where problem OR founder scores <= 3 // The roadmap generator uses the verdict to choose milestone templates
Install in 30 seconds
MarketPrior is published as scale4-mcp-server on npm. Free-tier assessments need no API key — the env block is only required for Pro features.
.cursor/mcp.json{
"mcpServers": {
"scale4": {
"command": "npx",
"args": ["-y", "scale4-mcp-server"],
"env": {
"SCALE4_API_KEY": "sk4_your_key_here"
}
}
}
}~/Library/Application Support/Claude/claude_desktop_config.json{
"mcpServers": {
"scale4": {
"command": "npx",
"args": ["-y", "scale4-mcp-server"],
"env": {
"SCALE4_API_KEY": "sk4_your_key_here"
}
}
}
}~/.claude.json{
"mcpServers": {
"scale4": {
"command": "npx",
"args": ["-y", "scale4-mcp-server"]
}
}
}VS Code settings.json{
"cline.mcpServers": {
"scale4": {
"command": "npx",
"args": ["-y", "scale4-mcp-server"],
"env": {
"SCALE4_API_KEY": "sk4_your_key_here"
}
}
}
}Cross-portfolio handoff
When a MarketPrior assessment returns a build verdict, the agent can immediately call scale4.stackforge_handoff — which translates the scored assessment into a Stackforge compose_stack intent string. Two MCPs, one agent loop. No copy-paste.
The handoff carries the vertical profile (healthcare, fintech, workforce) from the assessment axes — so a founder who just passed the healthcare-9-axis protocol gets a HIPAA-ready scaffold pre-selected, not a generic starter.
scale4.score()70-point scorecard + BUILD verdict
scale4.stackforge_handoff()intent: "multi-tenant SaaS, healthcare" profile: "healthcare"
stackforge.compose_stack()wrangler.toml + supabase migrations + Clerk JWT + BAA controls
Both MCPs share
Pricing
Free tier gives you 3 reports per month from the proprietary corpus, no API key required. Pro adds citation verification, PDF export, and full channel-map coverage. All tiers source from the same EDGAR + Crunchbase open + Companies House + press corpus.
3 competitive intelligence reports per month, sourced from the MarketPrior corpus. No API key needed.
Up to 25 generated reports per month with proprietary corpus depth. Citation verification, PDF export, full channel-map coverage.
Shared report workspace, monitored competitors, CSV/Notion export. For partnerships, accelerators, and founder collectives.
Custom vertical corpora (your sector, deep), SLA on the report generator, signed citation-evidence pack for investors and auditors.
Per-org pricing. Add as many team members as you need at no extra cost. Terms apply.