Skip to content

fix: Cursor Marketplace listing — manifest format, logo, MCP name, install docs - #119

Merged
zebastieneth merged 7 commits into
mainfrom
fix-cursor-install-path
Aug 31, 2026
Merged

zebastieneth merged 7 commits into
mainfrom
fix-cursor-install-path

Conversation

@zebastieneth

@zebastieneth zebastieneth commented Aug 31, 2026 •

Copy link
Copy Markdown
Collaborator

Corrections to #117, all found by loading the plugin in Cursor 3.18.9 and reading Cursor's published schema, review skill, and reference implementations.

Net effect vs main

File Change
.cursor-plugin/plugin.json New — Cursor's own manifest format
plugin.json Deleted — root agent-plugins manifest
assets/logo.png → assets/avatar.png Renamed to the convention every official plugin uses
assets/logo.svg Deleted — unused after the switch to PNG
mcp.json Server key zerion-api-docs → Zerion
README.md Corrected Cursor install path
package.json Ships .cursor-plugin/ instead of plugin.json

1. Wrong manifest format

#117 shipped a root plugin.json (agent-plugins.org format) for portability. That was the wrong call:

Validated against Cursor's published schema: no unknown fields, name matches the kebab-case pattern, every declared path exists.

2. Logo

assets/avatar.png, matching Phantom and all official plugins. The SVG from #117 rendered as a transparency checkerboard in Cursor's panel; it's deleted rather than left unreferenced.

3. MCP server name

Cursor has no display-name field for MCP servers — it renders the key from mcp.json. zerion-api-docs would have listed as "Zerion Api Docs"; the key is now Zerion, which displays as-is. No space, since the key namespaces the tool names the agent calls (mcp__Zerion__search_zerion_api).

4. Install path

Was: Settings → Plugins → Add plugin — a screen that doesn't exist.
Is: the Customize panel in the sidebar → Install → project or user scope.

Local verification

Loaded from ~/.cursor/plugins/local/zerion in Cursor 3.18.9:

  • MCPs 1 — Zerion, connected, 3 tools + 1 resource
  • Skills 1 — zerion (one SKILL.md; the 31 capability and partner docs are nested references loaded on demand, by design)

Satisfies the local-verification step on Cursor's publishing checklist.

Notes for submission

  • Listing title and category are curated at review time, not read from the manifest. Phantom's manifest says displayName: "Phantom Connect" with no category, yet their live listing reads "Phantom" under "Payments". displayName is set to Zerion here; ask for that title when submitting.
  • The icon Cursor draws on the MCP row is generated client-side and is not controllable from this repo — ruled out the plugin logo, the server's serverInfo (no icons field), the docs-site favicon (clean), and alpha in our PNG (opaque=true). Phantom's published listing shows a plain glyph there, so it does not affect the listing.
  • Cursor's Verified by Cursor badge (which Phantom has) is worth asking about during submission.

🤖 Generated with Claude Code

Cursor installs plugins from the Customize panel in the sidebar, not from
a "Settings → Plugins → Add plugin" screen — that path does not exist.
Users pick project or user scope at install time.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
zerts
zerts previously approved these changes Aug 31, 2026
The traced SVG was one path whose outer boundary is the square and whose
two triangles are winding holes, with a white rect behind showing through
them. Cursor's icon rasterizer doesn't composite that correctly — the blue
field rendered as a blue/cyan transparency checkerboard in the Customize
panel.

Rebuilt with the same traced geometry as positive shapes: an opaque blue
rect plus the two triangles filled white on top. No holes, no fill-rule
dependency, no backing rect. Verified opaque and correct at 46px icon size;
0.76% mean pixel difference from the source PNG (antialiasing only).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@zebastieneth zebastieneth changed the title docs: correct the Cursor install path fix: Cursor install path and logo rendering Aug 31, 2026
zerts
zerts previously approved these changes Aug 31, 2026
Cursor's review skill lists ".cursor-plugin/plugin.json exists" as
requirement #1, and every official plugin plus Phantom's phantom-agent-kit
ships that format with no root plugin.json. The root agent-plugins manifest
also can't carry displayName, publisher, category or tags — its schema sets
additionalProperties: false.

- .cursor-plugin/plugin.json replaces the root plugin.json: adds
  displayName "Zerion", publisher, tags, explicit skills and mcpServers
  paths; validated against Cursor's published schema (no unknown fields)
- logo now points at assets/logo.png — every official Cursor plugin and
  Phantom ship a PNG avatar, and the SVG misrendered in the Customize panel
- package.json ships .cursor-plugin/ instead of plugin.json

Verified locally in Cursor 3.18.9: skill, plugin and MCP server all load
and the MCP connects (3 tools, 1 resource).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@zebastieneth zebastieneth changed the title fix: Cursor install path and logo rendering fix: switch to Cursor's manifest format, fix logo and install docs Aug 31, 2026
zebastieneth and others added 4 commits August 31, 2026 15:40
Cursor has no display-name field for MCP servers — the marketplace
title-cases the key from mcp.json. "zerion-api-docs" rendered as
"Zerion Api Docs"; "zerion-docs" gives "Zerion Docs".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Renders as "Zerion Mcp" on the marketplace listing, matching how Phantom's
"Phantom Mcp" entry reads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cursor has no display-name field for MCP servers — it renders the key from
mcp.json. A capitalised key displays as-is ("Zerion") in both the local
panel and the marketplace, where kebab-case rendered as "Zerion Mcp".

No space in the key: it namespaces the tool names the agent calls
(mcp__Zerion__search_zerion_api), where spaces break the identifier pattern.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Cursor caches component icons by asset path, so the old broken SVG render
kept showing on the MCP row through four MCP renames. A new path forces a
fresh render, and assets/avatar.png is the convention every official Cursor
plugin and Phantom's kit already use.

assets/logo.svg is removed: nothing referenced it after the switch to PNG,
and it is the file that misrendered.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@zebastieneth zebastieneth changed the title fix: switch to Cursor's manifest format, fix logo and install docs fix: Cursor Marketplace listing — manifest format, logo, MCP name, install docs Aug 31, 2026
@zebastieneth
zebastieneth merged commit 7a873d1 into main Aug 31, 2026
1 check passed
@zebastieneth
zebastieneth deleted the fix-cursor-install-path branch August 31, 2026 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants