Atlas / MCP servers / multiplex-ai / Muggle Works

Muggle WorksBLOCK

mcp/multiplex-ai/muggle-ai-works

Your AI coding agent writes code fast — we make sure the web product actually works. Paste a URL, the agent clicks through signup/checkout/dashboards like a real user, reports failures with screenshots. Currently web only. Works with Claude Code, Cursor, Codex, Windsurf.

Verdict
BLOCK
Grade
F
Trust score
44 /100
Exposed tools
104 50r · 42w · 12d
Transport
stdio
License
MIT
Stars
16
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An open-source harness that drives your AI coding agent through the whole delivery cycle — design, build, test, acceptance — and closes the loop on GitHub and GitLab.

Coding agents are good at producing a diff. They are bad at knowing whether the diff works, whether it broke the login flow, and what still has to happen before a human can merge it. Muggle Works is the harness around the agent that answers those questions: it freezes requirements, delegates the design and build, runs the unit suite, drives a real browser through the affected user flows, opens the pull request with screenshots attached, and then keeps watching that PR — picking up review comments, red CI, and a stale base branch until the change is genuinely mergeable.

[](https://www.npmjs.com/package/@muggleai/works) [](LICENSE) [](https://nodejs.org) [](#mcp-tool-reference)

Works in Claude Code, Cursor, Codex, Windsurf, and any MCP client. Powered by Muggle Test.

Highlights

  • One request, one pull request. /mdo "add a logout button" runs requirements → design → build → impact analysis → unit tests → browser acceptance → PR. You answer one questionnaire up front, then walk away.
  • A real browser under a real identity. Not a headless stub. Every managed login profile owns a live inbox, so magic links, emailed OTPs, email 2FA, verification mail, and password resets are all testable — no mail catcher, no test-only backdoor, no SKIP_AUTH flag.
  • GitHub and GitLab as peers. Pull requests and merge requests, review threads and discussions, Actions and pipelines, signed commits on both. Self-hosted GitLab included — the provider is detected from the remote, not hardcoded.
Read from source at commit 81fb27bbb3f2OBSERVED · 2026-10-11
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (npm)
claude mcp add works -- npx -y @muggleai/[email protected]
03

Exposed tools (104)

50 read · 42 write · 12 destructive. Blast radius: 12 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
muggle-local-cancel-executionreadCancel an active test generation or replay execution.
muggle-local-check-statusreadCheck the status of Muggle Test Local. This verifies the connection to web-service and shows current session information.
muggle-local-last-host-cleardestructiveRemove the cached last-used host for this repo. After this,
muggle-local-last-host-getreadGet the cached last-used local dev server URL for a repo (read from the entry keyed on <cwd> in ${MUGGLE_HOME_DISPLAY_DIR}/${LAST_HOST_FILE_NAME}).
muggle-local-last-host-setwriteSave the user
muggle-local-last-project-cleardestructiveRemove the cached last-used project for this repo. After this,
muggle-local-last-project-getreadGet the cached last-used Muggle Test project for a repo (read from the entry keyed on <cwd> in ${MUGGLE_HOME_DISPLAY_DIR}/${LAST_PROJECT_FILE_NAME}).
muggle-local-last-project-setwriteSave the user
muggle-local-list-sessionsreadList all stored testing sessions. Shows session IDs, status, and metadata for each session.
muggle-local-preferences-setwriteSet a Muggle AI user preference. Preferences control automation behavior (auto-login, show browser, suggest test cases, etc.).
muggle-local-run-result-getwriteGet detailed information about a run result including screenshots and action script output.
muggle-local-run-result-listwriteList run results (test generation and replay history), optionally filtered by cloud test case ID.
muggle-local-run-steps-getwriteRead a local run
muggle-local-telemetry-event-emitreadEmit a structured failure-mode telemetry event recording how a Muggle Test skill
muggle-local-telemetry-skill-emitreadEmit a client telemetry event recording that a Muggle Test skill was invoked. Each muggle-* skill
muggle-local-test-script-getreadGet details of a locally generated test script including action script steps.
muggle-local-test-script-listreadList locally generated test scripts, optionally filtered by cloud test case ID.
muggle-remote-action-script-deletedestructivePermanently delete an action script by ID. Unlike the other delete tools this is a hard delete and cannot be undone, and any test script referencing it keeps an orphaned actionScriptId. Only the owner or a super user may call it.
muggle-remote-action-script-getreadGet the full action script content by ID. Use actionScriptId from a test script to fetch the complete script with all steps and element labels needed for replay.
muggle-remote-auth-api-key-createwriteCreate a new API key for the authenticated user. Requires existing authentication.
muggle-remote-auth-api-key-getreadGet details of a specific API key by ID.
muggle-remote-auth-api-key-listreadList all API keys for the authenticated user. Shows key metadata but not the secret values.
muggle-remote-auth-api-key-revokedestructiveRevoke an API key. The key will immediately stop working. Use muggle-remote-auth-api-key-list to find the key ID first.
muggle-remote-auth-loginwriteStart authentication with the Muggle Test service. Opens a browser-based login flow and waits for confirmation by default. If login is still pending after the wait timeout, use muggle-remote-auth-poll to finish authentication.
muggle-remote-auth-logoutdestructiveLog out and clear stored credentials.
muggle-remote-auth-pollreadPoll for login completion after starting the login flow with muggle-remote-auth-login. Call this after the user completes authentication in their browser.
muggle-remote-auth-statusreadCheck current authentication status. Shows if you
muggle-remote-bulk-preview-job-cancelreadRequest cancellation of a bulk-preview job. Cancellation is cooperative — the harvester picks it up on its next tick and moves the job to status=cancelled.
muggle-remote-bulk-preview-job-getreadGet the current status and (when terminal) results of a bulk-preview job. Poll this after submitting a bulk-preview job — every 10–15 seconds is fine. Terminal statuses: succeeded, partial, failed, cancelled, expired.
muggle-remote-bulk-preview-job-listreadList bulk-preview jobs for a project, optionally filtered by status or kind.
muggle-remote-local-run-uploadwriteUpload a locally executed run (generation/replay) to cloud workflow records.
muggle-remote-prd-file-deletedestructiveDelete a PRD file from a project.
muggle-remote-prd-file-list-by-projectreadList all PRD files associated with a project.
muggle-remote-prd-file-uploadwriteUpload a PRD file to a project. File content should be base64-encoded.
muggle-remote-project-createwriteCreate an E2E acceptance testing project to organize browser tests for a web app. A project groups test scenarios (use cases), specific test steps (test cases), and replayable browser scripts (test scripts) for one application. Create a project first before generating or running any E2E tests.
muggle-remote-project-deletedestructiveDelete a project and all associated entities. This is a soft delete.
muggle-remote-project-getreadGet details of a specific project by ID.
muggle-remote-project-listreadList projects accessible to the authenticated user. Returns up to 10 items per page by default (max 100). Response includes pagination metadata (totalCount, totalPages, hasMore) — check
muggle-remote-project-test-results-summary-getreadGet a summary of test results for a project.
muggle-remote-project-test-runs-summary-getreadGet a paginated, slimmed summary of latest test runs for a project. Response shape: { page, pageSize, totalCount, totalPages, hasMore, runs: [{ status, testCaseId, testCaseTitle, useCaseId, useCaseTitle, lastRunAt, error, latestWorkflowRunId }] }. Returns 20 runs per page by default (max 100).
muggle-remote-project-test-scripts-summary-getreadGet a paginated, slimmed script-generation summary for a project. One row per TEST CASE, not per script: a test case with no script yet still gets a row, with
muggle-remote-project-updatewriteUpdate an existing project
muggle-remote-recommend-cicd-setupreadGet recommendations and templates for CI/CD integration.
muggle-remote-recommend-schedulewriteGet recommendations for test scheduling based on project needs.
muggle-remote-report-cost-queryreadQuery cost/usage data for a project over a date range.
muggle-remote-report-final-generatereadGenerate a final test report for a project.
muggle-remote-report-preferences-upsertwriteUpdate report delivery preferences for a project.
muggle-remote-report-stats-summary-getreadGet report statistics summary for a project.
muggle-remote-secret-createwriteCreate a new secret (credential) for a project.
muggle-remote-secret-deletedestructiveDelete a secret from a project.
muggle-remote-secret-getreadGet details of a specific secret. The secret value is not returned for security.
muggle-remote-secret-listreadList all secrets for a project. Secret values are not returned for security.
muggle-remote-secret-updatewriteUpdate an existing secret.
muggle-remote-test-case-ancestors-getreadResolve a test case
muggle-remote-test-case-createwriteCreate a new test case for a use case.
muggle-remote-test-case-deletedestructiveDelete a test case by ID. This is a soft delete.
muggle-remote-test-case-generate-from-promptreadGenerate E2E acceptance test cases from a plain-English description of what to test — e.g.,
muggle-remote-test-case-getreadGet details of a specific test case.
muggle-remote-test-case-listreadList test cases for a project. Returns up to 10 items per page by default (max 100). Response includes pagination metadata (totalCount, totalPages, hasMore) — check
muggle-remote-test-case-list-by-use-casereadList test cases for a specific use case.
muggle-remote-test-case-updatewriteDirectly update an existing test case
muggle-remote-test-plan-graph-rebuildreadQueue a full rebuild of a project
muggle-remote-test-script-deletedestructiveDelete a test script by ID. This is a soft delete; the test case it belongs to is not affected.
muggle-remote-test-script-getreadGet details of a specific test script.
muggle-remote-test-script-listreadList test scripts for a project, optionally filtered by test case and by environment lane. Returns up to 10 items per page by default (max 100). Response includes pagination metadata (totalCount, totalPages, hasMore) — check
muggle-remote-use-case-candidates-approvereadApprove (graduate) selected use case candidates into actual use cases.
muggle-remote-use-case-createwriteCreate a single use case from a fully-specified payload. Use this to persist use cases returned by muggle-remote-use-case-bulk-preview-submit — no LLM is invoked.
muggle-remote-use-case-create-from-promptswriteCreate one or more use cases from natural language instructions.
muggle-remote-use-case-deletedestructiveDelete a use case by ID. Soft delete, and it cascades: the use case
muggle-remote-use-case-discovery-memory-getreadGet the use case discovery memory for a project, including all discovered use case candidates.
muggle-remote-use-case-getreadGet details of a specific use case by ID.
muggle-remote-use-case-listreadList use cases for a project. Returns up to 10 items per page by default (max 100). Response includes pagination metadata (totalCount, totalPages, hasMore) — check
muggle-remote-use-case-prompt-previewreadPreview a use case generated from a natural language instruction without saving.
muggle-remote-use-case-updatewriteDirectly update an existing use case
muggle-remote-use-case-update-from-promptwriteUpdate an existing use case by regenerating its fields from a new instruction.
muggle-remote-user-feedback-createwriteSubmit user feedback on a generated action script — either the whole script (targetType=
muggle-remote-user-feedback-deletedestructiveSoft-delete a user feedback entry by ID. Returns 204 on success.
muggle-remote-user-feedback-listreadList active user feedback entries for a project. Optionally narrow by exactly one of actionScriptId / testScriptId / testCaseId / useCaseId — the typical query is
muggle-remote-wallet-auto-topup-set-payment-methodwriteSet the saved payment method used by wallet auto top-up.
muggle-remote-wallet-auto-topup-updatewriteUpdate wallet auto-topup settings.
muggle-remote-wallet-payment-method-listreadList saved payment methods.
muggle-remote-wallet-pm-create-setup-sessionwriteCreate a Stripe setup session to add a payment method.
muggle-remote-wallet-topupwriteCreate a Stripe checkout session to purchase a token package.
muggle-remote-wf-get-latest-ts-gen-by-tcreadGet the latest test script generation runtime for a specific test case.
muggle-remote-wf-get-prd-process-latest-runwriteGet the latest run status of a PRD file processing workflow.
muggle-remote-wf-get-replay-bulk-batch-summarywriteGet the summary of a bulk replay run batch.
muggle-remote-wf-get-tc-detect-latest-runwriteGet the latest run status for a test case detection workflow runtime.
muggle-remote-wf-get-ts-gen-latest-runwriteGet the latest run status for a test script generation workflow runtime.
muggle-remote-wf-get-ts-replay-bulk-latest-runwriteGet the latest run status for a bulk test script replay workflow runtime.
muggle-remote-wf-get-ts-replay-latest-runwriteGet the latest run status for a test script replay workflow runtime.
muggle-remote-wf-list-tc-detect-runtimesreadList test case detection workflow runtimes.
muggle-remote-wf-list-ts-replay-bulk-runtimesreadList bulk test script replay workflow runtimes.
muggle-remote-workflow-cancel-runwriteCancel a running workflow run.
muggle-remote-workflow-cancel-runtimereadCancel a workflow runtime and all its runs.
muggle-remote-workflow-get-website-scan-latest-runwriteGet the latest run status for a website scan workflow runtime.
muggle-remote-workflow-list-website-scan-runtimesreadList website scan workflow runtimes.
muggle-remote-workflow-start-prd-file-processwriteStart a PRD file processing workflow to extract use cases.
muggle-remote-workflow-start-test-case-detectionwriteStart a test case detection workflow to generate test cases from use cases.
muggle-remote-workflow-start-test-script-generationwriteStart a test script generation workflow.
muggle-remote-workflow-start-test-script-generation-bulkwriteStart a bulk test script generation workflow to generate scripts for multiple test cases in a single request.
muggle-remote-workflow-start-test-script-replaywriteStart a test script replay workflow to execute a single test script.
muggle-remote-workflow-start-test-script-replay-bulkwriteStart a bulk test script replay workflow to execute multiple test scripts.
muggle-remote-workflow-start-website-scanwriteScan a website to automatically discover testable user flows and UI interactions. Crawls the site and identifies use cases like signup, login, search, checkout, form submissions, and navigation patterns. Use this when setting up E2E acceptance testing for a site without predefined test cases.
muggle-remote-xreaddesc
04

Trust audit

BLOCKgrade F · trust 44/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (10 observation(s))
Network
declared (2 observation(s))
Shell
declared (7 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (21)

CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugin/skills/muggle-repair/SKILL.md:20
- **MCP server unresponsive** — report the error and suggest restarting the session.
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugin/skills/muggle-status/SKILL.md:33
3. **MCP server** — call `muggle-local-check-status` to verify the server is responsive. Report auth state (authenticated, email, token expiry).
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
CRITICALPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
plugin/skills/muggle-test-feature-local/SKILL.md:3
description: Run a real-browser end-to-end (E2E) acceptance test against localhost to verify a feature works correctly — signup flows, checkout, form validation, UI interactions, or any user-facing be
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
internal/skill-routing-eval/run.py:88
ap = argparse.ArgumentParser(description="Run the skill-routing eval (chunked, guarded).")
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/mcps/src/shared/open-browser.ts:63
exec(command, (error) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
scripts/postinstall.mjs:853
exec(cmd, (error, stdout, stderr) => {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/cli/login.ts:115
console.log(`  Token expires: ${expiresDate.toLocaleString()}`);
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
muggle-local-last-host-clear, muggle-local-last-project-clear, muggle-remote-action-script-delete, muggle-remote-auth-api-key-revoke, muggle-remote-auth-logout, muggle-remote-prd-file-delete, muggle-r
Why it matters. 12 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/skill-eval.yml:3
# Blocking on every PR to master: the gate eval (behavioral preference-gate
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
.github/workflows/skill-eval.yml:4
# contract) and the routing eval (skill descriptions route the right queries).
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/agent-gate-eval/src/agent-definition.ts:6
import { MODEL_ALIASES } from "../../skill-gate-eval/src/constants.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/agent-gate-eval/src/harness.ts:35
import { ASK_QUESTION_TOOL } from "../../skill-gate-eval/src/constants.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/agent-gate-eval/src/harness.ts:36
import { buildMockMcpServer } from "../../skill-gate-eval/src/mock-mcp.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/agent-gate-eval/src/run.ts:27
} from "../../skill-gate-eval/src/concurrency.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
internal/agent-gate-eval/src/run.ts:31
} from "../../skill-gate-eval/src/constants.js";
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
src/test/skills/pr-followup-monitor-first-recovery.test.ts:63
it("gates on the watch-heartbeat liveness beacon", () => {
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
src/test/skills/pr-followup-reconcile-hook.test.ts:151
it("reconcile.md scopes the log beacon to tick lines — logging is not polling", () => {
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, applicationinsights, axios, commander, open, sigstore, ulid, uuid
Why it matters. 25 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/mcps/package.json
vitest, typescript
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
packages/workflows/package.json
vitest, typescript
Why it matters. 2 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOPrompt injection · prompt.conditional_escalation · CWE-94, CWE-1427
plugin/skills/muggle-test-regenerate-missing/SKILL.md:196
Only if the user explicitly asks for a status check, call `muggle-remote-wf-get-ts-gen-latest-run` for each runtime ID and report progress. **Do not poll on a tight loop by default** — the dispatch st

Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.

Audited 2026-10-11 · audit v0.4.1 · source sha 81fb27bbb3f2full audit observations/trust-audit/mcp-server/multiplex-ai__muggle-ai-works.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-1181fb27bbb3f2BLOCKF44first audit
06

Questions

What is the @muggleai/works MCP server?

Your AI coding agent writes code fast — we make sure the web product actually works. Paste a URL, the agent clicks through signup/checkout/dashboards like a real user, reports failures with screenshots. Currently web only. Works with Claude Code, Cursor, Codex, Windsurf.

What tools does @muggleai/works expose?

104 in total: 50 read-only, 42 that write, and 12 that can delete or overwrite (muggle-local-last-host-clear, muggle-local-last-project-clear, muggle-remote-action-script-delete, muggle-remote-auth-api-key-revoke, muggle-remote-auth-logout). Every one is listed on this page with its risk.

Is @muggleai/works safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (44/100) and found 6 critical or high issues in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 12 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @muggleai/works need?

It reads AUTH0_AUDIENCE, AUTH0_CLIENT_ID, AUTH0_DOMAIN and AUTH0_SCOPE from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @muggleai/works run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @muggleai/workflows at 0.0.0.

How current is this page?

The grade is for one exact copy of the source (81fb27bbb3f2), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement