# Firedrill > Stateful simulation and testing for action-taking AI agents - [Firedrill documentation](https://docs.firedrill.run/index.md): Give your AI agent controlled, stateful Tools and verify what it actually does. - [Quickstart](https://docs.firedrill.run/quickstart.md): Run a complete local drill and inspect its evidence. - [How Firedrill works](https://docs.firedrill.run/concepts/how-it-works.md): Follow an agent action from a repository definition to a verified result. - [Choose a workflow](https://docs.firedrill.run/reference/choose-a-workflow.md): Start with the shortest Firedrill path for the job you have now. - [Tools](https://docs.firedrill.run/concepts/tools.md): Model an agent dependency as callable behavior backed by controlled state. - [Worlds and state](https://docs.firedrill.run/concepts/world-state.md): Understand the isolated environment in which an agent acts. - [Scenarios](https://docs.firedrill.run/concepts/scenarios.md): Define reusable starting conditions without duplicating a world. - [Actors and personas](https://docs.firedrill.run/concepts/actors-personas.md): Separate runtime identity and permissions from human-readable context. - [Drills and runs](https://docs.firedrill.run/concepts/drills-runs.md): Turn an agent task into a repeatable behavioral test. - [Evidence, reset, and reproduction](https://docs.firedrill.run/concepts/evidence-reset.md): Understand why a drill passed, restore its starting state, and rerun it exactly. - [Start local Tools](https://docs.firedrill.run/guides/start-local-tools.md): Choose or create synthetic Tools, run their local backends, and connect an existing agent without changing its production logic. - [Install Tools](https://docs.firedrill.run/guides/install-tools.md): Install and inspect Tool packages from npm, Git, archives, or local paths without running unreviewed lifecycle scripts. - [Create a reusable Tool package](https://docs.firedrill.run/guides/create-tool-package.md): Package a synthetic Tool in your own repository and verify its behavior with the portable conformance suite. - [Organize project files](https://docs.firedrill.run/guides/project-files.md): Keep Tool contracts, starting data, scenarios, targets, and drills reviewable beside your agent code. - [Build Tools with an app](https://docs.firedrill.run/guides/tool-apps.md): Package an optional browser interface that uses the same operations and state as a synthetic Tool backend. - [Import selected data](https://docs.firedrill.run/guides/import-data.md): Preview a bounded JSON or HTTP source, review redactions, and save approved records as scenario data. - [Connect your existing agent](https://docs.firedrill.run/guides/connect-agent.md): Route an agent's existing HTTP, MCP, CLI, or function seam to a local Firedrill world. - [Run your first drill](https://docs.firedrill.run/guides/run-first-drill.md): Connect an existing agent to an isolated world, run a behavioral test, and inspect the resulting evidence. - [Mock dependencies from tests](https://docs.firedrill.run/guides/mock-dependencies.md): Override a Tool, imported function, or SDK method from test code while keeping production agent logic unchanged. - [Control state, faults, and time](https://docs.firedrill.run/guides/control-state-time.md): Start a local world, reset state, override behavior, advance virtual time, and inspect deterministic evidence. - [Save reusable scenarios](https://docs.firedrill.run/guides/reusable-scenarios.md): Turn reviewed Tool state into a repository-owned starting situation for later worlds and drills. - [Deliver callbacks to your application](https://docs.firedrill.run/guides/callbacks.md): Model signed, retryable requests that a synthetic Tool sends to the application under test. - [Test browser-based agents](https://docs.firedrill.run/guides/browser-testing.md): Run optional Playwright-driven browser tests and retain visual evidence alongside world assertions. - [Capture logs and visual evidence](https://docs.firedrill.run/guides/capture.md): Attach logs, screenshots, recordings, and files to a drill result without weakening state-based checks. - [Read drill results](https://docs.firedrill.run/guides/results.md): Understand verdicts, state checks, tool calls, evidence timelines, and local HTML or JUnit reports. - [Run drills in CI](https://docs.firedrill.run/guides/ci.md): Run deterministic behavioral checks, publish JUnit, and retain reports without interactive prompts. - [Use Firedrill from a coding agent](https://docs.firedrill.run/guides/coding-agents.md): Give a coding agent a stable MCP control surface for inspecting, authoring, and running Firedrill projects. - [Author with Firedrill Agent](https://docs.firedrill.run/guides/firedrill-agent.md): Use the optional local authoring agent to inspect a repository and prepare Firedrill source with your own Anthropic key. - [Discover compatible Tools](https://docs.firedrill.run/guides/tool-discovery.md): Search a bundled or independent Tool index without installing or executing its packages. - [Firedrill Cloud](https://docs.firedrill.run/cloud/overview.md): Run the same Firedrill worlds with managed infrastructure, retained evidence, collaboration, and CI integration. - [Projects, builds, and environments](https://docs.firedrill.run/cloud/projects-builds.md): Understand how repository source becomes an immutable hosted build selected by an environment. - [Hosted world sessions](https://docs.firedrill.run/cloud/sessions.md): Create and control one isolated world while your own runner connects an agent through scoped access. - [Runs and retained evidence](https://docs.firedrill.run/cloud/runs-evidence.md): Run drills with a customer-owned agent, retain causal evidence, reproduce exact inputs, and compare outcomes. - [GitHub and CI](https://docs.firedrill.run/cloud/github.md): Connect exact repository revisions, build Firedrill source, and report drill evidence back to pull requests. - [Security model](https://docs.firedrill.run/cloud/security.md): Understand tenant boundaries, scoped credentials, Tool approval, evidence access, and data retention in Firedrill Cloud. - [Glossary](https://docs.firedrill.run/reference/glossary.md): Canonical definitions for Firedrill concepts and result terms. - [Project structure](https://docs.firedrill.run/reference/project-structure.md): Organize reviewable Firedrill source separately from generated worlds and reports. - [Tool package contract](https://docs.firedrill.run/reference/tool-contract.md): Implement the open, versioned package contract for reusable synthetic dependencies. - [Local inspector API](https://docs.firedrill.run/reference/local-inspector-api.md): Embed Firedrill's loopback inspection and drill-control surface in a trusted local client. - [Compatibility policy](https://docs.firedrill.run/reference/compatibility.md): Understand the independent version boundaries for framework packages, Tools, source files, builds, and reports. - [Troubleshooting](https://docs.firedrill.run/reference/troubleshooting.md): Recover from common setup, connection, execution, and report problems. - [CLI overview](https://docs.firedrill.run/cli/overview.md): Use Firedrill locally from an interactive terminal, coding agent, or CI job. - [CLI reference](https://docs.firedrill.run/cli/reference.md): Every local Firedrill command and option, generated from the release-candidate executable. - [Troubleshooting](https://docs.firedrill.run/reference/troubleshooting.md): Recover from common setup, connection, execution, and report problems. - [Discover compatible Tools](https://docs.firedrill.run/guides/tool-discovery.md): Search a bundled or independent Tool index without installing or executing its packages. - [Install Tools](https://docs.firedrill.run/guides/install-tools.md): Install and inspect Tool packages from npm, Git, archives, or local paths without running unreviewed lifecycle scripts. - [Create a reusable Tool package](https://docs.firedrill.run/guides/create-tool-package.md): Package a synthetic Tool in your own repository and verify its behavior with the portable conformance suite. - [SDK overview](https://docs.firedrill.run/sdk/overview.md): Choose the local TypeScript API or a private-preview Cloud control client for TypeScript and Python. - [Local TypeScript SDK](https://docs.firedrill.run/sdk/local-typescript.md): Create local worlds, run drills, inject per-test setup, control state, and verify reports in TypeScript. - [Mock dependencies from tests](https://docs.firedrill.run/guides/mock-dependencies.md): Override a Tool, imported function, or SDK method from test code while keeping production agent logic unchanged. - [Test browser-based agents](https://docs.firedrill.run/guides/browser-testing.md): Run optional Playwright-driven browser tests and retain visual evidence alongside world assertions. - [Cloud SDK for TypeScript](https://docs.firedrill.run/sdk/cloud-typescript.md): Control hosted worlds and run drills while your TypeScript runner continues to own the agent. - [Cloud SDK for Python](https://docs.firedrill.run/sdk/cloud-python.md): Control hosted worlds from synchronous or asynchronous Python code while your runner owns agent execution. - [SDK errors and retries](https://docs.firedrill.run/sdk/errors.md): Handle canonical API errors, transport timeouts, asynchronous operations, and uncertain mutations safely. - [Control API overview](https://docs.firedrill.run/api-reference/overview.md): Use the versioned hosted API for projects, builds, sessions, runs, evidence, CI, and organization controls. - [Authentication](https://docs.firedrill.run/api-reference/authentication.md): Authenticate browser, CLI, service, and CI callers without exposing control authority to the agent under test. - [Exchange verified browser identity for a revocable Firedrill session](https://docs.firedrill.run/api-reference/authentication/exchange-verified-browser-identity-for-a-revocable-firedrill-session.md) - [Exchange verified device identity for a revocable Firedrill CLI session](https://docs.firedrill.run/api-reference/authentication/exchange-verified-device-identity-for-a-revocable-firedrill-cli-session.md) - [Exchange a GitHub Actions OIDC token for an exact-revision CI credential](https://docs.firedrill.run/api-reference/authentication/exchange-a-github-actions-oidc-token-for-an-exact-revision-ci-credential.md) - [List user-managed control credentials](https://docs.firedrill.run/api-reference/authentication/list-user-managed-control-credentials.md) - [Create a developer or service credential with one-time secret reveal](https://docs.firedrill.run/api-reference/authentication/create-a-developer-or-service-credential-with-one-time-secret-reveal.md) - [Revoke one developer or service credential](https://docs.firedrill.run/api-reference/authentication/revoke-one-developer-or-service-credential.md) - [Revoke the current browser or CLI session](https://docs.firedrill.run/api-reference/authentication/revoke-the-current-browser-or-cli-session.md) - [Read the current Firedrill account profile](https://docs.firedrill.run/api-reference/authentication/read-the-current-firedrill-account-profile.md) - [List the current person's browser and CLI access sessions](https://docs.firedrill.run/api-reference/authentication/list-the-current-persons-browser-and-cli-access-sessions.md) - [Sign out one remote browser or CLI access session](https://docs.firedrill.run/api-reference/authentication/sign-out-one-remote-browser-or-cli-access-session.md) - [Read a public evidence-attestation verification key](https://docs.firedrill.run/api-reference/authentication/read-a-public-evidence-attestation-verification-key.md) - [Read public CLI authentication configuration](https://docs.firedrill.run/api-reference/authentication/read-public-cli-authentication-configuration.md): Public WorkOS client ID and hosted onboarding URL. The optional verification origin is explicitly configured, never inferred from a token issuer. No credentials or organization data are returned. - [List organization invitations without exposing provider credentials](https://docs.firedrill.run/api-reference/organizations/list-organization-invitations-without-exposing-provider-credentials.md) - [Invite one organization member through the configured identity provider](https://docs.firedrill.run/api-reference/organizations/invite-one-organization-member-through-the-configured-identity-provider.md) - [List the append-only organization audit history](https://docs.firedrill.run/api-reference/organizations/list-the-append-only-organization-audit-history.md) - [List organization members and their project access count](https://docs.firedrill.run/api-reference/organizations/list-organization-members-and-their-project-access-count.md) - [Revoke one pending organization invitation with exact confirmation](https://docs.firedrill.run/api-reference/organizations/revoke-one-pending-organization-invitation-with-exact-confirmation.md) - [Read the organization policy used for new hosted drill evidence](https://docs.firedrill.run/api-reference/organizations/read-the-organization-policy-used-for-new-hosted-drill-evidence.md) - [Change evidence retention for future hosted drill runs](https://docs.firedrill.run/api-reference/organizations/change-evidence-retention-for-future-hosted-drill-runs.md) - [Read factual hosted usage for an optional closed time window](https://docs.firedrill.run/api-reference/organizations/read-factual-hosted-usage-for-an-optional-closed-time-window.md) - [Read the organization's billing account, subscription, and available catalog](https://docs.firedrill.run/api-reference/organizations/read-the-organizations-billing-account-subscription-and-available-catalog.md) - [Create a provider-hosted billing checkout redirect](https://docs.firedrill.run/api-reference/organizations/create-a-provider-hosted-billing-checkout-redirect.md) - [Create a provider-hosted billing portal redirect](https://docs.firedrill.run/api-reference/organizations/create-a-provider-hosted-billing-portal-redirect.md) - [List organization evidence exports](https://docs.firedrill.run/api-reference/organizations/list-organization-evidence-exports.md) - [Create a bounded organization evidence export](https://docs.firedrill.run/api-reference/organizations/create-a-bounded-organization-evidence-export.md) - [Read one organization evidence export](https://docs.firedrill.run/api-reference/organizations/read-one-organization-evidence-export.md) - [Download one completed organization evidence-export manifest](https://docs.firedrill.run/api-reference/organizations/download-one-completed-organization-evidence-export-manifest.md) - [Download one completed organization evidence-export part](https://docs.firedrill.run/api-reference/organizations/download-one-completed-organization-evidence-export-part.md) - [List organization export archive parts](https://docs.firedrill.run/api-reference/organizations/list-organization-export-archive-parts.md): Available exports without an admitted deletion only. Returns portable archive metadata in immutable selection order. Cursor is bound to organization, scope and export; it is not an authorization credential. Downloads use the separate authenticated part endpoint. - [Delete a organization evidence export](https://docs.firedrill.run/api-reference/organizations/delete-a-organization-evidence-export.md): Explicitly confirm the export ID and immutable selection digest. Requires organization management or project evidence.delete authority. Admission blocks new archive downloads; background removal preserves source evidence, other exports and audit history. Reuse the same Idempotency-Key after an uncer… - [Organization Build Retention Get](https://docs.firedrill.run/api-reference/organizations/organization-build-retention-get.md) - [Organization Build Retention Update](https://docs.firedrill.run/api-reference/organizations/organization-build-retention-update.md) - [Download an original local report retained in a completed export](https://docs.firedrill.run/api-reference/organizations/download-an-original-local-report-retained-in-a-completed-export.md): The export manifest's separate localReports list identifies these original archives. Exact uploaded bytes with user-produced, unattested provenance; this is not hosted execution evidence. Requires the same current export scope authority. An admitted export deletion blocks new downloads. - [List original local-report archives in a completed export](https://docs.firedrill.run/api-reference/organizations/list-original-local-report-archives-in-a-completed-export.md): Portable user-produced/unattested source and archive metadata in immutable ordinal order. Only available exports without deletion are readable. Cursor is scoped to this organization, project/organization export and local-report list; it is not an authorization credential. - [List projects available to the current principal](https://docs.firedrill.run/api-reference/projects/list-projects-available-to-the-current-principal.md) - [Create a project and grant its creator manager access](https://docs.firedrill.run/api-reference/projects/create-a-project-and-grant-its-creator-manager-access.md) - [List repository sources connected to a project](https://docs.firedrill.run/api-reference/projects/list-repository-sources-connected-to-a-project.md) - [Connect one discovered configuration and queue its exact revision](https://docs.firedrill.run/api-reference/projects/connect-one-discovered-configuration-and-queue-its-exact-revision.md) - [Change a repository source and queue the newly resolved exact revision](https://docs.firedrill.run/api-reference/projects/change-a-repository-source-and-queue-the-newly-resolved-exact-revision.md) - [Revalidate a repository source and queue its current exact revision](https://docs.firedrill.run/api-reference/projects/revalidate-a-repository-source-and-queue-its-current-exact-revision.md) - [Stop accepting source updates from a repository binding](https://docs.firedrill.run/api-reference/projects/stop-accepting-source-updates-from-a-repository-binding.md) - [Read a project-scoped asynchronous operation](https://docs.firedrill.run/api-reference/projects/read-a-project-scoped-asynchronous-operation.md) - [List active organization members and their access to one project](https://docs.firedrill.run/api-reference/projects/list-active-organization-members-and-their-access-to-one-project.md) - [List explicit project grants](https://docs.firedrill.run/api-reference/projects/list-explicit-project-grants.md) - [Grant or change one active organization member's project role](https://docs.firedrill.run/api-reference/projects/grant-or-change-one-active-organization-members-project-role.md) - [Remove one organization member's access to a project](https://docs.firedrill.run/api-reference/projects/remove-one-organization-members-access-to-a-project.md) - [Get one project](https://docs.firedrill.run/api-reference/projects/get-one-project.md) - [Rename one project with optimistic concurrency](https://docs.firedrill.run/api-reference/projects/rename-one-project-with-optimistic-concurrency.md) - [Read scenario source presets at an exact revision](https://docs.firedrill.run/api-reference/projects/read-scenario-source-presets-at-an-exact-revision.md): Requires authoring.read. Reads canonical scenario source discovered in the connected repository at the exact baseRevision and validates the complete candidate build. Sources and digests are returned for review; compiled projections are not editable source. - [Prepare a drill suite from immutable repository revisions](https://docs.firedrill.run/api-reference/github-ci/prepare-a-drill-suite-from-immutable-repository-revisions.md) - [Read the current drill-suite state](https://docs.firedrill.run/api-reference/github-ci/read-the-current-drill-suite-state.md) - [List immutable attempts in a drill suite](https://docs.firedrill.run/api-reference/github-ci/list-immutable-attempts-in-a-drill-suite.md) - [Claim the next agent interaction for one exact checkout](https://docs.firedrill.run/api-reference/github-ci/claim-the-next-agent-interaction-for-one-exact-checkout.md) - [Submit the caller-owned agent result for a claimed interaction](https://docs.firedrill.run/api-reference/github-ci/submit-the-caller-owned-agent-result-for-a-claimed-interaction.md) - [Cancel a drill suite with optimistic concurrency](https://docs.firedrill.run/api-reference/github-ci/cancel-a-drill-suite-with-optimistic-concurrency.md) - [Begin a GitHub App installation for the current organization](https://docs.firedrill.run/api-reference/github-ci/begin-a-github-app-installation-for-the-current-organization.md) - [Verify and claim a GitHub App installation after user authorization](https://docs.firedrill.run/api-reference/github-ci/verify-and-claim-a-github-app-installation-after-user-authorization.md) - [List verified GitHub App installations](https://docs.firedrill.run/api-reference/github-ci/list-verified-github-app-installations.md) - [List repositories visible to a verified installation](https://docs.firedrill.run/api-reference/github-ci/list-repositories-visible-to-a-verified-installation.md) - [Discover firedrill.json files at an exact branch head](https://docs.firedrill.run/api-reference/github-ci/discover-firedrilljson-files-at-an-exact-branch-head.md) - [Begin PKCE user authorization for a proposed GitHub App installation](https://docs.firedrill.run/api-reference/github-ci/begin-pkce-user-authorization-for-a-proposed-github-app-installation.md) - [Read the evidence view available to the current viewer](https://docs.firedrill.run/api-reference/github-ci/read-the-evidence-view-available-to-the-current-viewer.md) - [Request access to a private CI evidence bundle](https://docs.firedrill.run/api-reference/github-ci/request-access-to-a-private-ci-evidence-bundle.md) - [List access requests for project CI evidence](https://docs.firedrill.run/api-reference/github-ci/list-access-requests-for-project-ci-evidence.md) - [Approve or deny a CI evidence access request](https://docs.firedrill.run/api-reference/github-ci/approve-or-deny-a-ci-evidence-access-request.md) - [List installations available for project connections](https://docs.firedrill.run/api-reference/github-ci/list-installations-available-for-project-connections.md): Requires repository.connect for the exact project. Returns only active GitHub App installations already claimed by the caller's organization. This inventory does not grant installation setup, claiming, or administration; repository discovery and connection remain separately authorized. - [Read repository browser CI configuration](https://docs.firedrill.run/api-reference/github-ci/read-repository-browser-ci-configuration.md): Requires repository.read. config=null means browser CI is not configured for this project-bound repository. - [Configure no-YAML browser checks](https://docs.firedrill.run/api-reference/github-ci/configure-no-yaml-browser-checks.md): Requires repository.connect and authoring.read for selected saved tests. expectedVersion=null creates; an exact existing version updates. Pins each saved test's exact expectedTestVersion and definition. Selected tests must not require secret parameters. targetOrigin is a public HTTPS origin; revisio… - [Preview browser test selection for an exact PR head](https://docs.firedrill.run/api-reference/github-ci/preview-browser-test-selection-for-an-exact-pr-head.md): Requires repository.read. Read-only preview; no Idempotency-Key is required. Verifies the active repository binding and exact open same-repository PR head; fork PRs are rejected. Incomplete or unmapped changes cause conservative full selection. - [List repository browser CI runs](https://docs.firedrill.run/api-reference/github-ci/list-repository-browser-ci-runs.md): Requires run.read. Returns run receipts with exact PR revisions, configuration versions, selection rationale, cases and GitHub delivery state. - [Queue browser CI for an exact PR head](https://docs.firedrill.run/api-reference/github-ci/queue-browser-ci-for-an-exact-pr-head.md): Requires drill.run. Admits only an open same-repository PR at the supplied expectedHeadRevision. Uses immutable configured test snapshots. Each isolated replay verifies deployment-reported revision immediately before and after browser execution; either mismatch fails the case while retaining availab… - [Read browser CI run evidence](https://docs.firedrill.run/api-reference/github-ci/read-browser-ci-run-evidence.md): Requires run.read. Browser assertion results and private evidence links remain distinct from GitHub check delivery state and world verification. - [Cancel a browser CI run](https://docs.firedrill.run/api-reference/github-ci/cancel-a-browser-ci-run.md): Requires run.cancel and exact browserCiRunId confirmation. Repeated cancellation is safe; cancellation is recorded durably before child cleanup and survives coordinator restart. Poll until cancelled or superseded. - [Admit one capture or file for the pending agent interaction for an active CI claim](https://docs.firedrill.run/api-reference/github-ci/admit-one-capture-or-file-for-the-pending-agent-interaction-for-an-active-ci-claim.md): Requires the exact active CI suite, case, claim, interaction and run revision. CI credentials never gain general project run or evidence access. Upload before completing the claim. Byte and checksum limits match native run attachments. - [Upload admitted bytes using the same control credential for an active CI claim](https://docs.firedrill.run/api-reference/github-ci/upload-admitted-bytes-using-the-same-control-credential-for-an-active-ci-claim.md): Requires the exact active CI suite, case, claim, interaction and run revision. CI credentials never gain general project run or evidence access. Upload before completing the claim. Byte and checksum limits match native run attachments. - [Verify uploaded bytes before binding them to a run for an active CI claim](https://docs.firedrill.run/api-reference/github-ci/verify-uploaded-bytes-before-binding-them-to-a-run-for-an-active-ci-claim.md): Requires the exact active CI suite, case, claim, interaction and run revision. CI credentials never gain general project run or evidence access. Upload before completing the claim. Byte and checksum limits match native run attachments. - [List repository and CLI build attempts with a stable cursor](https://docs.firedrill.run/api-reference/builds/list-repository-and-cli-build-attempts-with-a-stable-cursor.md) - [List immutable builds in a project with a stable cursor](https://docs.firedrill.run/api-reference/builds/list-immutable-builds-in-a-project-with-a-stable-cursor.md) - [Request an immutable build from connected repository source](https://docs.firedrill.run/api-reference/builds/request-an-immutable-build-from-connected-repository-source.md) - [Get safe metadata for one immutable build](https://docs.firedrill.run/api-reference/builds/get-safe-metadata-for-one-immutable-build.md) - [Get the verified compiled World for one immutable build](https://docs.firedrill.run/api-reference/builds/get-the-verified-compiled-world-for-one-immutable-build.md) - [Begin an explicit immutable build upload](https://docs.firedrill.run/api-reference/builds/begin-an-explicit-immutable-build-upload.md) - [Complete an explicit immutable build upload](https://docs.firedrill.run/api-reference/builds/complete-an-explicit-immutable-build-upload.md) - [Read verified Tool behavior source](https://docs.firedrill.run/api-reference/builds/read-verified-tool-behavior-source.md): Requires build.read in this project. Returns the exact immutable bundled JavaScript for one locked package, not original repository source. The archive and selected bytes are verified without importing or executing customer code. Source is limited to 1 MiB UTF-8 and is never truncated. Optional UI m… - [Read one exact scoped build attempt and source provenance](https://docs.firedrill.run/api-reference/builds/read-one-exact-scoped-build-attempt-and-source-provenance.md) - [List project environments](https://docs.firedrill.run/api-reference/worlds/list-project-environments.md) - [Create an environment pinned to a build or following repository source](https://docs.firedrill.run/api-reference/worlds/create-an-environment-pinned-to-a-build-or-following-repository-source.md) - [Point future sessions in an environment at an immutable build](https://docs.firedrill.run/api-reference/worlds/point-future-sessions-in-an-environment-at-an-immutable-build.md) - [Start or stop following successful builds from a repository branch](https://docs.firedrill.run/api-reference/worlds/start-or-stop-following-successful-builds-from-a-repository-branch.md) - [List hosted world sessions in a project](https://docs.firedrill.run/api-reference/worlds/list-hosted-world-sessions-in-a-project.md) - [Create a hosted world session for an explicit drill and seed](https://docs.firedrill.run/api-reference/worlds/create-a-hosted-world-session-for-an-explicit-drill-and-seed.md) - [Read a hosted world session](https://docs.firedrill.run/api-reference/worlds/read-a-hosted-world-session.md) - [Destroy a hosted world session with exact confirmation](https://docs.firedrill.run/api-reference/worlds/destroy-a-hosted-world-session-with-exact-confirmation.md) - [Read the atomic runtime position of a ready session](https://docs.firedrill.run/api-reference/worlds/read-the-atomic-runtime-position-of-a-ready-session.md) - [List state namespaces in a ready session](https://docs.firedrill.run/api-reference/worlds/list-state-namespaces-in-a-ready-session.md) - [Read a bounded page of namespaced world state](https://docs.firedrill.run/api-reference/worlds/read-a-bounded-page-of-namespaced-world-state.md) - [Read a bounded page from the ordered world evidence journal](https://docs.firedrill.run/api-reference/worlds/read-a-bounded-page-from-the-ordered-world-evidence-journal.md) - [Read scheduled events, callbacks, and active faults from a ready session](https://docs.firedrill.run/api-reference/worlds/read-scheduled-events-callbacks-and-active-faults-from-a-ready-session.md) - [Snapshot the atomic state, evidence, and pending work of a session](https://docs.firedrill.run/api-reference/worlds/snapshot-the-atomic-state-evidence-and-pending-work-of-a-session.md) - [Reset all or selected Tool state in a hosted world session](https://docs.firedrill.run/api-reference/worlds/reset-all-or-selected-tool-state-in-a-hosted-world-session.md) - [Fork a hosted world session from an immutable snapshot](https://docs.firedrill.run/api-reference/worlds/fork-a-hosted-world-session-from-an-immutable-snapshot.md) - [Issue an actor-scoped access bundle for the customer-owned agent runner](https://docs.firedrill.run/api-reference/worlds/issue-an-actor-scoped-access-bundle-for-the-customer-owned-agent-runner.md) - [Start a drill run in an existing hosted world session](https://docs.firedrill.run/api-reference/worlds/start-a-drill-run-in-an-existing-hosted-world-session.md) - [Advance virtual time in the exact selected hosted world session](https://docs.firedrill.run/api-reference/worlds/advance-virtual-time-in-the-exact-selected-hosted-world-session.md): Admits asynchronous advancement for the selected environment, build, session, and lease. Read the returned operation to recover its durable completed, partial, or interrupted time receipt. An explicit event budget is required; accepted work is never retargeted to a newer lease. - [Set a declared fault in the selected hosted world](https://docs.firedrill.run/api-reference/worlds/set-a-declared-fault-in-the-selected-hosted-world.md): Requires session.control and an exact environment, build, session, and lease selection. The declared fault is enabled or disabled atomically with controller evidence, not an agent Tool call. Read the returned operation for its durable completed or interrupted receipt. Retry an uncertain response wit… - [Extend the lifetime of a ready, unexpired session](https://docs.firedrill.run/api-reference/worlds/extend-the-lifetime-of-a-ready-unexpired-session.md): Requires session.control, the exact lease generation and session version. ttlMs sets the deadline from atomic admission time within the current organization allowance; it never revives expired worlds or extends existing credentials. All control-plane deadlines change in one transaction. The returned… - [Open one actor-scoped optional Tool app on its isolated origin](https://docs.firedrill.run/api-reference/worlds/open-one-actor-scoped-optional-tool-app-on-its-isolated-origin.md) - [Export selected live Tool state as reusable scenario source](https://docs.firedrill.run/api-reference/worlds/export-selected-live-tool-state-as-reusable-scenario-source.md): Reads the current lease without changing it. Explicit sensitive-data consent is required. The source omits clock, actors, pending work and history; it is not a runtime snapshot. - [List saved snapshot metadata in a project](https://docs.firedrill.run/api-reference/worlds/list-saved-snapshot-metadata-in-a-project.md) - [Read saved snapshot metadata](https://docs.firedrill.run/api-reference/worlds/read-saved-snapshot-metadata.md) - [Page through scheduled events, callbacks, or active faults](https://docs.firedrill.run/api-reference/worlds/page-through-scheduled-events-callbacks-or-active-faults.md): Cursors bind the exact session lease, filters, and collection revision. If work changes, restart from the first page after a lifecycle conflict. Faults have no status filter; event and callback statuses are category-specific. - [List exact private Tool artifacts introduced by project builds](https://docs.firedrill.run/api-reference/tools/list-exact-private-tool-artifacts-introduced-by-project-builds.md) - [Get one exact private Tool artifact](https://docs.firedrill.run/api-reference/tools/get-one-exact-private-tool-artifact.md) - [Approve one exact private Tool artifact for execution](https://docs.firedrill.run/api-reference/tools/approve-one-exact-private-tool-artifact-for-execution.md) - [Deprecate one approved private Tool artifact](https://docs.firedrill.run/api-reference/tools/deprecate-one-approved-private-tool-artifact.md) - [Revoke one exact private Tool artifact and propagate the block](https://docs.firedrill.run/api-reference/tools/revoke-one-exact-private-tool-artifact-and-propagate-the-block.md) - [Read existing Tool revocation propagation](https://docs.firedrill.run/api-reference/tools/read-existing-tool-revocation-propagation.md): Requires tool.read. Returns the existing durable revocation operation without creating or retrying a mutation. Non-revoked artifacts and missing or ambiguous operation history are rejected. - [Browse verified bundled Tool packages before creating source](https://docs.firedrill.run/api-reference/tools/browse-verified-bundled-tool-packages-before-creating-source.md) - [Inspect exact Tool declaration, schemas and file hashes without executing behavior](https://docs.firedrill.run/api-reference/tools/inspect-exact-tool-declaration-schemas-and-file-hashes-without-executing-behavior.md) - [List project evidence exports](https://docs.firedrill.run/api-reference/runs/list-project-evidence-exports.md) - [Create a bounded project evidence export](https://docs.firedrill.run/api-reference/runs/create-a-bounded-project-evidence-export.md) - [Read one project evidence export](https://docs.firedrill.run/api-reference/runs/read-one-project-evidence-export.md) - [Download one completed project evidence-export manifest](https://docs.firedrill.run/api-reference/runs/download-one-completed-project-evidence-export-manifest.md) - [Download one completed project evidence-export part](https://docs.firedrill.run/api-reference/runs/download-one-completed-project-evidence-export-part.md) - [List hosted drill runs in a project](https://docs.firedrill.run/api-reference/runs/list-hosted-drill-runs-in-a-project.md): Search retained history with server-side filters. Results are ordered by creation time, newest first, then run ID. A cursor belongs to the same project and filters; omit it when changing filters. Date bounds are inclusive start and exclusive end. - [Read one hosted drill run](https://docs.firedrill.run/api-reference/runs/read-one-hosted-drill-run.md) - [Reproduce a terminal drill run from its pinned inputs](https://docs.firedrill.run/api-reference/runs/reproduce-a-terminal-drill-run-from-its-pinned-inputs.md) - [Compare two immutable drill-run evidence bundles](https://docs.firedrill.run/api-reference/runs/compare-two-immutable-drill-run-evidence-bundles.md) - [Issue the pending interaction's actor-scoped world access bundle](https://docs.firedrill.run/api-reference/runs/issue-the-pending-interactions-actor-scoped-world-access-bundle.md) - [Submit the caller-owned agent result for the pending interaction](https://docs.firedrill.run/api-reference/runs/submit-the-caller-owned-agent-result-for-the-pending-interaction.md) - [Cancel a non-terminal hosted drill run](https://docs.firedrill.run/api-reference/runs/cancel-a-non-terminal-hosted-drill-run.md) - [Read safe metadata for a hosted evidence bundle](https://docs.firedrill.run/api-reference/runs/read-safe-metadata-for-a-hosted-evidence-bundle.md) - [Delete a hosted evidence bundle with exact confirmation](https://docs.firedrill.run/api-reference/runs/delete-a-hosted-evidence-bundle-with-exact-confirmation.md) - [Download the verified evidence manifest](https://docs.firedrill.run/api-reference/runs/download-the-verified-evidence-manifest.md) - [Download one verified evidence artifact](https://docs.firedrill.run/api-reference/runs/download-one-verified-evidence-artifact.md) - [List project export archive parts](https://docs.firedrill.run/api-reference/runs/list-project-export-archive-parts.md): Available exports without an admitted deletion only. Returns portable archive metadata in immutable selection order. Cursor is bound to organization, scope and export; it is not an authorization credential. Downloads use the separate authenticated part endpoint. - [Delete a project evidence export](https://docs.firedrill.run/api-reference/runs/delete-a-project-evidence-export.md): Explicitly confirm the export ID and immutable selection digest. Requires organization management or project evidence.delete authority. Admission blocks new archive downloads; background removal preserves source evidence, other exports and audit history. Reuse the same Idempotency-Key after an uncer… - [List private user-produced local reports](https://docs.firedrill.run/api-reference/runs/list-private-user-produced-local-reports.md): These reports are format/hash verified but unattested: Firedrill did not observe the execution. Cursor binds the exact project and filters. Time bounds use inclusive start and exclusive end. - [Begin explicitly confirmed immutable local report upload](https://docs.firedrill.run/api-reference/runs/begin-explicitly-confirmed-immutable-local-report-upload.md): Requires evidence.upload for the exact project. The selected gzip archive is limited to 64 MiB. Upload authority expires after 15 minutes. Replay the same idempotency key and exact digests after uncertainty; no report content is verified on this request path. - [Get local report verification status and original manifest](https://docs.firedrill.run/api-reference/runs/get-local-report-verification-status-and-original-manifest.md) - [Queue bounded verification of the complete portable report](https://docs.firedrill.run/api-reference/runs/queue-bounded-verification-of-the-complete-portable-report.md): Acceptance is asynchronous. Poll the local report and returned operation with the same project authority. No hosted execution attestation is created. - [Delete a local report with exact confirmation and an immutable tombstone](https://docs.firedrill.run/api-reference/runs/delete-a-local-report-with-exact-confirmation-and-an-immutable-tombstone.md): Acceptance is asynchronous. Poll the local report and returned operation with the same project authority. No hosted execution attestation is created. - [Download the original verified portable archive as an attachment](https://docs.firedrill.run/api-reference/runs/download-the-original-verified-portable-archive-as-an-attachment.md) - [Read original verified report JSON for a private unattested Results viewer](https://docs.firedrill.run/api-reference/runs/read-original-verified-report-json-for-a-private-unattested-results-viewer.md): Exact original report.json bytes, bounded to 64 MiB, with a SHA-256 ETag matching the original manifest artifact. Contains run/checks, tools and evidence, not uploaded HTML. This remains a user-produced report, not a hosted execution attestation. - [Read a private retained-run link](https://docs.firedrill.run/api-reference/runs/read-a-private-retained-run-link.md): Requires a signed-in browser or device user. No run facts or artifact paths are released before project read authority or an explicit exact-run approval. A hosted_run grant expires within seven days, never beyond evidence retention; deletion admission and revocation stop subsequent reads. Artifact i… - [Request access to one retained run](https://docs.firedrill.run/api-reference/runs/request-access-to-one-retained-run.md) - [Download one verified artifact from an authorized run](https://docs.firedrill.run/api-reference/runs/download-one-verified-artifact-from-an-authorized-run.md): Only an exact path from this run's verified manifest (or manifest.json) can be read. Delivery is attachment-only and private/no-store. Current user authentication, exact-run or project read authority, grant expiry and evidence deletion are rechecked during transfer. A three-second authority lease wi… - [List exact-run requests for a managed project](https://docs.firedrill.run/api-reference/runs/list-exact-run-requests-for-a-managed-project.md) - [Approve, deny or revoke exact-run evidence access](https://docs.firedrill.run/api-reference/runs/approve-deny-or-revoke-exact-run-evidence-access.md): Requires current project.members.manage and an active signed-in project manager. Decisions are transactional, version-fenced and audited. Approval lasts at most seven days and is clipped to the retained evidence lifetime. Approval can renew expired/revoked/denied access only by a fresh explicit deci… - [Download an original local report retained in a completed export](https://docs.firedrill.run/api-reference/runs/download-an-original-local-report-retained-in-a-completed-export.md): The export manifest's separate localReports list identifies these original archives. Exact uploaded bytes with user-produced, unattested provenance; this is not hosted execution evidence. Requires the same current export scope authority. An admitted export deletion blocks new downloads. - [List original local-report archives in a completed export](https://docs.firedrill.run/api-reference/runs/list-original-local-report-archives-in-a-completed-export.md): Portable user-produced/unattested source and archive metadata in immutable ordinal order. Only available exports without deletion are readable. Cursor is scoped to this organization, project/organization export and local-report list; it is not an authorization credential. - [Read live activity for this run's current Tool session](https://docs.firedrill.run/api-reference/runs/read-live-activity-for-this-runs-current-tool-session.md): A bounded journal window beginning at this exact run, not earlier session activity. Requires current project access and the original live lease. This provisional activity is not a sealed or signed report. Reset or session expiry makes it unavailable; use retained evidence for completed runs. - [Read a bounded page of recorded run differences](https://docs.firedrill.run/api-reference/runs/read-a-bounded-page-of-recorded-run-differences.md): Requires run.compare in this exact project. Both world-terminal reports are verified against their immutable manifests; current credential, membership, project grant, evidence availability and selection are rechecked after storage reads. Missing evidence returns 404 control.NOT_FOUND; deleted, delet… - [Admit one capture or file for the pending agent interaction](https://docs.firedrill.run/api-reference/runs/admit-one-capture-or-file-for-the-pending-agent-interaction.md): Requires the current interaction and revision. Maximum 32 files, 64 MiB each and 120 MiB total per run. Returns a same-origin authenticated upload URL; no storage credentials are returned. - [Upload admitted bytes using the same control credential](https://docs.firedrill.run/api-reference/runs/upload-admitted-bytes-using-the-same-control-credential.md): Send raw bytes as application/octet-stream, or use the Content-Type returned by admission. The stored media type always comes from the admitted descriptor. The body must match the admitted SHA-256 and byte count. Repeating the same immutable upload is safe. Do not send base64, JSON or multipart wrap… - [Verify uploaded bytes before binding them to a run](https://docs.firedrill.run/api-reference/runs/verify-uploaded-bytes-before-binding-them-to-a-run.md) - [List project authoring conversations](https://docs.firedrill.run/api-reference/authoring/list-project-authoring-conversations.md) - [Start Firedrill Agent against an exact repository revision](https://docs.firedrill.run/api-reference/authoring/start-firedrill-agent-against-an-exact-repository-revision.md) - [Read one project authoring conversation](https://docs.firedrill.run/api-reference/authoring/read-one-project-authoring-conversation.md) - [List authoring turns in descending sequence order](https://docs.firedrill.run/api-reference/authoring/list-authoring-turns-in-descending-sequence-order.md) - [Continue a repository authoring conversation](https://docs.firedrill.run/api-reference/authoring/continue-a-repository-authoring-conversation.md) - [Read durable authoring progress after a sequence number](https://docs.firedrill.run/api-reference/authoring/read-durable-authoring-progress-after-a-sequence-number.md) - [Read one authoring turn and its durable result](https://docs.firedrill.run/api-reference/authoring/read-one-authoring-turn-and-its-durable-result.md) - [Read a compiler-validated source proposal](https://docs.firedrill.run/api-reference/authoring/read-a-compiler-validated-source-proposal.md) - [Read the integrity-checked source diff for a proposal](https://docs.firedrill.run/api-reference/authoring/read-the-integrity-checked-source-diff-for-a-proposal.md) - [Open a pull request for the exact reviewed proposal](https://docs.firedrill.run/api-reference/authoring/open-a-pull-request-for-the-exact-reviewed-proposal.md) - [Request cancellation of one exact authoring turn](https://docs.firedrill.run/api-reference/authoring/request-cancellation-of-one-exact-authoring-turn.md) - [Discard an inactive authoring conversation with exact confirmation](https://docs.firedrill.run/api-reference/authoring/discard-an-inactive-authoring-conversation-with-exact-confirmation.md) - [Create a reviewed scenario source proposal](https://docs.firedrill.run/api-reference/authoring/create-a-reviewed-scenario-source-proposal.md): Requires authoring.run. Accepts canonical source or an explicit preset copied to the requested scenarioId, pinned to repositoryBindingId and baseRevision. Performs canonical source/build validation, then creates a reviewable authoring proposal and unified diff. Does not publish, deploy or execute an… - [List project-owned immutable source drafts](https://docs.firedrill.run/api-reference/authoring/list-project-owned-immutable-source-drafts.md) - [Create ordinary source from exact reviewed Tool selections; no repository or Agent required](https://docs.firedrill.run/api-reference/authoring/create-ordinary-source-from-exact-reviewed-tool-selections;-no-repository-or-agent-required.md) - [Review exact draft source, actor grants and package selections](https://docs.firedrill.run/api-reference/authoring/review-exact-draft-source-actor-grants-and-package-selections.md) - [Download immutable editable ordinary OSS source archive](https://docs.firedrill.run/api-reference/authoring/download-immutable-editable-ordinary-oss-source-archive.md) - [Explicitly compile exact draft source through the isolated build pipeline; no automatic environment change](https://docs.firedrill.run/api-reference/authoring/explicitly-compile-exact-draft-source-through-the-isolated-build-pipeline;-no-automatic-environment-change.md) - [Delete an unpublished source draft; pending and published build history protects source](https://docs.firedrill.run/api-reference/authoring/delete-an-unpublished-source-draft;-pending-and-published-build-history-protects-source.md) - [List project callback receivers](https://docs.firedrill.run/api-reference/callbacks/list-project-callback-receivers.md): Requires project.read. Metadata only; no signing material or provider references. Cursor binds the project and filters. - [Register a callback receiver candidate](https://docs.firedrill.run/api-reference/callbacks/register-a-callback-receiver-candidate.md): Requires project.manage and Idempotency-Key. Origin and signing kind are immutable. Registration does not permit delivery; approve and explicitly select the binding for a session. - [Get current callback receiver metadata](https://docs.firedrill.run/api-reference/callbacks/get-current-callback-receiver-metadata.md): Requires project.read. Returns the current approval state, never signing material or provider references. - [Approve an immutable callback binding](https://docs.firedrill.run/api-reference/callbacks/approve-an-immutable-callback-binding.md): Requires project.manage, expectedVersion and Idempotency-Key. Signed bindings provision and pin one managed key. A lost response must be retried with the same key and body. An idempotent response is the original receipt, not a claim that later revocation did not occur; use get for current state. - [Revoke a callback receiver](https://docs.firedrill.run/api-reference/callbacks/revoke-a-callback-receiver.md): Requires project.manage, expectedVersion, exact binding confirmation and Idempotency-Key. Terminal revocation prevents subsequent authorizations; it cannot recall an already-authorized remote request. Rotation or changing origin requires a new binding. - [Retrieve the approved receiver signing key](https://docs.firedrill.run/api-reference/callbacks/retrieve-the-approved-receiver-signing-key.md): Requires project.manage, expectedVersion, exact binding confirmation and Idempotency-Key. Use the key to configure your receiver; keep it out of source and reports. Every request reauthorizes the current approved binding, even on retry. Only an audit marker is idempotent; key responses are never cac… - [List saved browser tests](https://docs.firedrill.run/api-reference/browser/list-saved-browser-tests.md): Requires authoring.read. Returns project-scoped saved tests with an opaque nextCursor for the next after parameter. - [Save a browser test](https://docs.firedrill.run/api-reference/browser/save-a-browser-test.md): Requires authoring.run. Validates the canonical OSS definition (at most 128 KiB). Literal fill values are persisted public test data; never put credentials in definitions, URLs, or tasks. - [Read a saved browser test](https://docs.firedrill.run/api-reference/browser/read-a-saved-browser-test.md): Requires authoring.read. Reads the current active saved version; already-created runs retain their own immutable snapshots. - [Delete a saved browser test](https://docs.firedrill.run/api-reference/browser/delete-a-saved-browser-test.md): Requires authoring.run, exact testId confirmation and expectedVersion. Soft-deletes this saved test; existing run evidence and immutable rerun inputs remain available subject to retention. - [Replace a saved browser test definition](https://docs.firedrill.run/api-reference/browser/replace-a-saved-browser-test-definition.md): Requires authoring.run and the exact expectedVersion. Replaces the definition; does not alter existing runs or pinned browser CI configuration. - [List browser test runs](https://docs.firedrill.run/api-reference/browser/list-browser-test-runs.md): Requires run.read. Returns project-scoped run receipts without parameter secrets or artifact bytes. - [Queue an isolated browser test run](https://docs.firedrill.run/api-reference/browser/queue-an-isolated-browser-test-run.md): Requires drill.run and also authoring.run for agent mode. Supply exactly one saved testId or inline definition. Saves immutable inputs before durable dispatch. Standalone targets must be public HTTPS origins on port 443 with DNS checked and pinned per connection. Optional worldBinding selects an exi… - [Read a browser test run](https://docs.firedrill.run/api-reference/browser/read-a-browser-test-run.md): Requires run.read. queued/running are active; passed, failed, completed and cancelled are terminal. completed means there was no independent passing assertion verdict. An expired execution lease fails closed without replaying potentially completed actions. - [Queue a rerun from exact original inputs](https://docs.firedrill.run/api-reference/browser/queue-a-rerun-from-exact-original-inputs.md): Requires drill.run, run.read and authoring.run for agent mode. Confirm the exact original runId and use a new Idempotency-Key. Copies standalone immutable inputs and capture policy even if the saved test changed. Does not copy interactive messages. World-bound runs cannot use this endpoint: create a… - [Cancel a browser test run](https://docs.firedrill.run/api-reference/browser/cancel-a-browser-test-run.md): Requires run.cancel and exact runId confirmation. Active records become cancelled transactionally and reject late results/captures. The isolated driver stops at its next worker poll (3 seconds) or remaining execution lease (15 seconds plus a 250ms expiry check). Durable reconciliation cancels only t… - [Send a follow-up or finish an interactive browser run](https://docs.firedrill.run/api-reference/browser/send-a-follow-up-or-finish-an-interactive-browser-run.md): Requires authoring.run and an active interactive agent-mode run. Messages are persisted, sequence-deduplicated and fed into the canonical Claude Agent SDK session. kind=finish closes input and lets independent assertions finish. Do not send credentials or other secrets in messages; use scoped parame… - [Read ordered browser run events](https://docs.firedrill.run/api-reference/browser/read-ordered-browser-run-events.md): Requires run.read. Returns bounded safe event facts strictly after the supplied sequence. nextCursor is a decimal sequence string; pass its numeric value as after. Events are retained with the run. - [Read the current ephemeral browser frame](https://docs.firedrill.run/api-reference/browser/read-the-current-ephemeral-browser-frame.md): Requires run.read. Returns frame=null when no current frame is available, a frame is older than 10 seconds, the run is terminal, or effective screenshot capture is off. Screenshot masks do not redact video or traces. Responses use Cache-Control: no-store. - [Download the canonical browser report bundle](https://docs.firedrill.run/api-reference/browser/download-the-canonical-browser-report-bundle.md): Requires current run.read. Returns the exact immutable OSS-generated tar.gz bundle, at most 130 MiB, verified against the recorded SHA-256 with authorization and retention rechecked after reading. This is browser evidence, not a world-verification bundle. Returns 404 if absent, expired or deleted. C… - [Stream authenticated browser progress and frames](https://docs.firedrill.run/api-reference/browser/stream-authenticated-browser-progress-and-frames.md): Requires run.read and an Authorization bearer token, re-authenticated and re-authorized on each poll. text/event-stream events are browser-event (BrowserEvent JSON, id is its sequence), browser-frame (BrowserFrame JSON, no id), and browser-run (HostedBrowserRun JSON, no id). Closes at terminal state… - [List verified retained browser captures](https://docs.firedrill.run/api-reference/browser/list-verified-retained-browser-captures.md): Requires current run.read. Returns at most 37 exact capture descriptors from the canonical verified report, bound to organization, project, hosted run, canonical report run, bundle digest and expiry. Returns 404 when the report is absent, expired or deleted. An empty list means no captures were reta… - [Read one verified screenshot, video or trace](https://docs.firedrill.run/api-reference/browser/read-one-verified-screenshot-video-or-trace.md): Requires current run.read. Reads only an exact capture member from the selected immutable bundle; never serves report HTML or arbitrary archive paths. Each member is at most 64 MiB. The complete canonical archive and member digest are verified, followed by fresh authorization, evidence identity and… ## OpenAPI Specs - [openapi](/api-reference/openapi.json) ## Optional - [GitHub](https://github.com/firedrill-tools) - [firedrill.run](https://firedrill.run)