MarketMirror
PYPI · MARKETMIRROR
Test ads, prices and sales pitches on simulated buyers; get a go / iterate / no-go report.
Available components
Last scanned (1 day ago)
Scores higher than 76% of PyPI servers
Category Marketing and SEO
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
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.
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 →
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 →
actuals_import ~91
Normalize a local ads, email, website, CRM or survey CSV/JSON export, retaining provenance and row-level validation errors.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | – |
| file | string | yes | – |
| mapping | object | – | – |
| market | string | – | – |
| out | string | – | – |
| quality | string | – | – |
| source | string | – | – |
| source_type | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | – |
| out | string | yes | absolute 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.
| Name | Type | Req | Description |
|---|---|---|---|
| actuals | string | yes | – |
| map | array | – | – |
| run | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| by | string | – | – |
| field | string | – | – |
| map | array | – | – |
| real_csv | string | yes | – |
| run | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| budget | object | yes | – |
| channels | array | – | – |
| goal | string | yes | – |
| out | string | – | – |
| profile | object | – | – |
| profile_file | string | – | – |
| project | string | – | – |
| research | object | – | – |
| research_file | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| benchmarks | object | – | – |
| emails | array | yes | – |
| list_size | integer | – | – |
| run | string | – | – |
| simulation_id | string | yes | – |
No output schema declared.
No examples provided.
holdout_backtest ~40
Evaluate independent held-out real experiments against a training-mean no-persona baseline.
| Name | Type | Req | Description |
|---|---|---|---|
| out | string | – | – |
| pairs | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| ads_file | string | – | – |
| brand | string | – | – |
| brief | string | – | – |
| n | integer | – | – |
| rows | array | – | – |
| run | string | – | – |
No output schema declared.
No examples provided.
job_status ~28
Status, log tail and final result of a background job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| config | object | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | – |
| product | string | – | – |
| rebuttals | object | – | – |
| run | string | – | – |
| script | string | yes | – |
| segment | string | – | – |
| simulation_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | – |
| days | integer | – | – |
| run | string | yes | – |
| spend | number | – | – |
| targets | object | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | – |
| base_url | string | – | – |
| key_env | string | – | Environment variable NAME only; never the key itself |
| model | string | – | – |
| provider | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| round | integer | – | – |
| simulation_id | string | yes | – |
| source | string | – | – |
| text | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| answers | object | yes | – |
| from_docs | array | – | documents to understand first; prefills the answers |
| no_run | boolean | – | – |
| url | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| country | string | – | – |
| out | string | – | – |
| query | string | yes | – |
| sources | string | – | – |
| subreddits | array | – | – |
| urls | array | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| run | string | yes | run 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.
| Name | Type | Req | Description |
|---|---|---|---|
| brand | string | – | – |
| run | string | – | – |
| simulation_id | string | yes | – |
| spec | object | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| run | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| out | string | – | – |
| spec | object | yes | – |
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).
| Name | Type | Req | Description |
|---|---|---|---|
| ads_file | string | – | – |
| docs | array | – | – |
| name | string | – | – |
| out | string | – | – |
| project | string | – | – |
| url | string | – | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| out | string | – | – |
| simulation_id | string | yes | – |
| spec | object | yes | – |
No output schema declared.
No examples provided.
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
claude mcp add darkworldcoder-market-mirror -- uvx marketmirror
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.