Web automation API
Automate any website.It keeps working when the site changes.
Sign-ins, forms, downloads and data, built once. When a page moves a button, Kaabist finds it again, finishes the run, and asks you to approve the fix.
claude mcp add --transport http kaab https://mcp.kaab.ist/mcp- Free to start
- EU region
- Signed webhooks
acmeRuns4182
Live- sessionacme restored · signed in0.2 s
- goto/invoices0.9 s
- click#export-btn not found · page changed0.4 s
- healedbutton "Export" · fix waits for approval1.1 s
- extract2 fields · schema valid0.3 s
- webhooksigned · 2000.1 s
{
"total": {
"amount": 4210.00,
"currency": "EUR"
},
"due": "2026-11-15"
}status succeededheals 1duration 3.0 s
- Claude Code
- Codex
- Cursor
- TypeScript SDK
- Python SDK
- Go SDK
- kaab CLI
- Webhooks
Why it doesn’t break
Most automation breaks the week a site ships a redesign. Kaabist is built for the weeks after: it resumes where it stopped, never repeats a payment, and runs the same program however you built it.
- Fig 0.1
Resumes where it stopped
The site asks for a code. You get a link, type it, and the run picks up at the same step.
Learn more about Resumes where it stopped - Fig 0.2
Never submits twice
A crash halfway through a payment never pays twice. The run stops at the fence and you decide.
Learn more about Never submits twice - Fig 0.3
Built your way
In the visual builder, by your coding agent, or as JSON. The same program, the same guarantees.
Learn more about Built your way
Self-healing
Sites change. Your automation doesn’t.
Every step keeps a picture of what it clicked. When the page moves, Kaabist ranks what is there now, uses the closest match to finish the run, and keeps the old locator until you approve the new one.
How healing workslast run · Oct 30snapshot
today · Nov 2snapshot
candidates for step 2match
- role=button name="Export"0.97
- text="Export"0.91
- .toolbar button:last-child0.64
- a[href*=export]0.22
Signed webhooks
Every result reaches your server, retried until it lands.
Take over anytime
Watch a run live and step in when you want.
Learn more about Take over anytimeTyped data
Prices, dates and links come back parsed and checked, with a warning when a value looks wrong.
Warned before it breaks
Canary runs and fill rates notice a changed site before your own runs fail.
Learn more about Warned before it breaksPopups out of the way
Cookie banners, modals and product tours are closed before they block a click.
Dry runs and test keys
Try a program up to its first submit, or with test keys on their own small daily quota.
Batches
Send up to 1,000 inputs in one call and follow them as one batch.
Finds the hidden API
Spots the JSON behind the page and skips the browser next time.
Learn more about Finds the hidden APIBring your own
Use your own proxies, LLM or captcha solver, and that line leaves your bill.
Stays signed in
Logs in once, runs on a schedule, and tells you only when something changed.
Learn more about Stays signed inWith your coding agent
One line to connect. Your agent does the rest.
Your agent writes the program, tests it and schedules it. What you get back is a versioned program you can read, diff and run from any SDK.
Connect over MCPterminalclaude code
$ claude mcp add --transport http kaab https://mcp.kaab.ist/mcp ✓ kaab connected > Every Monday, get the total and due date from portal.northwind.example kaab opened the portal, signed in with session acme kaab wrote supplier-invoices@1 · 3 steps kaab test run passed · schema valid kaab scheduled Mondays 07:00 Europe/Istanbul
supplier-invoices@1program.json
{ "kaab": "1", "name": "supplier-invoices", "options": { "session": "acme" }, "steps": [ { "goto": "https://portal.northwind.example/invoices" }, { "click": "#export-btn" }, { "extract": { "total": { "selector": "#sum-total", "type": "money" }, "due": { "selector": "#sum-due", "type": "date" } } } ] }
Tech specs
What’s inside the box. The limits you would ask about before you build on it.
- tiers: http, browser, stealth
- 3
- steps per program
- 200
- per download, response or PDF
- 64 MB
- inputs per batch call
- 1,000
- Regions
- eu, us
- Engines
- Chromium; Firefox on the stealth tier
- Program size
- 256 KB, nesting depth 3
- Results
- JSON response or signed webhook
- SDKs
- TypeScript, Python, Go, CLI, REST, MCP
- Viewport
- 1280 × 800, desktop or mobile profile
Changelog
Recently shipped. The latest four.
Virus scan keeps up with large PDFs
Downloads and PDFs up to 64 MB are scanned before they reach you.
Model tokens priced per model
Input and output tokens show up apart on your bill, each at its model's own price.
64 MB downloads and responses
The cap for downloads, responses and PDFs went up to 64 MB.
Sturdier PDF tables
read_pdf keeps overprinted headers and single-cell rows inside a table, and drops a stray row of column numbers.
Questions
You were going to ask. So here’s the answer.
What does Kaabist do?
It runs your website tasks (signing in, filling in forms, downloading files, pulling out data) and keeps them working when the site changes.
Do I need to write code?
No. Click through the site in the visual builder, or tell your coding agent what you need. If you prefer code, write the program as JSON and use the API, SDKs or CLI.
Can I see and change what it does?
Yes. A program is a list of steps and the same JSON, versioned with a diff. Edit either in the builder and test a step before you publish.
What about 2FA codes?
The run pauses and Kaabist emails a link to you, or to a teammate or customer you choose. Type the code and it continues.
Can a retry submit a form twice?
No. If something crashes mid-submit, Kaabist stops and asks you instead of clicking again.