[Feature] Public deep link to open 'Add marketplace' dialog in Claude Desktop with prefilled URL

Open 💬 3 comments Opened May 26, 2026 by robinlawyer

Summary

Claude Desktop has no documented claude:// deep link to open the "Add marketplace" dialog (Customize → Plugins personales → + → Crear plugin → Añadir marketplace) with the marketplace URL prefilled.

For third-party plugin vendors who self-host a marketplace and want a one-click install button on their landing page, this is the missing piece between "tell users to copy a URL and click through five menus" and "click here, confirm in Claude Desktop, done."

Use case

I run Robin, a Spanish legal-tech tool that ships a Claude Desktop plugin via a self-hosted git marketplace at https://api.robinlawyer.ai/plugins.git. I'd like my install page to expose a single button:

<a href="claude://claude.ai/customize/plugins/marketplaces/add?url=https%3A%2F%2Fapi.robinlawyer.ai%2Fplugins.git">
  Install Robin in Claude Desktop
</a>

That should open Claude Desktop straight into the "Add marketplace" dialog with the URL prefilled, so the user only has to click "Sync" and confirm. Today my users have to perform six manual actions even after clicking my button.

What I found while investigating

After extracting app.asar from Claude Desktop 0.x (macOS) and reading claudeURLHandler in .vite/build/index.js, I see:

  1. The handler has a case Dg.Customize that recognizes claude://claude.ai/customize/plugins/new?marketplace=<url>&plugin=<id>. However, the path it forwards to (/customize/plugins/new) is the "Create plugin" wizard, not the "Add marketplace" dialog, so this does not solve the install-from-vendor use case.
  2. The path actually used by the "Add marketplace" modal (per topFrameUrl logs) is /customize/plugins/marketplaces, but the dialog itself is a React overlay with no dedicated route — /customize/plugins/marketplaces/add returns "Not Found".
  3. The generic fallback pRA strips all query params except a small allowlist (authed_mcp_server_id, server, step, *_success, oauth_error, flow_id), so even if the route existed, ?url= would be discarded.

So there is no path I can target today, even with a workaround.

Proposed solutions (any of these would unblock vendors)

Option A (preferred): publish a stable deep link for the "Add marketplace" dialog with a prefill parameter:

claude://claude.ai/customize/plugins/marketplaces/add?url=<marketplace-url>

The user still confirms inside Claude Desktop — no silent install.

Option B: extend the existing case Dg.Customize so that when the inner path is plugins/marketplaces/add (or new), the url/marketplace query param survives pRA's allowlist and is forwarded to the React route.

Option C: add a dedicated claude://plugin/marketplace/add?url=… host, analogous to the existing claude://code/new?q=… and claude://cowork/new?q=….

Why this matters now

Plugin marketplaces are how third parties extend Claude Desktop. Without a 1-click install link, every vendor has to teach users a 5-click flow (open Customize → Plugins personales → + → Crear plugin → Añadir marketplace → paste URL → Sync), which is a real conversion killer on landing pages. A documented deep link would put plugin vendors on par with what claude://code/new already offers for prompts.

Environment

  • Claude Desktop: latest (macOS, build verified 2026-05-26)
  • macOS: 15 (Sequoia)
  • Plugin marketplace tested: https://api.robinlawyer.ai/plugins.git (git dumb HTTP, self-hosted)

Happy to test any preview build that ships such a link.

View original on GitHub ↗

This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗