Skip to main content
Glama

Mimiq: AI agents use your app like your users and find what breaks

Test a flow

mimiq.test_flow

Use this after you build or change anything a user goes through (signup, onboarding, checkout, settings, a new feature), on the preview or staging URL, and again after each fix. AI agents, each acting as one of the app's users, open it in their own real browser and try the task by clicking, typing and filling in forms (they get a working inbox for verification codes). They report what was broken, what did nothing, where they got stuck or gave up and why, with the step and a screenshot, and the problems ranked by how many agents hit them. Pass the URL and, as goal, the task a user would try in plain words. For a protected preview or pages behind a sign-in, pass access (a Vercel bypass secret, a username and password, or a test account). Each agent keeps going until it finishes the task or gets stuck, so a run takes a few minutes, longer for a long task; each agent uses 5 credits. This call answers within a minute with status still_running, a session_id and a report link while the run goes on: call mimiq.show_report with the session_id until it is finished (if it returns a review, handle that audience warning as below). The same call made again joins that run and uses no more credits. It starts right away and the result includes the audience summary, examples and fit. If the recruited crowd is not the requested audience (more than 1 in 5 wrong) or the page could not be read to check its market, the result is an audience_review instead: show the warning, then continue with review_id, confirm_audience and audience_fit_acknowledged, or recruit again with audience_correction.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "url": "<url>"
    },
    "name": "mimiq.test_flow"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlYesWhere the flow starts. Must be publicly reachable. For localhost, open a cloudflared tunnel and pass the tunnel URL.
goalNoThe task each person tries, e.g. "complete the signup and reach the dashboard". Default: sign up and start using it.
countNoHow 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.
accessNoOnly for a site that is not open to everyone. vercel_bypass: a Vercel "Protection Bypass for Automation" secret for a protected preview. basic_auth: a username and password the site asks for in a browser prompt. headers: up to 4 headers sent only to this site. login: a test account (email or username, password, optional note) that the people sign in with to reach pages behind a sign-in. Used for this run only and never shown in results or reports. Ask the user before passing a password, and use a test account, not a real one.
devicesNoWhich devices the agents use. "mix" (the default): about 4 in 10 on a phone-sized touch screen, the rest on a laptop. "phone" or "laptop" puts every agent on one.
new_runNoStart a new run even if this same test is still running or has a result nobody has read. Use it after you change the build. Uses credits.
audienceNoWho 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_stepsNoUsually leave this out: each agent keeps going until it finishes the task or gets stuck, within the server's limit. Set it (10 to 200) only to cap a run on purpose.
review_idNoThe review_id from a low-fit review or completed/running result. Bound to this URL and test kind.
confirm_audienceNoStart with the reviewed people after showing them to the user.
audience_correctionNoNot quite? Change who and rerun: use with review_id. Recruits a new crowd under the existing credit rules; starts unless the new crowd is wrong, otherwise returns a new review.
audience_fit_acknowledgedNoSet only after telling the user about an audience-fit warning and they choose to continue.

Output Schema

NameRequiredDescriptionDefault
runNo
callNo
toolYes
statusNo
report_urlNo
summary_cardNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / new_run
      Added value: +{
      +  "description": "Start a new run even if this same test is still running or has a result nobody has read. Use it after you change the build. Uses credits.",
      +  "type": "boolean"
      +}
    • removedInput schema / properties / timeout_seconds
      Removed value: -{
      -  "default": 1200,
      -  "description": "How long to wait for the result. A run still going after this returns still_running with its report link.",
      -  "maximum": 3600,
      -  "minimum": 60,
      -  "type": "integer"
      -}
  2. Changed1 schema field changed
    • addedInput schema / properties / devices
      Added value: +{
      +  "description": "Which devices the agents use. \"mix\" (the default): about 4 in 10 on a phone-sized touch screen, the rest on a laptop. \"phone\" or \"laptop\" puts every agent on one.",
      +  "enum": [
      +    "mix",
      +    "phone",
      +    "laptop"
      +  ],
      +  "type": "string"
      +}
  3. Changed4 schema fields changed
    • changedInput schema / properties / max_steps / description
      Previous value: -"Optional step limit per person (10 to 60). The server defaults to 40."New value: +"Usually leave this out: each agent keeps going until it finishes the task or gets stuck, within the server's limit. Set it (10 to 200) only to cap a run on purpose."
    • changedInput schema / properties / max_steps / maximum
      Previous value: -60New value: +200
    • addedInput schema / properties / timeout_seconds / description
      Added value: +"How long to wait for the result. A run still going after this returns still_running with its report link."
    • changedInput schema / properties / timeout_seconds / maximum
      Previous value: -1800New value: +3600
  4. Changed1 schema field changed
    • addedInput schema / properties / access
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Only for a site that is not open to everyone. vercel_bypass: a Vercel \"Protection Bypass for Automation\" secret for a protected preview. basic_auth: a username and password the site asks for in a browser prompt. headers: up to 4 headers sent only to this site. login: a test account (email or username, password, optional note) that the people sign in with to reach pages behind a sign-in. Used for this run only and never shown in results or reports. Ask the user before passing a password, and use a test account, not a real one.",
      +  "properties": {
      +    "basic_auth": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "password": {
      +          "maxLength": 256,
      +          "type": "string"
      +        },
      +        "username": {
      +          "maxLength": 256,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "username",
      +        "password"
      +      ],
      +      "type": "object"
      +    },
      +    "headers": {
      +      "additionalProperties": {
      +        "maxLength": 2048,
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "login": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "email": {
      +          "maxLength": 320,
      +          "type": "string"
      +        },
      +        "note": {
      +          "maxLength": 300,
      +          "type": "string"
      +        },
      +        "password": {
      +          "maxLength": 256,
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "email",
      +        "password"
      +      ],
      +      "type": "object"
      +    },
      +    "vercel_bypass": {
      +      "maxLength": 256,
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. Changed2 schema fields changed
    • changedInput schema / properties / audience_correction / description
      Previous value: -"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."New value: +"Not quite? Change who and rerun: use with review_id. Recruits a new crowd under the existing credit rules; starts unless the new crowd is wrong, otherwise returns a new review."
    • changedInput schema / properties / audience_fit_acknowledged / description
      Previous value: -"Set only after telling the user about a below-80% fit warning and they choose to continue."New value: +"Set only after telling the user about an audience-fit warning and they choose to continue."
  6. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "call": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "headline": {
      +          "type": "string"
      +        },
      +        "pick": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "reason": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "report_url": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "run": {
      +      "additionalProperties": true,
      +      "type": "object"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "summary_card": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "tool"
      +  ],
      +  "type": "object"
      +}
  7. Changed4 schema fields changed
    • addedInput schema / properties / audience_correction
      Added value: +{
      +  "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.",
      +  "maxLength": 1500,
      +  "type": "string"
      +}
    • addedInput schema / properties / audience_fit_acknowledged
      Added value: +{
      +  "description": "Set only after telling the user about a below-80% fit warning and they choose to continue.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / confirm_audience
      Added value: +{
      +  "description": "Start with the reviewed people after showing them to the user.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / review_id
      Added value: +{
      +  "description": "The review_id from a low-fit review or completed/running result. Bound to this URL and test kind.",
      +  "maxLength": 100,
      +  "type": "string"
      +}
  8. Changed1 schema field changed
    • changedInput schema / properties / timeout_seconds / default
      Previous value: -900New value: +1200
  9. Changed5 schema fields changed
    • removedInput schema / properties / max_steps / default
      Removed value: -15
    • changedInput schema / properties / max_steps / description
      Previous value: -"Most steps per person (default 15)."New value: +"Optional step limit per person (10 to 60). The server defaults to 40."
    • changedInput schema / properties / max_steps / maximum
      Previous value: -100New value: +60
    • changedInput schema / properties / max_steps / minimum
      Previous value: -1New value: +10
    • changedInput schema / properties / timeout_seconds / default
      Previous value: -420New value: +900
  10. Changed1 schema field changed
    • changedInput schema / properties / count / description
      Previous value: -"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 30 credits."New value: +"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."
  11. Changed1 schema field changed
    • changedInput schema / properties / count / description
      Previous value: -"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 10 credits."New value: +"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 30 credits."
  12. Changed2 schema fields changed
    • changedInput schema / properties / count / description
      Previous value: -"How many simulated people (default 5, max 10). Each runs a full browser session and uses 10 credits."New value: +"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 10 credits."
    • changedInput schema / properties / goal / description
      Previous value: -"What success looks like, e.g. \"complete the signup and reach the dashboard\"."New value: +"The task each person tries, e.g. \"complete the signup and reach the dashboard\". Default: sign up and start using it."
  13. Changed5 schema fields changed
    • changedInput schema / properties / audience / description
      Previous value: -"Who should test this page. Natural language, e.g. \"startup founders in SF\" or \"parents shopping for kids toys\". If omitted, Mimiq auto-detects the likely audience from page content."New value: +"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."
    • changedInput schema / properties / count / description
      Previous value: -"Number of simulated users (default 5, max 10). Each runs a full interactive browser session."New value: +"How many simulated people (default 5, max 10). Each runs a full browser session and uses 10 credits."
    • changedInput schema / properties / goal / description
      Previous value: -"What success looks like, e.g. \"complete the signup and reach the dashboard\". Providing a goal helps personas evaluate the page against a specific conversion objective."New value: +"What success looks like, e.g. \"complete the signup and reach the dashboard\"."
    • changedInput schema / properties / max_steps / description
      Previous value: -"Maximum navigation steps per persona (default 15)."New value: +"Most steps per person (default 15)."
    • changedInput schema / properties / url / description
      Previous value: -"Starting URL of the flow to test. For localhost, first create a cloudflared tunnel and pass the tunnel URL here."New value: +"Where the flow starts. Must be publicly reachable. For localhost, open a cloudflared tunnel and pass the tunnel URL."
  14. Changed6 schema fields changed
    • changedInput schema / properties / audience / description
      Previous value: -"Target audience description. E.g. \"small business owners looking for accounting software\"."New value: +"Who should test this page. Natural language, e.g. \"startup founders in SF\" or \"parents shopping for kids toys\". If omitted, Mimiq auto-detects the likely audience from page content."
    • addedInput schema / properties / audience / maxLength
      Added value: +500
    • removedInput schema / properties / bridge_id
      Removed value: -{
      -  "description": "Deprecated. Use cloudflared tunnel directly instead.",
      -  "type": "string"
      -}
    • changedInput schema / properties / goal / description
      Previous value: -"What success looks like, e.g. \"complete the signup and reach the dashboard\"."New value: +"What success looks like, e.g. \"complete the signup and reach the dashboard\". Providing a goal helps personas evaluate the page against a specific conversion objective."
    • addedInput schema / properties / goal / maxLength
      Added value: +500
    • addedInput schema / properties / url / maxLength
      Added value: +2000
  15. First observed

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint=false, openWorldHint=true), the description discloses cost (5 credits per agent), latency (run takes a few minutes, call answers within a minute with status still_running), the async session_id/report-link contract, and that repeating the call joins the run without extra credits. It also discloses credential handling ('used for this run only and never shown in results or reports') and the audience_review failure mode with its recovery parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the trigger condition and the mental model before the mechanics, and nearly every sentence carries operative content (credits, timing, polling, access, audience review). It is somewhat sprawling as a single dense block, with mild repetition of the still_running/show_report loop and a slightly abrupt 'It starts right away' mid-paragraph, but nothing is truly wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter, nested-object, open-world tool with an output schema, the description covers everything an agent needs to call it correctly: triggers, async polling loop, cost model, credential passing, re-run semantics, and the audience_review branch with its recovery path. Return values need not be described because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3; the description adds real meaning by explaining how to phrase goal ('the task a user would try in plain words') and by summarizing the access object's three credential types and when each applies. It leaves devices, max_steps and new_run to the schema, which handles them adequately, so it falls just short of full compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb and resource ('AI agents ... open it in their own real browser and try the task by clicking, typing and filling in forms') and precisely what it produces: what was broken, what did nothing, where they got stuck, ranked by how many agents hit each problem. It also names the sibling it hands off to ('call mimiq.show_report with the session_id'), so the agent can tell the two apart without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use is given ('after you build or change anything a user goes through ... and again after each fix'), along with the required conditions (preview or staging URL, access for protected pages). Alternatives and follow-ups are spelled out: poll mimiq.show_report until finished, use new_run after a build change, and use review_id plus confirm_audience or audience_correction when the audience is wrong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.