# nth Labs > nth Labs tests a web product the way a first-time customer meets it: a real browser measures what breaks, a ledger keeps every finding with an id across sessions, and verification settles whether a fix held. Coding agents use it over MCP to find what to fix, fix it, and prove the fix. Every answer says how it is known (measured in a browser, simulated, a model's reading, or declared by a person), and a number nobody measured is reported as unknown, never as zero. ## Connect - Remote MCP endpoint: https://console.nthlabs.dev/mcp (streamable HTTP; a bearer token from the console's Settings, or OAuth). Claude Code: `claude mcp add --transport http nth-labs https://console.nthlabs.dev/mcp` - Local MCP over stdio, from a checkout: `node cli.cjs mcp` - Full tool reference, generated from the same table the server lists: https://console.nthlabs.dev/llms-full.txt ## Start here 1. labs_status: where things stand, and what every tool costs, before you spend anything. 2. labs_check: measured defects on the live product, filed with ids. ## The fix loop 1. labs_findings: what is open, already in fix order (what costs the most first). 2. labs_fix_prompt { id }: the change, the page and element, and the acceptance call. 3. Edit the code. 4. labs_verify { id }: re-measures that one finding in a real browser. fixed, not-reproduced or still-open, with why. ## Guard what works labs_elements (selectors proven to resolve), labs_expect { ..., arm: true } (a claim a browser settles, kept as a guard), labs_guard (runs every guard again before you ship). ## What a person asks, and the call that answers it - "test my app": labs_use_project {"project":"","url":"
"}, then labs_check, on a fresh install - "where do things stand": labs_status {} - "what should I fix": labs_findings {"limit":5}, then labs_fix_prompt { id } - "fix everything": labs_fix_prompt {"all":true} - "is it fixed": labs_verify {"id":""} - "find bugs for free": labs_check {}, then labs_explore to use every form and control, which asks a model only with a paid plan - "will it sell": labs_validate {}, then labs_lab for the revenue band - "what changed": labs_brain {"op":"changes","since":""}, then labs_trend { digest: "" } for the weekly digest - "brief me before I work on it": labs_brain_context {"task":""} - "check this page says X": labs_expect {"surface":"","expect":"text-present","value":"X"}, then arm: true to keep it true - "keep it from breaking again": labs_guard {} - "judge the design yourself": labs_review {}, then labs_file_findings - "is my run done": labs_run {"run_id":""} ## Costs - Free (no model called): labs_validate, labs_lab, labs_lab_save, labs_status, labs_trend, labs_findings, labs_fix_prompt, labs_brain, labs_brain_context, labs_brain_note, labs_run, labs_check, labs_assist, labs_trips, labs_elements, labs_expect, labs_guard, labs_review, labs_file_findings, labs_define_flow, labs_compare, labs_projects, labs_use_project, labs_stop. - Uses your plan's validations (a model runs on our side, which your own assistant's subscription does not cover): labs_ask_person, labs_walk, labs_react, labs_crowd, labs_strategy, labs_audit, labs_wander, labs_gate. - Depends on the case (each description says when it spends): labs_explore, labs_verify, labs_rehearse, labs_ads. Long runs answer with a run_id to poll with labs_run about 15 seconds after they start, or with the whole result when they end sooner, which can take up to 25 seconds while the run's browser closes. One run at a time per account. ## Context pack - https://console.nthlabs.dev/api/context.md?project=&task=: the same briefing labs_brain_context returns, as Markdown, for a prompt or a file. Read-only; send the same bearer token as the MCP endpoint (or a console session). Optional `budget` in tokens, 80 to 8000. ## Optional - https://console.nthlabs.dev/llms-full.txt: every tool with when to use it, what it costs, its parameters and one example call.