Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MarketMirror

PYPI · MARKETMIRROR

Test ads, prices and sales pitches on simulated buyers; get a go / iterate / no-go report.

Available components

+3 this week 78 Trust /100

Last scanned (1 day ago)

Scores higher than 76% of PyPI servers

Category Marketing and SEO

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to DarkWorldCoder/market-mirror). View diagnostics → Pass
  • Clear OSI-approved license (AGPL-3.0-only).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability61
  • AI-judged instruction clarity (fair).Partial
  • Tool/resource definitions use about 2746 tokens (~101/item across 27 items; 27 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
  • Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage68
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 4% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 27 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 28 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities40
  • Spec-recency check failed: implements MCP spec 2025-03-26; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 3 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

  • 1 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

  • 30 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 26 Oct 26 74

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Nov 2026 · Analysed pypi/marketmirror@0.4.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo DarkWorldCoder/market-mirror
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/DarkWorldCoder/market-mirror/.github/workflows/publish-pypi.yml@refs/heads/main
Rekor log index 3478340889
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:9cb5790ce317599e13c28d6de6e8fc1bc44b89e2a69805ace3737f3c96e5bd56

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 27 exposed · ~2,696 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
actuals_import ~91

Normalize a local ads, email, website, CRM or survey CSV/JSON export, retaining provenance and row-level validation errors.

NameTypeReqDescription
datestring––
filestringyes–
mappingobject––
marketstring––
outstring––
qualitystring––
sourcestring––
source_typestringyes–

No output schema declared.

No examples provided.

ads_import ~55

Turn a Meta/Google Ads export (CSV or JSON, absolute path) into a seed Markdown file plus benchmarks JSON.

NameTypeReqDescription
filestringyes–
outstringyesabsolute path of the seed .md to write

No output schema declared.

No examples provided.

backtest ~53

Score a run's feed test against real ad results (from ads_import): rank correlation, winner match, calibration.

NameTypeReqDescription
actualsstringyes–
maparray––
runstringyes–

No output schema declared.

No examples provided.

calibrate ~125

Check a run's simulated survey against real answers (absolute path to a CSV with segment,country,gender,age,y where y is yes/maybe/no or 0-1; 50-300 rows is enough): covariate overlap, per-audience calibration, a trust / correct / walk-away verdict and an AIPW-corrected rate. Writes calibration.json into the run folder.

NameTypeReqDescription
bystring––
fieldstring––
maparray––
real_csvstringyes–
runstringyes–

No output schema declared.

No examples provided.

campaign_plan ~95

Save an evidence-led campaign plan and runnable test specs from a profile or existing project. No campaign is sent.

NameTypeReqDescription
budgetobjectyes–
channelsarray––
goalstringyes–
outstring––
profileobject––
profile_filestring––
projectstring––
researchobject––
research_filestring––

No output schema declared.

No examples provided.

cli ~53

Advanced: run any MarketMirror CLI command as a background job, e.g. ['survey','--simulation','sim_x','--offer','...']. See CLAUDE.md in the engine.

NameTypeReqDescription
argsarrayyes–

No output schema declared.

No examples provided.

doctor ~27

Check MarketMirror: engine installed, Python deps, API key configured (never shown), backend running.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

email_test ~202

Email campaign test on the simulated people's inboxes: pass emails [{id, from_name, subject, preheader, body, cta, send_time (morning|midday|evening|night), segments?, sequence?: [{delay_days, subject, body}]}] plus optional list_size and benchmarks {cost_per_send, lead_value, close_rate, deal_value}. Each person gets a realistic inbox for the day; an attention gate decides opens, Claude decides skim/read/click/reply/unsubscribe/spam with honest odds. Returns open, click, click-to-open, unsubscribe and spam rates per variant and audience, subject-line ranking, sequence funnel, projection from list size to leads and revenue, spam-word warnings. Needs a prepared simulation (simulation_id). Background job.

NameTypeReqDescription
benchmarksobject––
emailsarrayyes–
list_sizeinteger––
runstring––
simulation_idstringyes–

No output schema declared.

No examples provided.

holdout_backtest ~40

Evaluate independent held-out real experiments against a training-mean no-persona baseline.

NameTypeReqDescription
outstring––
pairsarrayyes–

No output schema declared.

No examples provided.

ideas ~149

Next test ideas from real data: pass ad rows you fetched from a connected ads tool (Meta/Google/TikTok: name, campaign, spend, impressions, clicks, conversions, country...) and/or an export file path, plus a previous run (its objections, audiences and decision). Returns prioritised experiments, each citing its evidence, with the MarketMirror config to simulate it first. Writes ideas.json/.md into the run folder and adds a 'Test ideas' section to the dashboard.

NameTypeReqDescription
ads_filestring––
brandstring––
briefstring––
ninteger––
rowsarray––
runstring––

No output schema declared.

No examples provided.

job_status ~28

Status, log tail and final result of a background job.

NameTypeReqDescription
job_idstringyes–

No output schema declared.

No examples provided.

list_runs ~15

List previous runs with their decision.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

market_test ~157

All-in-one market test. Config keys: name, title, seeds (absolute paths to documents), requirement (text), personas (persona spec object or absolute path) or auto_personas (int), creatives (feed-test object with creatives, landing, benchmarks), seeds_n (int, repeat the feed test with N seeds and report ranges), rounds (int), survey {offer, goal, messages (list), split, pricing}, panel {analysts, brief}, report (bool), simulation_id (reuse), approve_spend (bool). Without approve_spend it stops after creating the personas so you can show them to the user; then call again with simulation_id and approve_spend true. Background job.

NameTypeReqDescription
configobjectyes–

No output schema declared.

No examples provided.

pitch ~134

Sales rehearsal: pitch a script to every simulated buyer of a simulation (its environment must be alive: run market_test with rounds first, or start it), collect objections and the questions they ask back, then answer with rebuttals ({objection_type: text, '*': generic}). Scores the pitch, each rebuttal, and every person (lead score). Background job.

NameTypeReqDescription
channelstring––
productstring––
rebuttalsobject––
runstring––
scriptstringyes–
segmentstring––
simulation_idstringyes–

No output schema declared.

No examples provided.

predict ~166

Predictions with intervals for a run: CTR per ad, cost per lead, would-convert overall and per audience, email click rates, each scaled by the real-vs-simulated results stored so far (from backtest and calibrate) and labelled with its basis ('calibrated on N real results' or 'uncalibrated prior'); optional targets (e.g. {ctr: 2, cpl: 10}) give a probability of success. Also a 30/60/90-day adoption forecast from the best ad, its landing conversion and the word of mouth seen in the rounds.

NameTypeReqDescription
brandstring––
daysinteger––
runstringyes–
spendnumber––
targetsobject––

No output schema declared.

No examples provided.

provider_setup ~103

List provider choices and official key guides, inspect masked local settings, configure a local model or an existing key environment variable, or discover available models. Never paste an API key into tool arguments. ChatGPT/CLI login choices return local login commands.

NameTypeReqDescription
actionstringyes–
base_urlstring––
key_envstring–Environment variable NAME only; never the key itself
modelstring––
providerstring––

No output schema declared.

No examples provided.

push_context ~115

While a simulation is running (or before it starts), push what people are saying today into every persona card from the next round on: a news item, a competitor's move, a real thread you just read with your browser, a price change. Each update is one or two sentences; the runner re-reads the file every round. Use it to ground the rounds in live reality.

NameTypeReqDescription
roundinteger––
simulation_idstringyes–
sourcestring––
textstringyes–

No output schema declared.

No examples provided.

quickstart ~175

Easiest start. Answer a few questions and get a ready scenario folder (brief, personas, two template captions per platform, messages, launch calendar, pitch) plus the simulated people (stops before any paid rounds). Keys: brand, product (what, for whom, price), buyers (who and where), platforms (comma list), tests (ads, messages, price, launch, pitch), budget ('300 USD'), size (small|medium|large), past_ads (absolute path, optional), docs (paths, optional). Background job; poll job_status. The result names the files to edit and the exact next command.

NameTypeReqDescription
answersobjectyes–
from_docsarray–documents to understand first; prefills the answers
no_runboolean––
urlstring––

No output schema declared.

No examples provided.

research ~172

What real people say about a product, category or competitor, from public keyless sources: Hacker News stories and comments, App Store listings and recent reviews for a country storefront (in, ph, ke, us...), Reddit public search when it answers (it often blocks non-browser clients; the result says so, then use your own browser tools and add what you find as seed files), and any page URLs. Writes research.md (themes with quotes and links), research.json and voices.json (short real quotes the personas and feeds draw on) under scenarios/<query>/research. Run it before planning personas.

NameTypeReqDescription
countrystring––
outstring––
querystringyes–
sourcesstring––
subredditsarray––
urlsarray––

No output schema declared.

No examples provided.

results ~51

Key results of a run: decision, verdicts, segments, objections, messages, pricing, feed-test metrics, ROI projections, files.

NameTypeReqDescription
runstringyesrun name under mirofish_runs or absolute path

No output schema declared.

No examples provided.

run_test ~176

Test anything from one spec on a prepared simulation: type = ad | message | price | offer | positioning | naming | landing | launch | pitch | email | creator_post | channel_mix; variants = the things to compare (ad creatives, message lines, prices, offer wordings, names, landing pages, launch posts with rounds, pitch scripts, emails); audience {segments, countries}; metric (default per type); budget {amount, cpm, currency}; rounds (launch). Returns one result shape for every type: each variant's metric with a 95% margin, the winner, the lift, whether it is clear or a tie, and how to read it. Background job.

NameTypeReqDescription
brandstring––
runstring––
simulation_idstringyes–
specobjectyes–

No output schema declared.

No examples provided.

setup ~33

Install or update the MarketMirror engine (git clone + uv sync). Background job; poll job_status. Needs git and uv.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_backend ~40

Start the MarketMirror backend (port 5001). Configure an API-key, eligible ChatGPT sign-in, local CLI gateway, or local-model provider first.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

start_live ~43

Serve the live dashboard at http://127.0.0.1:5050/ (newest run, or a given run).

NameTypeReqDescription
runstring––

No output schema declared.

No examples provided.

study ~158

Several scenarios x several seeds on the same simulated people, one defended conclusion. spec: {name, base (a market_test config object: creatives, survey, pitch, emails, rounds...), simulation_id (the people to reuse), scenarios: [{name, overrides}], seeds: [1,2,3], steps: [feed_test, rounds, survey, pitch, email_test]}. Writes study_summary.json (per-scenario mean, spread and 95% interval of every metric, deltas, winner stability, decision agreement matrix, conclusion with confidence), study_report.md and study.html under mirofish_runs/<name>/. Finished cells are reused on rerun. Background job.

NameTypeReqDescription
outstring––
specobjectyes–

No output schema declared.

No examples provided.

understand ~156

Step one for any product: read the user's documents (absolute paths to .md/.txt), a landing page URL and/or an ads export into one product profile (what it is, for whom, pricing, offer, proofs, differentiators, competitors, channels, likely objections, brand voice, KPIs, unknowns). Every later step uses it. Synchronous, one Claude call. Writes product_profile.json; pass `project` instead of docs to profile an existing project (also seeds the market map before the graph build).

NameTypeReqDescription
ads_filestring––
docsarray––
namestring––
outstring––
projectstring––
urlstring––

No output schema declared.

No examples provided.

website_test ~84

Run prepared synthetic visitors on a real website URL. Actions and screenshots are observed; only supplied DOM checks verify goals. Cart changes are enabled by cart/checkout goals; signup submission requires explicit test data and opt-in. No payments/orders. Background job: poll job_status.

NameTypeReqDescription
outstring––
simulation_idstringyes–
specobjectyes–

No output schema declared.

No examples provided.

Install

How do I install the MarketMirror MCP server?

MarketMirror runs locally as a PyPI package, launched with uvx marketmirror. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · marketmirror

# add to Claude Code
claude mcp add darkworldcoder-market-mirror -- uvx marketmirror
Common questions

What is the MarketMirror MCP server?

MarketMirror is an MCP server listed in the public MCP registry as io.github.DarkWorldCoder/market-mirror. Test ads, prices and sales pitches on simulated buyers; get a go / iterate / no-go report. This page covers its PyPI package (marketmirror).

Is the MarketMirror MCP server safe to use?

MarketMirror scores 78 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MarketMirror MCP server expose?

MarketMirror exposes 27 tools: website_test, provider_setup, doctor, setup, start_backend, and 22 more. Their descriptions and schemas cost roughly 2,696 tokens of context every time the server is loaded.

Is the MarketMirror MCP server still maintained?

MarketMirror is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the MarketMirror MCP server under?

MarketMirror declares the AGPL-3.0-only licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.