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.
Quick start
Give me the shareable URL of the latest build
How the agent uses it
This is what "deploy" or "ship" an extension usually means; extension_submit is the separate store-review path. The target is the token's project: there is no projectPath, and no local file is uploaded. With several logins stored, pass project ('<workspace>/<project>') to pick which one; it outranks EXTENSION_DEV_TOKEN. For a public project the URL is the canonical public page and ttlHours does not apply. For a private one it is a fresh time-limited share link (?share=) whose lifetime is ttlHours.
Reference
| Group | platform, on with --features=local,platform (private alpha) |
| Tier | Platform |
| Needs | the server started with --features=local,platform, and a login |
| Read only | no |
| Destructive | no |
| Idempotent | no |
| Reaches the open web | yes |
Inputs
| Input | Type | Required | Default | What it does |
|---|---|---|---|---|
project | string | no | Which 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. | |
ttlHours | number | no | Private-project share-link lifetime in hours, 1-168 (default 24). Ignored for public projects. | |
buildSha | string | no | Pin the URL to a build sha (7-40 hex chars). The platform rejects a sha missing from a readable build index; when its index cannot be read it echoes the sha back and a pin on a failed build is accepted, so value.buildSha is the platform's claim, not a verified build. extension_release_status lists the builds it knows. | |
api | string | no | Platform 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 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_builds: Read, rebuild and configure the platform's builds of the logged-in project on extension.dev.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_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.