Skip to content

Run a cloud audit

A cloud audit drives a real screen reader against your saved journeys on a dedicated virtual machine. It is asynchronous: you start it, poll it, and read the report when it finishes.

You need an organization id, a project id, and at least one saved journey.

list_journeys(project_id)

If the project has none, create one — a journey is a named user flow, described in ordered steps:

create_journey(
project_id,
name: "Checkout",
description: "Buy one item as a guest",
steps: ["Open the product page", "Add to cart", "Complete checkout as a guest"]
)
start_agentic_audit(organization_id, project_id, journey_ids: ["jrn_…"])

Omit journey_ids to run every journey in the project. The call returns a cloud run request id, not a run id:

Cloud audit requested. Request ID: crr_…
A dedicated VM is booting to run the audit — this takes ~4–5 minutes before the run appears.
get_audit_progress(organization_id, cloud_run_request_id)

While the VM boots, this reports that there is no run yet. That is the normal state, not an error — keep polling. If nothing appears after about six minutes, the VM failed to start.

Once the audit starts, the response is the run itself, with a status and violation counts. Its id is the run id — a different value from the request id, and the one the next two tools take. Keep both: the request id is what you poll with, the run id is what you fetch the report with.

Keep polling while the status is queued or running. The run is finished on any of completed, completed_with_errors, failed, or interrupted — note that completed_with_errors means partial coverage with a readable report, so do not wait for completed alone.

Once the run has finished (completed or completed_with_errors):

get_agentic_audit_report(organization_id, audit_id: "<run id>")

The report contains the violations found, each with the element it sits on, the criterion it maps to, its impact, and — where one was captured — a screenshotKey.

get_violation_screenshot(organization_id, screenshot_key: "<the violation's screenshotKey>")

The field in the report is screenshotKey; the argument here is screenshot_key. Pass the one into the other.

This returns an image, not text, so an agent that supports images can look at the failure directly.

cancel_audit(organization_id, run_id)

The stop is a request, not an immediate kill. Poll get_audit_progress until the status reads interrupted to confirm it actually stopped.

list_project_run_history(organization_id, project_id, first, after)

This merges two kinds of entry: the cloud audits Binclusive drove (AgenticRun) and the static scans your own CI reported through b8e ci (CliScan). Each entry names its kind in __typename. The list is paginated because CI history grows a row per push — see Page through large results.

For the exact arguments of every tool here, see the audit tool reference.