MCP 服务器

Mimiq: test pages and sign-up flows on simulated people

io.github.victorgulchenko/mimiq-mcp
设计与创意 营销与广告 公开且可连接 MCP 2026-07-28

此 MCP 可以做什么

Tests copy, pages, components, and user flows with simulated audiences and compares alternatives to support product and marketing decisions.

mimiq.ask_audience
Ask an audience
Ask simulated people a multiple-choice question (2 to 10 options) and get each person's pick and reasoning. Use it for naming, positioning, or which feature to build next. Each person answers on their own.
输入模式
{'type': 'object', 'required': ['audience', 'question', 'options'], 'properties': {'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many simulated people (default 10, max 50).'}, 'context': {'type': 'string', 'default': 'Product validation survey', 'maxLength': 500, 'description': 'What the question is for.'}, 'options': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'minItems': 2, 'description': 'Answer options (2 to 10).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who to ask, e.g. "SaaS founders with 10 to 50 employees".'}, 'question': {'type': 'string', 'maxLength': 500, 'minLength': 1, 'description': 'The question.'}, 'concurrency': {'type': 'integer', 'default': 6, 'maximum': 20, 'minimum': 1, 'description': 'Parallel workers (default 6).'}, 'timeout_seconds': {'type': 'integer', 'default': 300, 'maximum': 900, 'minimum': 30}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.compare_copy
Compare two versions of copy
Compare two versions of copy or an email on the same simulated people and get Mimiq's call on which to ship. The same people see version A and version B. Mimiq's call combines a forecast of how people like them behave, asked in both orders, with how the same people moved: clear, leaning, or too close to call (no pick). Returns the call, the reason in one sentence, how many people moved toward each version, each version's top objections, and a link to the report. Without a key, an agent also gets one free A/B test on up to 10 simulated people per version, while the daily free A/B allowance lasts. With a key, any size. The forecast has held up on headlines (76% right on 1,000 real headline A/B tests, against 61% for the best rule of thumb); on emails, text messages and ads it was no better than chance at ranking small wording changes, and on real web page tests it did not beat the simplest guess.
输入模式
{'type': 'object', 'required': ['version_a', 'version_b'], 'properties': {'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 3, 'description': 'How many simulated people see both versions (default 10). Use 5 or more: from 5 people up, Mimiq reads who moved. Uses count credits to recruit plus count for version B.'}, 'format': {'enum': ['copy', 'email'], 'type': 'string', 'default': 'copy', 'description': '"copy" for a headline, tagline or short message people come across; "email" for an email in an inbox (a first line "Subject: ..." is read as the subject).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'version_a': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'Version A, usually the current one.'}, 'version_b': {'type': 'string', 'maxLength': 20000, 'minLength': 1, 'description': 'Version B, usually the new one.'}, 'timeout_seconds': {'type': 'integer', 'default': 480, 'maximum': 900, 'minimum': 60}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.compare_urls
Compare two pages
Compare two web pages (for example a preview deployment and production) on the same simulated people and get Mimiq's call on which to ship. The same people see page A and page B. Mimiq's call combines a forecast, asked in both orders, with how the same people moved: clear, leaning, or too close to call (no pick). Returns the call, the reason in one sentence, how many people moved toward each page, each page's top objections, and a link to the report. Needs public URLs. Without a key, an agent also gets one free A/B test on up to 10 simulated people per version, while the daily free A/B allowance lasts. With a key, any size. On real web page tests the forecast did not beat the simplest guess in a pre-registered run: treat the call as a fast first read.
可访问外部资源
输入模式
{'type': 'object', 'required': ['url_a', 'url_b'], 'properties': {'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 3, 'description': 'How many simulated people see both pages (default 10). Use 5 or more: from 5 people up, Mimiq reads who moved.'}, 'url_a': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'Page A, usually the current one (for example production).'}, 'url_b': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'Page B, usually the new one (for example a preview deployment).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'timeout_seconds': {'type': 'integer', 'default': 600, 'maximum': 900, 'minimum': 60}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.show_report
Show a Mimiq report
Show the finished result of a saved Mimiq test, or two saved tests compared: the call, counts, objections in simulated people's words, and a full report link. Use session IDs from an earlier test result or report URL. Reads your account only and spends no credits.
只读 幂等
输入模式
{'type': 'object', 'required': ['session_id'], 'properties': {'session_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,100}$'}, 'compare_session_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{1,100}$'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'required': ['title', 'kind', 'headline', 'reason', 'report_url', 'limitation', 'versions'], 'properties': {'kind': {'type': 'string'}, 'title': {'type': 'string'}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}, 'versions': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'title', 'counts', 'objections'], 'properties': {'label': {'type': 'string'}, 'title': {'type': 'string'}, 'counts': {'type': 'object', 'required': ['total', 'stayed', 'left'], 'properties': {'left': {'type': 'integer', 'minimum': 0}, 'rated': {'type': 'integer', 'minimum': 0}, 'total': {'type': 'integer', 'minimum': 0}, 'stayed': {'type': 'integer', 'minimum': 0}, 'partway': {'type': 'integer', 'minimum': 0}, 'finished': {'type': 'integer', 'minimum': 0}, 'for_them': {'type': 'integer', 'minimum': 0}, 'understood': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'objections': {'type': 'array', 'items': {'type': 'object', 'required': ['quote', 'person', 'count'], 'properties': {'count': {'type': 'integer', 'minimum': 1}, 'quote': {'type': 'string'}, 'person': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}, 'maxItems': 2, 'minItems': 1}, 'limitation': {'type': 'string'}, 'report_url': {'type': 'string', 'format': 'uri'}}, 'additionalProperties': False}
mimiq.test_component
Test a UI component
Show a UI component (a button, card, form, modal, navigation or pricing table) to simulated people and hear whether they understand it, trust it and would use it. Provide component_html, component_text, or both. With a key, the result ends with a link to the full report in the Mimiq app.
输入模式
{'type': 'object', 'required': [], 'properties': {'goal': {'type': 'string', 'maxLength': 500, 'description': 'What the component should achieve, e.g. "get people to click upgrade".'}, 'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many simulated people (default 10, max 50).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'component_html': {'type': 'string', 'maxLength': 50000, 'description': 'The HTML of the component.'}, 'component_text': {'type': 'string', 'maxLength': 20000, 'description': 'A description of the component (instead of, or with, the HTML).'}, 'timeout_seconds': {'type': 'integer', 'default': 180, 'maximum': 900, 'minimum': 30}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.test_copy
Test copy
Show one piece of copy (a headline, tagline, value proposition, email subject line or call to action) to simulated people and hear how they react and why. To choose between two versions, use mimiq.compare_copy. This tool still accepts variant_b and then runs that same comparison. Returns each person's reaction, objections and what would help, and the counts. With a key, the result ends with a link to the full report in the Mimiq app.
输入模式
{'type': 'object', 'required': ['variant_a'], 'properties': {'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many simulated people (default 10, max 50).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'variant_a': {'type': 'string', 'maxLength': 20000, 'description': 'The copy to test.'}, 'variant_b': {'type': 'string', 'maxLength': 20000, 'description': 'Optional second version. With it, this runs mimiq.compare_copy.'}, 'timeout_seconds': {'type': 'integer', 'default': 180, 'maximum': 900, 'minimum': 30}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.test_flow
Test a flow
Starts immediately at 80% audience fit or more and includes audience summary, examples and fit in the result. Only below 80% returns audience_review: show the warning, then use review_id, confirm_audience and audience_fit_acknowledged to continue, or audience_correction to recruit again. Send simulated people through a multi-step flow (signup, onboarding, checkout) in a real browser, clicking and typing, to find the step where they get stuck or give up. Slower than test_page, and each person uses 5 credits. Returns each person's steps, where they stopped and why.
可访问外部资源
输入模式
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'Where the flow starts. Must be publicly reachable. For localhost, open a cloudflared tunnel and pass the tunnel URL.'}, 'goal': {'type': 'string', 'maxLength': 500, 'description': 'The task each person tries, e.g. "complete the signup and reach the dashboard". Default: sign up and start using it.'}, 'count': {'type': 'integer', 'default': 5, 'maximum': 10, 'minimum': 1, 'description': 'How many simulated people (default 5, max 10; without a key a free flow has up to 3, and defaults to 3). Each runs a full browser session and uses 5 credits.'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'max_steps': {'type': 'integer', 'maximum': 60, 'minimum': 10, 'description': 'Optional step limit per person (10 to 60). The server defaults to 40.'}, 'review_id': {'type': 'string', 'maxLength': 100, 'description': 'The review_id from a low-fit review or completed/running result. Bound to this URL and test kind.'}, 'timeout_seconds': {'type': 'integer', 'default': 1200, 'maximum': 1800, 'minimum': 60}, 'confirm_audience': {'type': 'boolean', 'description': 'Start with the reviewed people after showing them to the user.'}, 'audience_correction': {'type': 'string', 'maxLength': 1500, 'description': 'Not quite? Change who and rerun: use with review_id. Recruits a new crowd under the existing credit rules; starts at 80% fit or more, otherwise returns a new review.'}, 'audience_fit_acknowledged': {'type': 'boolean', 'description': 'Set only after telling the user about a below-80% fit warning and they choose to continue.'}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.test_page
Test a page
Starts immediately at 80% audience fit or more and includes audience summary, examples and fit in the result. Only below 80% returns audience_review: show the warning, then use review_id, confirm_audience and audience_fit_acknowledged to continue, or audience_correction to recruit again. Show a web page to simulated people and hear how they react: who would stay, who would leave, and why. Each person scrolls the page and says what confused them, what they doubted and what would change their mind. Use it after you build or change a landing, pricing or signup page, then fix what they raised and test again. Needs a public URL (for localhost, open a tunnel first; see the server instructions). Returns each person's action, thoughts and objections, and the counts. With a key, the result ends with a link to the full report in the Mimiq app.
可访问外部资源
输入模式
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'format': 'uri', 'maxLength': 2000, 'description': 'The page to test. Must be publicly reachable. For localhost, open a cloudflared tunnel and pass the tunnel URL.'}, 'goal': {'type': 'string', 'maxLength': 500, 'description': 'What the page should get people to do, e.g. "sign up for the waitlist".'}, 'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many simulated people (default 10, max 50). Each person uses one credit.'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'review_id': {'type': 'string', 'maxLength': 100, 'description': 'The review_id from a low-fit review or completed/running result. Bound to this URL and test kind.'}, 'timeout_seconds': {'type': 'integer', 'default': 300, 'maximum': 900, 'minimum': 30}, 'confirm_audience': {'type': 'boolean', 'description': 'Start with the reviewed people after showing them to the user.'}, 'audience_correction': {'type': 'string', 'maxLength': 1500, 'description': 'Not quite? Change who and rerun: use with review_id. Recruits a new crowd under the existing credit rules; starts at 80% fit or more, otherwise returns a new review.'}, 'audience_fit_acknowledged': {'type': 'boolean', 'description': 'Set only after telling the user about a below-80% fit warning and they choose to continue.'}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
mimiq.test_text
Test text
Show any text (a positioning statement, feature description, error message, instructions or an announcement) to simulated people and hear how they react. Pass goal to say what the text should achieve. Returns each person's reaction, objections and what would help. With a key, the result ends with a link to the full report in the Mimiq app.
输入模式
{'type': 'object', 'required': ['text'], 'properties': {'goal': {'type': 'string', 'maxLength': 500, 'description': 'What the text should achieve, e.g. "get people to update their card".'}, 'text': {'type': 'string', 'maxLength': 20000, 'description': 'The text to test.'}, 'count': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'How many simulated people (default 10, max 50).'}, 'audience': {'type': 'string', 'maxLength': 500, 'description': 'Who the simulated people should be, in plain words, e.g. "startup founders in SF" or "parents shopping for kids toys". If omitted, Mimiq picks the likely audience from the content.'}, 'timeout_seconds': {'type': 'integer', 'default': 180, 'maximum': 900, 'minimum': 30}}}
输出模式
{'type': 'object', 'required': ['tool'], 'properties': {'run': {'type': 'object', 'additionalProperties': True}, 'call': {'type': 'object', 'properties': {'pick': {'type': ['string', 'null']}, 'reason': {'type': 'string'}, 'headline': {'type': 'string'}}, 'additionalProperties': True}, 'tool': {'type': 'string'}, 'status': {'type': 'string'}, 'report_url': {'type': ['string', 'null']}, 'summary_card': {'type': 'string'}}, 'additionalProperties': True}
已更改
mimiq.compare_urls
2026年10月1日 02:42
已更改
mimiq.compare_copy
2026年10月1日 02:42
已更改
mimiq.ask_audience
2026年10月1日 02:42
已更改
mimiq.test_component
2026年10月1日 02:42
已更改
mimiq.test_text
2026年10月1日 02:42
已更改
mimiq.test_copy
2026年10月1日 02:42
已更改
mimiq.test_flow
2026年10月1日 02:42
已更改
mimiq.test_page
2026年10月1日 02:42
已添加
mimiq.show_report
2026年10月1日 02:42
已更改
mimiq.test_flow
2026年9月27日 02:41
已添加
mimiq.compare_urls
2026年9月25日 02:44
已添加
mimiq.compare_copy
2026年9月25日 02:44
已添加
mimiq.ask_audience
2026年9月25日 02:44
已添加
mimiq.test_component
2026年9月25日 02:44
已添加
mimiq.test_text
2026年9月25日 02:44
已添加
mimiq.test_copy
2026年9月25日 02:44
已添加
mimiq.test_flow
2026年9月25日 02:44
已添加
mimiq.test_page
2026年9月25日 02:44