MCP Reference
All tools and slash commands from the Dinho MCP server.
Typical workflow
dinho_list_projects → discover existing projects and their IDs
dinho_create_project → create a project (if needed)
dinho_create_credentials → create placeholders for test credentials
dinho_create_test → create the test (auto dry-run validation)
dinho_run_test → trigger an immediate run
dinho_get_test_status → read the result and get a fix suggestion if it failed
dinho_update_test → apply the fix to the script
Tools
dinho_list_projects
List all projects for the account. Always call this first — returns the project IDs required by nearly every other tool, plus the current plan and test limit.
Parameters: none
dinho_create_project
Create a new Dinho project. Use when the user has no projects yet, or wants to monitor a separate second URL.
Parameters:
name(required) — Project name (e.g."My App")baseUrl(required) — Root URL of the monitored app — must start withhttps://
dinho_create_credentials
Create credential placeholders for a project. Call as soon as you know the test will need login — before writing the script — so the user can fill the values in the dashboard in parallel.
Each label stores exactly one value (e.g. EMAIL stores only the email, PASSWORD stores only the password). Labels must match ^[A-Z][A-Z0-9_]{0,62}$.
Parameters:
projectId(required) — Project ID (obtained fromdinho_list_projects)labels(required) — Array of labels to create (e.g.["EMAIL", "PASSWORD"])
Returns the dashboard URL for the user to fill in the values.
dinho_list_credentials
List all credentials for a project and their fill status (pending / set). Use to check which labels already exist before writing a script, or to show the user what still needs a value.
Parameters:
projectId(required) — Project ID
dinho_create_test
Create a new Playwright test. The script is always validated via an automatic dry-run before saving — tests are never created without a passing dry-run.
If the script references credentials with pending status, the tool creates the placeholders, returns the dashboard URL, and stops. Ask the user to fill the values and notify you when done, then retry.
Parameters:
projectId(required) — Project ID (obtained fromdinho_list_projects)name(required) — Descriptive test namedescription(required) — What the test verifies (one sentence)baseUrl(required) — Must start withhttps://playwrightScript(required) — Playwright script body (pagevariable already in scope)schedule(optional) —"1h"|"6h"|"24h"— use"1h"for critical flows (default:"24h")tags(optional) — Array of strings for grouping tests
Example script:
await page.goto("https://myapp.com/login");
await page.fill('[name="email"]', credentials.EMAIL);
await page.fill('[name="password"]', credentials.PASSWORD);
await page.click('[type="submit"]');
await expect(page).toHaveURL("/dashboard");
Selector preference order: data-testid > role > visible text. Use waitForSelector/waitForURL, never setTimeout.
dinho_list_tests
List all tests in a project with status, last run time, and 7-day failure count.
Parameters:
projectId(required) — Project IDstatus(optional) —"passing"|"failing"|"pending"|"never_ran"limit(optional) — Number of results (default: 20, max: 100)
dinho_run_test
Trigger an immediate test run. Use after updating a script to confirm the fix worked.
Parameters:
testId(required) — Test IDwaitForResult(optional) — Wait up to 60s for the result (default:false)
dinho_run_until_pass
Run a test repeatedly, automatically fixing the script on each failure, until it passes or reaches the maximum number of attempts. Best for iterative debugging.
Parameters:
testId(required) — Test IDmaxAttempts(optional) — Max run+fix iterations (default: 3, max: 5)explainEachAttempt(optional) — Return a message after each attempt (default:false)
dinho_get_test_status
Get the full status and last failure details, including a screenshot and an AI-generated fix suggestion.
Parameters:
testId(required) — Test IDincludeHistory(optional) — Include the last 10 runs for trend analysis (default:false)
Returns suggestedFixPrompt — paste into your AI editor to fix the failing test.
dinho_update_test
Update an existing test — script, schedule, name, description, or enabled state.
Parameters:
testId(required) — Test IDname(optional) — New namedescription(optional) — New descriptionplaywrightScript(optional) — Fixed scriptschedule(optional) —"1h"|"6h"|"24h"enabled(optional) —falseto disable without deleting
dinho_pause_tests
Pause all tests in a project for 1–60 minutes. Use before a deployment to avoid false alerts. Tests resume automatically when the pause expires.
Parameters:
projectId(required) — Project IDdurationMinutes(required) — Pause duration in minutes (1–60)reason(optional) — Why you're pausing (e.g."Deploying v2.3.0")
dinho_delete_test
Permanently delete a test and all its run history. Irreversible — prefer dinho_update_test with enabled: false if you might want to re-enable later.
Parameters:
testId(required) — Test IDconfirm(required) — Must betrueto proceed. Never passtruewithout explicit user confirmation.
Slash commands
Slash commands are guided conversational flows available in editors that support MCP prompts (Claude Code, Codex, Cursor, Antigravity).
| Command | What it does |
|---------|--------------|
| /dinho-create-test | Asks the right questions, writes the script, and validates — conversational mode |
| /dinho-fix-test | Diagnoses a failing test, proposes a diff, and confirms before saving |
| /dinho-onboarding | Sets up Dinho from scratch: project, test account, flag, and first test |
| /dinho-diagnose | General diagnosis: lists all failing tests and proposes fixes |
| /dinho-setup-project | Creates a test account, is_synthetic_test flag, and 3 critical tests at once |
Examples in Claude Code:
/dinho-create-test url=https://myapp.com feature=login
/dinho-fix-test testId=550e8400-e29b-41d4-a716-446655440000
/dinho-onboarding