feat: add OpenSea plugin for swaps, marketplace, and drops#67
feat: add OpenSea plugin for swaps, marketplace, and drops#67CodySearsOS wants to merge 2 commits into
Conversation
Adds OpenSea as a hybrid plugin for Base MCP covering: - Token swaps via cross-chain DEX aggregator - NFT drops/minting with direct calldata mapping - NFT marketplace trading (buy, sell, cross-chain fulfill) Uses CLI-first pattern (like Morpho/Avantis) with OpenSea MCP fallback for read operations on no-shell surfaces. All endpoints require API key - agent self-provisions via POST /api/v2/auth/keys. Also adds OpenSea to the native plugins table in SKILL.md. Co-Authored-By: cody.sears@opensea.io <cody.sears@opensea.io>
Restructures the OpenSea plugin to match the standardized plugin spec: - Full YAML frontmatter (tags, name, version, integration, chains, requires, auth, risk) - Canonical section names and ordering (Overview, Detection, Installation, Auth, Surface Routing, Commands, Orchestration, Submission, Example Prompts, Risks & Warnings, Notes) - Separate Submission section naming send_calls with exact mappings - Risks & Warnings with per-tag hazard/guardrail bullets - Verified CLI commands and MCP tool params against latest opensea-devtools skill Co-Authored-By: cody.sears@opensea.io <cody.sears@opensea.io>
🟡 Heimdall Review Status
|
stephancill
left a comment
There was a problem hiding this comment.
Thanks for the submission. The plugin is well-structured and the Seaport fulfillment path maps into send_calls. A couple of correctness issues need to be addressed before merge:
Required
- Revert the
SKILL.mdplugins-table row. Plugins shouldn't add themselves to the registry — maintainers will register them when the program is ready. Limit the PR toplugins/opensea.mdplus the net-new tag-vocabulary additions noted below. requires.allowlistis[], but the plugin makes direct HTTPS calls toapi.opensea.ioand uses the OpenSea MCP atmcp.opensea.io. Add both hosts so chat-only surfaces can reach them.- The REST fulfillment path returns decoded
input_data(a struct) plus afunctionsignature — not hex calldata. The documentedcurl POST /listings/fulfillment_data -> send_callspath therefore requires ABI-encodingfulfillAdvancedOrderbeforesend_calls. Either document the encoding step explicitly, or restrict fulfillment to the CLI path (which encodes internally).
Minor
- Tags
nft,marketplace,dropsare net-new; add them to the shared vocabulary list inskills/base-mcp/references/plugin-spec.md(thetagsentry under "Choosing each field's value"), as the spec instructs when introducing a new tag. cliPackageshould be the full invocation (npx @opensea/cli@latest).- Free-tier rate limits are stated as 120/60/60; the API returns 60/5/5. Key creation via
POST /api/v2/auth/keysis additionally limited to 1 key/hour, so on-demand minting will fail on repeat — document this. get_collection_statsis stale relative to the live MCP tool catalog; verify tool names against the catalog.
Thanks for the submission — nice work on the OpenSea plugin, and the CLI/MCP/contracts all check out. As part of reviewing the Wave 2 submissions I ran an automated, read-only health check against the documented endpoints. A couple of items are worth tightening before merge: Findings
What was checkedRead-only only — no transactions submitted, no funds moved, no API keys used. Probed: DNS/TLS for Really appreciate the contribution — happy to clarify any of the above. Since this is an automated check, please double-check anything that looks unexpected on your end before changing it.
|
No description provided.