Muggle WorksBLOCK
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.
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_AUTHflag. - 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.
81fb27bbb3f2OBSERVED · 2026-10-11Connect
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 mcp add works -- npx -y @muggleai/[email protected]
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.
| Tool | Risk | Description |
|---|---|---|
muggle-local-cancel-execution | read | Cancel an active test generation or replay execution. |
muggle-local-check-status | read | Check the status of Muggle Test Local. This verifies the connection to web-service and shows current session information. |
muggle-local-last-host-clear | destructive | Remove the cached last-used host for this repo. After this, |
muggle-local-last-host-get | read | Get 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-set | write | Save the user |
muggle-local-last-project-clear | destructive | Remove the cached last-used project for this repo. After this, |
muggle-local-last-project-get | read | Get 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-set | write | Save the user |
muggle-local-list-sessions | read | List all stored testing sessions. Shows session IDs, status, and metadata for each session. |
muggle-local-preferences-set | write | Set a Muggle AI user preference. Preferences control automation behavior (auto-login, show browser, suggest test cases, etc.). |
muggle-local-run-result-get | write | Get detailed information about a run result including screenshots and action script output. |
muggle-local-run-result-list | write | List run results (test generation and replay history), optionally filtered by cloud test case ID. |
muggle-local-run-steps-get | write | Read a local run |
muggle-local-telemetry-event-emit | read | Emit a structured failure-mode telemetry event recording how a Muggle Test skill |
muggle-local-telemetry-skill-emit | read | Emit a client telemetry event recording that a Muggle Test skill was invoked. Each muggle-* skill |
muggle-local-test-script-get | read | Get details of a locally generated test script including action script steps. |
muggle-local-test-script-list | read | List locally generated test scripts, optionally filtered by cloud test case ID. |
muggle-remote-action-script-delete | destructive | Permanently 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-get | read | Get 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-create | write | Create a new API key for the authenticated user. Requires existing authentication. |
muggle-remote-auth-api-key-get | read | Get details of a specific API key by ID. |
muggle-remote-auth-api-key-list | read | List all API keys for the authenticated user. Shows key metadata but not the secret values. |
muggle-remote-auth-api-key-revoke | destructive | Revoke 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-login | write | Start 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-logout | destructive | Log out and clear stored credentials. |
muggle-remote-auth-poll | read | Poll 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-status | read | Check current authentication status. Shows if you |
muggle-remote-bulk-preview-job-cancel | read | Request 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-get | read | Get 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-list | read | List bulk-preview jobs for a project, optionally filtered by status or kind. |
muggle-remote-local-run-upload | write | Upload a locally executed run (generation/replay) to cloud workflow records. |
muggle-remote-prd-file-delete | destructive | Delete a PRD file from a project. |
muggle-remote-prd-file-list-by-project | read | List all PRD files associated with a project. |
muggle-remote-prd-file-upload | write | Upload a PRD file to a project. File content should be base64-encoded. |
muggle-remote-project-create | write | Create 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-delete | destructive | Delete a project and all associated entities. This is a soft delete. |
muggle-remote-project-get | read | Get details of a specific project by ID. |
muggle-remote-project-list | read | List 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-get | read | Get a summary of test results for a project. |
muggle-remote-project-test-runs-summary-get | read | Get 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-get | read | Get 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-update | write | Update an existing project |
muggle-remote-recommend-cicd-setup | read | Get recommendations and templates for CI/CD integration. |
muggle-remote-recommend-schedule | write | Get recommendations for test scheduling based on project needs. |
muggle-remote-report-cost-query | read | Query cost/usage data for a project over a date range. |
muggle-remote-report-final-generate | read | Generate a final test report for a project. |
muggle-remote-report-preferences-upsert | write | Update report delivery preferences for a project. |
muggle-remote-report-stats-summary-get | read | Get report statistics summary for a project. |
muggle-remote-secret-create | write | Create a new secret (credential) for a project. |
muggle-remote-secret-delete | destructive | Delete a secret from a project. |
muggle-remote-secret-get | read | Get details of a specific secret. The secret value is not returned for security. |
muggle-remote-secret-list | read | List all secrets for a project. Secret values are not returned for security. |
muggle-remote-secret-update | write | Update an existing secret. |
muggle-remote-test-case-ancestors-get | read | Resolve a test case |
muggle-remote-test-case-create | write | Create a new test case for a use case. |
muggle-remote-test-case-delete | destructive | Delete a test case by ID. This is a soft delete. |
muggle-remote-test-case-generate-from-prompt | read | Generate E2E acceptance test cases from a plain-English description of what to test — e.g., |
muggle-remote-test-case-get | read | Get details of a specific test case. |
muggle-remote-test-case-list | read | List 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-case | read | List test cases for a specific use case. |
muggle-remote-test-case-update | write | Directly update an existing test case |
muggle-remote-test-plan-graph-rebuild | read | Queue a full rebuild of a project |
muggle-remote-test-script-delete | destructive | Delete a test script by ID. This is a soft delete; the test case it belongs to is not affected. |
muggle-remote-test-script-get | read | Get details of a specific test script. |
muggle-remote-test-script-list | read | List 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-approve | read | Approve (graduate) selected use case candidates into actual use cases. |
muggle-remote-use-case-create | write | Create 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-prompts | write | Create one or more use cases from natural language instructions. |
muggle-remote-use-case-delete | destructive | Delete a use case by ID. Soft delete, and it cascades: the use case |
muggle-remote-use-case-discovery-memory-get | read | Get the use case discovery memory for a project, including all discovered use case candidates. |
muggle-remote-use-case-get | read | Get details of a specific use case by ID. |
muggle-remote-use-case-list | read | List 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-preview | read | Preview a use case generated from a natural language instruction without saving. |
muggle-remote-use-case-update | write | Directly update an existing use case |
muggle-remote-use-case-update-from-prompt | write | Update an existing use case by regenerating its fields from a new instruction. |
muggle-remote-user-feedback-create | write | Submit user feedback on a generated action script — either the whole script (targetType= |
muggle-remote-user-feedback-delete | destructive | Soft-delete a user feedback entry by ID. Returns 204 on success. |
muggle-remote-user-feedback-list | read | List 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-method | write | Set the saved payment method used by wallet auto top-up. |
muggle-remote-wallet-auto-topup-update | write | Update wallet auto-topup settings. |
muggle-remote-wallet-payment-method-list | read | List saved payment methods. |
muggle-remote-wallet-pm-create-setup-session | write | Create a Stripe setup session to add a payment method. |
muggle-remote-wallet-topup | write | Create a Stripe checkout session to purchase a token package. |
muggle-remote-wf-get-latest-ts-gen-by-tc | read | Get the latest test script generation runtime for a specific test case. |
muggle-remote-wf-get-prd-process-latest-run | write | Get the latest run status of a PRD file processing workflow. |
muggle-remote-wf-get-replay-bulk-batch-summary | write | Get the summary of a bulk replay run batch. |
muggle-remote-wf-get-tc-detect-latest-run | write | Get the latest run status for a test case detection workflow runtime. |
muggle-remote-wf-get-ts-gen-latest-run | write | Get the latest run status for a test script generation workflow runtime. |
muggle-remote-wf-get-ts-replay-bulk-latest-run | write | Get the latest run status for a bulk test script replay workflow runtime. |
muggle-remote-wf-get-ts-replay-latest-run | write | Get the latest run status for a test script replay workflow runtime. |
muggle-remote-wf-list-tc-detect-runtimes | read | List test case detection workflow runtimes. |
muggle-remote-wf-list-ts-replay-bulk-runtimes | read | List bulk test script replay workflow runtimes. |
muggle-remote-workflow-cancel-run | write | Cancel a running workflow run. |
muggle-remote-workflow-cancel-runtime | read | Cancel a workflow runtime and all its runs. |
muggle-remote-workflow-get-website-scan-latest-run | write | Get the latest run status for a website scan workflow runtime. |
muggle-remote-workflow-list-website-scan-runtimes | read | List website scan workflow runtimes. |
muggle-remote-workflow-start-prd-file-process | write | Start a PRD file processing workflow to extract use cases. |
muggle-remote-workflow-start-test-case-detection | write | Start a test case detection workflow to generate test cases from use cases. |
muggle-remote-workflow-start-test-script-generation | write | Start a test script generation workflow. |
muggle-remote-workflow-start-test-script-generation-bulk | write | Start a bulk test script generation workflow to generate scripts for multiple test cases in a single request. |
muggle-remote-workflow-start-test-script-replay | write | Start a test script replay workflow to execute a single test script. |
muggle-remote-workflow-start-test-script-replay-bulk | write | Start a bulk test script replay workflow to execute multiple test scripts. |
muggle-remote-workflow-start-website-scan | write | Scan 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-x | read | desc |
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.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (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)
- **MCP server unresponsive** — report the error and suggest restarting the session.
3. **MCP server** — call `muggle-local-check-status` to verify the server is responsive. Report auth state (authenticated, email, token expiry).
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
ap = argparse.ArgumentParser(description="Run the skill-routing eval (chunked, guarded).")
exec(command, (error) => {exec(cmd, (error, stdout, stderr) => {console.log(` Token expires: ${expiresDate.toLocaleString()}`);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
# Blocking on every PR to master: the gate eval (behavioral preference-gate
# contract) and the routing eval (skill descriptions route the right queries).
import { MODEL_ALIASES } from "../../skill-gate-eval/src/constants.js";import { ASK_QUESTION_TOOL } from "../../skill-gate-eval/src/constants.js";import { buildMockMcpServer } from "../../skill-gate-eval/src/mock-mcp.js";} from "../../skill-gate-eval/src/concurrency.js";
} from "../../skill-gate-eval/src/constants.js";
it("gates on the watch-heartbeat liveness beacon", () => {it("reconcile.md scopes the log beacon to tick lines — logging is not polling", () => {@modelcontextprotocol/sdk, applicationinsights, axios, commander, open, sigstore, ulid, uuid
vitest, typescript
vitest, typescript
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.
81fb27bbb3f2full audit observations/trust-audit/mcp-server/multiplex-ai__muggle-ai-works.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 81fb27bbb3f2 | BLOCK | F | 44 | first audit |
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.