Skip to main content
TinyAgent takes a URL and a goal written in plain English, works through the site in a live browser, and returns a structured result. Two parts share the work: TinyFish’s web-native model decides what to do next on each page, and the agent around it carries out those decisions in the browser and manages the run.

The model decides, the agent acts

Each step of a run is a loop. The model looks at the page, picks the element and the action that move the goal forward, and the agent performs that action in the browser. The page changes, and the model reads it again. The split exists because operating a website is an execution job, not a reasoning job. A general-purpose model can plan almost anything, but on a live site the hard part is narrower and repeats every step: find the right control on a page that changed last week, act on it, check what happened, and do it again dozens of times without losing track. The model inside TinyAgent is built only for that job. It reads the page as meaning, not as raw HTML or pixels, so each step carries what that step needs instead of the whole page.
TinyAgent isn’t a general-purpose chatbot with a browser attached. Keep using the assistant or agent you already have for conversation and planning, and hand TinyAgent the work that has to happen on a website: logging in, filling forms, paging through results, and extracting data.

One run, step by step

The quick start sends TinyAgent to https://scrapeme.live/shop with the goal “Extract the first 2 product names and prices.” When you stream the run, each event maps to part of the loop above. To see the decisions as they happen, print each PROGRESS event’s purpose: Python
TypeScript
The printed purposes are the same trail you see in the Playground, and they’re the first place to look when a run stops early. Here are the steps recorded for a real run: linear.app/pricing with the goal “Extract all pricing plan details from this page including plan name, monthly price, and what’s included” and an output schema. It took 5 steps and 47 seconds. The model named every step itself, from what it saw on the page at that moment. Nothing in the goal told it to navigate first or to extract twice.

How it connects

Everything else in TinyAgent shapes this loop: what the model works toward, how long it may keep going, and what comes back.

Runs

Run lifecycle, statuses, and what COMPLETED means

Agent Mode, Max Steps, and Max Duration

Default vs Strict mode, step and time limits

Configure Agent Mode and Max Steps

Set the limits that bound the loop

Endpoints

Request schema and stream event types