Skip to content

extension_shares ​

List, create and revoke the public preview links this token has shared, which is what extension_preview_web share:true hands out.

Quick start ​

List every link I have shared and revoke the oldest one

How the agent uses it ​

Pass action:'create' with a buildId (and browser, default chrome) to share a build the platform already made, with no local build: the build's package is downloaded from the registry, unpacked in a temporary folder, and uploaded the same way share:true uploads a local build, metered the same way, and the answer carries its previewUrl, zipUrl, revokeUrl and expiresAt. Pass action:'list' (the default) for every artifact the logged-in project owns, with its artifactId, name, version, live or dead state, createdAt, expiresAt, revokedAt, size, previewUrl, zipUrl and revokeUrl, so a link whose response you lost is findable again. Each row carries owner and sharedBy as the platform returned them. Read attribution.ownership for who may revoke a share: 'project' means the workspace holds it and any member can pull it back, 'personal' means one person holds it alone, 'unknown' means no owner was disclosed. Read attribution.credit as credit only, never access; it names the publisher, and reads 'CLI token <id>' or 'not recorded' when no person can be named. Pass action:'revoke' with an artifactId, or with any URL of the share, to kill one permanently. Pass projectPath to reconcile against the project's own append-only .extension.dev/shared-previews.json, which is read and never rewritten: a share made on another machine shows as remoteOnly, a record with no live artifact as localOnly. That record is append-only, so localOnly is counted by distinct artifactId and a build re-shared unchanged is one share, not two; server.count and server.matched are share counts, while server.scanned counts records the platform read and is never a share count. This needs the same token as sharing (extension_auth or EXTENSION_DEV_TOKEN); without one, listing still returns the local record with a login hint.

Reference ​

Groupplatform, on with --features=local,platform (private alpha)
TierPlatform
Needsthe server started with --features=local,platform, and a login; a revoke waits for a member's approval by default
Read onlyno
Destructiveyes
Idempotentno
Reaches the open webyes

Inputs ​

InputTypeRequiredDefaultWhat it does
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.
action"list" | "create" | "revoke"no"list"list reads every share this token owns; create shares one of the platform's builds as a public link; revoke permanently kills one and cannot be undone.
buildIdstringnoWith create, the platform build to share, as its short or full commit sha (extension_builds lists them).
browserstringnoWith create, which browser's package of the build to share (default chrome).
artifactIdstringnoWhich share to revoke (the gen_... id from a share response or from action:"list"). Required for revoke unless url is given.
urlstringnoAny URL of the share to revoke (previewUrl, zipUrl, viewUrl, or revokeUrl). The artifact id is read out of it, so the link you sent someone is enough to pull it back.
approvalIdstringnoThe approval handle returned by a prior approval-required response for a revoke. Revoking permanently burns a share and cannot be undone, so when the platform's approval gate is on this needs a human approval: call revoke once without this to get an approval id and URL, have a human approve at extension.dev, then call revoke again with the same id. Listing never needs it.
projectPathstringnoPath to the extension project root. Reconciles the platform's answer against this project's .extension.dev/shared-previews.json record. Read-only.
status"all" | "live"no"all"all (default) includes expired and revoked shares, which is what makes a dead link explainable; live returns only the links the platform reported resolving at list time (a 429 or 503 from the platform answers listed-local-only, which says nothing about any link).
limitnumbernoHow many shares to return, 1 to 200 (platform default 100). A cut list comes back with truncated:true.
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.
  • 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_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_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.