Skip to main content
Early access: not yet enabled for every account. Check with GET /v1/website-tools/status; while the feature is off, the build endpoints answer 503.
Some sites your agents need have no integration at all: a supplier portal, a public registry, a club’s booking page. A website tool fills that gap. You give Danube a URL and a task in plain words. Danube opens the site in a browser, works out how to do the task, writes a script, tests it, and publishes it as a private tool that belongs to you. From then on the tool is called like any other Danube tool (execute_tool over MCP, tools.execute in the SDKs, danube execute in the CLI). A call runs the saved script with no model in the loop, so it takes seconds.

What it covers

  • Read-only. A website tool reads and returns data. It does not submit forms that change anything, buy, post or delete.
  • Sites with a login. Save a login for the site first (username, password and, if the account uses one, its authenticator secret). Builds and runs sign in with it, and generate authenticator codes themselves. The login is stored encrypted and never returned.
  • SMS and email codes. When a site sends a one-time code by text or email, the build pauses and asks you for it. A call to the finished tool cannot wait for a code, so for a site that texts a code at every sign-in, set up an authenticator app instead and save its secret with the login.
  • Questions during a build. A build can stop on a question for you (status waiting_input): which of two tables you meant, which store, or a sign-in code. Answer it and the build carries on.
  • Automatic repair. When a run fails because the site changed, Danube rebuilds the tool on its own (a repair build, with repair_of set to the tool) and saves a new version. Your tool id stays the same.

How a build goes

Building again with the same name saves a new version of the same tool.

From an agent (MCP)

Agents connected to https://mcp.danubeai.com/mcp get four tools: A typical run: build_website_tool, then get_website_build until the status is succeeded (answering any question on the way with answer_website_build), then execute_tool with the new tool_id.

Answers

answers is an object keyed by question id:

From the dashboard

Go to Tools > Publish tool > Build one for a website (/dashboard/tools/website). Enter the URL and the task, follow the build, answer questions inline, and manage saved logins on the same page.

From the SDKs

Both SDKs also have status, get_build / getBuild, list_builds / listBuilds, cancel, list_logins / listLogins and delete_login / deleteLogin. Building with sign_in when no login is saved for the site raises LoginRequiredError, which carries the site’s host.

From the CLI

danube website login never takes the password as an argument. When stdin is not a terminal it reads the password from the first line and an optional authenticator secret from the second.

REST

All routes are under https://api.danubeai.com/v1/website-tools and take the danube-api-key header. POST /builds answers 400 for a URL that is not a public web address, 429 over the daily limit, 503 while the feature is off, and 409 with {"error": "login_required", "service_id", "host", "message"} when sign_in is set and no login is saved for the site.

Limits

  • 5 builds a day per account. Repair builds Danube starts on its own do not use your allowance.
  • A build takes minutes. Poll with wait_seconds rather than in a tight loop.
  • A run takes seconds, since it replays the saved script without a model.
  • Only public web addresses can be built; private and local addresses are refused.
  • Sites that block automated browsers may fail to build.