Capability: Strict mode +
output_schema (Strict mode is beta — enroll at agent.tinyfish.ai/beta to use it)localhost.

TinyAgent logs in to a demo shop, adds a backpack to the cart, checks out, and confirms the order page — returning passed: true.
Steps
- Give the agent a URL it can reach. Use your preview deploy’s URL, or open a tunnel to your local server.
- Write the test as steps plus an expected result. Number the steps, use exact values, end with “Expected result: …”, and tell the agent to stop and report if any step can’t be done as written.
- Run it in Strict mode with a pass/fail schema. Strict mode stops at the first surprise instead of working around it — which is what you want when the surprise is a bug.
- Check
passed, not the run status. If it failed, open the run in the dashboard to see what happened at each step.
Get a URL the agent can reach
- Preview deploy
- localhost
Use the preview URL your host gives you (Vercel, Netlify, etc.). If Vercel Deployment Protection is on, add your bypass secret to the URL — it’s under Project Settings → Deployment Protection → Protection Bypass for Automation:
Run the test
Beta:
agent_config.mode: "strict" and max_steps are both beta — enroll at agent.tinyfish.ai/beta to use either. A non-beta request returns 403 FORBIDDEN for mode: "strict" just as it does for max_steps; max_duration_seconds alone is generally available, no enrollment needed.- Python
- TypeScript
Tip — from Claude Code, Cursor, ChatGPT or Claude: paste your preview or tunnel URL with the steps, e.g. “Use TinyFish to test sign-up on https://…: create an account with test@example.com and check the dashboard loads.” See Run TinyAgent From ChatGPT or Claude or MCP Integration.
Common Mistakes
Sending http://localhost:3000 as the URL
Sending http://localhost:3000 as the URL
The agent’s browser runs in the cloud, so
localhost points at that cloud machine, not yours — the run reports the site can’t be reached. Open a tunnel and use its https:// URL.The run sees a Vercel login page instead of your app
The run sees a Vercel login page instead of your app
Vercel Deployment Protection is blocking the agent. Add
x-vercel-protection-bypass and x-vercel-set-bypass-cookie=true to the URL, using the Protection Bypass for Automation secret.The run is COMPLETED, but the test failed
The run is COMPLETED, but the test failed
COMPLETED means the browser ran, not that your app works. Always check result.passed — see Runs.The agent works around the bug and reports a pass
The agent works around the bug and reports a pass
In default mode the agent tries alternatives when something looks wrong — a missing button, an unexpected popup — which can hide the bug you’re testing for. Use
mode: "strict" so it stops instead. See Agent Mode, Max Steps, and Max Duration.failed_step is filled in even though the test passed
failed_step is filled in even though the test passed
Without an instruction, the agent may fill every field in the schema. Make
failed_step nullable and add “Set failed_step to null if every step passed” to the goal, as in the sample.Yesterday's tunnel URL stopped working
Yesterday's tunnel URL stopped working
Quick tunnels get a new URL every time they restart. Copy the new one into your test. If your app checks allowed origins or OAuth redirect URLs, add the tunnel URL there too.
Related
Agent Mode, Max Steps, and Max Duration
Why Strict mode suits tests
Runs
Why COMPLETED doesn’t mean your test passed
Get a TinyAgent Run as Structured JSON
More on
output_schemaRun TinyAgent Across Multiple URLs
Run a whole test suite at once