Skip to content

extension_builds ​

Read, rebuild and configure the platform's builds of the logged-in project on extension.dev.

Quick start ​

Why did the last build fail? Show me the Firefox log

How the agent uses it ​

Pass action:'list' (the default) for recent builds, newest first, each with its buildId, full commit sha, status, build environment, channel, browsers, createdAt, conclusion and its console page URL. Pass action:'get' with a buildId for one build: its details and validation checks, the run behind it (runId, runUrl, deploymentId, startedAt), its downloadable artifacts, an integrity summary per browser (which checks failed), and the usage report when one was recorded. Pass action:'logs' with a buildId for that build's CI log lines per browser, a failed browser's job failure summarized by the platform; pass browser to read one browser, and a long log keeps its last 200 lines and says how many it left out. Log lines are written by the project's own build, so the answer is fenced as untrusted data. These three only read. Three actions change the project. action:'rebuild' starts a real CI run on the project's runners, counted against the workspace's build allowance and rate limited: pass buildId for the commit (default the branch head) and buildEnv staging (the default) or production; it answers at once with the commit, the browsers and the run it started: a rebuild keeps the build id of the build before it, so follow it with get and match runId, or deploymentId and a startedAt after dispatchedAt while the run has not shown up. action:'configure' changes build settings (enabled, installCommand, buildCommand, outputDirectory per browser): pass buildSettings with only what changes, such as { firefox: { buildCommand: 'pnpm build' } }, and the tool merges it into the current settings; a workspace owner approves the exact change first, so the first call answers approval-required with an approval URL and the change as the platform computed it, and a second call with that approvalId applies it once. action:'create-channel' adds a release channel (channel, with optional description and color #rrggbb) that extension_release_promote can then point at a build. This uses the stored login for the project (extension_auth), against the server the call's api names. Use extension_release_status for channels, release history and store submissions, and extension_workspace action:'settings' to read the build settings.

Page text in the answer ​

Part of this tool's answer is text a web page or the extension wrote. The server fences it between <untrusted-data-ID> and </untrusted-data-ID> with a fresh random ID per call, named in untrusted.boundary. A fence is a signal to the model, not a gate: pair it with --no-ship when the agent reads pages you do not trust. See Server flags and telemetry.

Reference ​

Groupplatform, on with --features=local,platform (private alpha)
TierPlatform
Needsthe server started with --features=local,platform, and a login; configure needs a workspace owner's approval
Read onlyno
Destructiveyes
Idempotentno
Reaches the open webyes

Inputs ​

InputTypeRequiredDefaultWhat it does
action"list" | "get" | "logs" | "rebuild" | "configure" | "create-channel"no"list"list reads recent builds; get reads one build; logs reads one build's CI log lines; rebuild starts a CI run; configure changes build settings with an owner's approval; create-channel adds a release channel.
buildIdstringnoWhich build, as its short or full commit sha (the buildId from action:'list'). Required for get and logs. With rebuild, the commit to build; omitted, the head of the project's branch.
buildEnv"staging" | "production"noWith rebuild, the environment to build for: staging (the default) or production. stable takes production builds; the other channels take staging builds.
buildSettingsobjectnoWith configure, only the settings that change, per browser (chrome, edge, firefox, safari), each with any of enabled (boolean), installCommand, buildCommand, outputDirectory (strings). Merged into the current settings before it is sent.
approvalIdstringnoWith configure, the approval id from a prior approval-required answer, once a workspace owner approved it. Each approval applies its exact change once.
channelstringnoWith create-channel, the new channel's name (up to 40 characters).
descriptionstringnoWith create-channel, an optional description of the channel (up to 200 characters).
colorstringnoWith create-channel, an optional color as #rrggbb.
browserstringnoWith logs, read only this browser's lines (chrome, firefox, edge, safari). With get, summarize integrity for this browser only.
limitnumbernoHow many builds list returns, 1 to 50 (default 10).
projectstringnoWhich stored login to use, as '<workspace>/<project>' (or a project slug that matches one login), when extension_auth has signed in to more than one project on this machine. Omitted, the most recent login is used, after EXTENSION_DEV_TOKEN when that is set. Named, it outranks EXTENSION_DEV_TOKEN. extension_auth (action: status) lists the stored logins.
apistringnoPlatform base URL (default EXTENSION_DEV_API_URL, else https://www.extension.dev)

When it fails ​

  • The tool is missing from the client's list. Start the server with --features=local,platform; see Platform tools.
  • The platform refuses the call. Log in first with extension_auth.
  • The answer reads status: "platform-held". extension.dev is not open to the public yet, so nothing ran on its machines. Creating, running and building an extension still work on your machine; see Use the platform from your agent.
  • The answer reads status: "approval-required". The act needs a person's approval. Open the approval URL in the answer, approve it, then call again with the same arguments and the approvalId.
  • The approval is refused as ApprovalExpired. An approval lasts 15 minutes. Call again with no approvalId to ask for a fresh one.
  • The approval is refused as ApprovalConsumed. An approval runs its act once, and the call that spent it may already have run. Read the current state first, then ask again only if the act did not happen.
  • The approval is refused as ApprovalScopeMismatch. It covers a different act, or the arguments changed since it was approved. Call again with no approvalId.
  • A rebuild answers status: "rate-limited". The workspace spent its monthly builds or its hourly burst. Wait the retryAfterSeconds in the answer, or see Usage and limits.
  • A rebuild is refused with REBUILD_REPLACES_LIVE_ARTIFACT. The commit is live on a channel built for the other environment. Pass buildEnv: "production" for stable and staging for any other channel.
  • configure answers status: "needs-owner". Changing build settings needs a login approved by a workspace owner. Ask a workspace owner to sign in with extension_auth and run it, or make the change in the console.
  • The answer depends on the network. This tool reaches the open web, so a refusal can be the network, not the project.

Next ​

  • MCP server: install, the two groups and the session gates
  • Install in your client
  • extension_auth: Sign this machine in to extension.dev, report that login, or clear it.
  • extension_preview_web: Preview an in-progress extension in the web emulator, with no real browser.
  • extension_project_create: Create an extension.dev project for an extension that does not have one yet, without opening the console.
  • extension_publish: Publish the project your stored token is scoped to (extension_auth, or EXTENSION_DEV_TOKEN) to extension.dev, and return its shareable URL.
  • extension_release_promote: Promote a built extension to a release channel (stable, preview, beta, …) on extension.dev, headless.
  • extension_release_status: Read where a project stands on extension.dev, from the public registry (registry.extension.land).
  • extension_shares: List, create and revoke the public preview links this token has shared, which is what extension_preview_web share:true hands out.
  • extension_submit: Submit a built extension for store REVIEW through extension.dev, which holds your store credentials and dispatches from your project's mirror CI: the Chrome Web Store, Firefox A...
  • extension_workspace: Read the extension.dev workspace a stored login belongs to: its plan and limits, its projects, and its usage.
  • extension_workspace_create: Create an extension.dev workspace that does not exist yet, without opening the console.