Skip to content

feat: Plugins Spec#64

Open
youssefea wants to merge 9 commits into
masterfrom
plugins-spec-conformance
Open

feat: Plugins Spec#64
youssefea wants to merge 9 commits into
masterfrom
plugins-spec-conformance

Conversation

@youssefea
Copy link
Copy Markdown
Collaborator

  • Creating a spec for new plugins
  • Conforming the existing plugins to the spec

youssefea and others added 5 commits May 26, 2026 13:06
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@cb-heimdall
Copy link
Copy Markdown
Collaborator

cb-heimdall commented Jun 2, 2026

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
Sum 1

⚠️ Ignored Reviews (1)

Reviewer Reason
lukasrosario Soft review, as user does not have write permissions

youssefea and others added 2 commits June 2, 2026 13:57
…mance

# Conflicts:
#	skills/base-mcp/SKILL.md
#	skills/base-mcp/plugins/avantis.md
…ance

- requires.shell value `never` → `none` across the 4 http/external-mcp
  plugins and plugin-spec.md (clearer wording; same three-way semantics).
- plugin-spec.md now self-contained for an agent: per-field decision
  guidance, Runtime Routing Primitives, per-section content rules, and a
  "How to Adapt an Existing Plugin" migration procedure.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add a `tags` frontmatter field (capability/category keywords) to all 7
plugins and the spec, placed under `description`. Surface tags in the
SKILL.md plugins table so the agent routes a user request to a plugin by
matching tags first.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
| `name` | string | Lowercase slug (e.g. `morpho`). Used for cross-links and the SKILL.md table. |
| `version` | string | Plugin doc version, semver (e.g. `0.2.0`). Bump on meaningful changes (a spec-conformance restructure counts). |
| `integration` | enum | See [Integration Types](#integration-types). |
| `chains` | string[] | Base MCP chain strings the plugin targets (e.g. `[base]`, `[base, optimism]`). |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be chain ids in hex imo -- is standard across dev tools / specs

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should also limit to supported chains

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — chains now uses hex chain IDs (0x2105, 0xa) across the spec, all 7 plugins, the conformance table, and the SKILL.md discovery table. Noted in the spec that the body still passes Base MCP's string chain param (e.g. chain: "base") to send_calls — that's the MCP's runtime param, distinct from this declarative frontmatter signal.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done — the chains field description and the authoring guidance now both say to limit to chains Base MCP supports (intersect the protocol's networks with Base MCP's).

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI Base MCP doesn't use hex chain IDs in tool calls

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does it use? decimal?

4. The plugin only composes Base MCP's own higher-level tools (`swap`, `send`) with no external service → `semantic-base-tool`.
5. It needs two or more of the above depending on the surface (e.g. a CLI when a shell exists, an MCP/HTTP fallback otherwise) → `hybrid`. Document the per-surface paths in `## Surface Routing`.
- **`chains`** — list the Base MCP chain strings (e.g. `base`, `optimism`) the plugin actually targets: intersect the protocol's supported networks with Base MCP's supported chains. If the plugin never routes an onchain transaction through Base MCP (e.g. an external MCP that only uses a Base MCP signature to log in), use `[]`.
- **`tags`** — 3–5 lowercase, hyphenated keywords describing *what the user can do* — capability and category, not the protocol name (the `name` already covers that). These drive routing: the agent reads the SKILL.md tags column to decide which plugin matches a request. Reuse existing tags where they fit so similar plugins cluster. Current vocabulary: `lending`, `borrowing`, `yield`, `vaults`, `dex`, `swap`, `liquidity`, `perps`, `leverage`, `derivatives`, `trading`, `token-launches`, `memecoins`, `discovery`, `ai-agents`, `agent-commerce`, `payment-cards`, `email`. Add a new tag only when none fit.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should "new" tags also be added to this list when created? i think can be clearer

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clarified — guidance now reads "add new tags as you see fit … when you introduce a new tag, add it to this list so the vocabulary stays shared."

- chains frontmatter now uses hex chain IDs (0x2105, 0xa), limited to
  Base MCP supported chains, across all plugins, the spec, conformance
  table, and SKILL.md (per @lukasrosario). Body send_calls still uses the
  string `chain` param; noted in the spec.
- tags guidance: drop "only when none fit" → "add new tags as you see
  fit", and clarify that new tags should be added to the shared list.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@youssefea youssefea requested a review from lukasrosario June 2, 2026 16:00
@cb-heimdall
Copy link
Copy Markdown
Collaborator

Review Error for lukasrosario @ 2026-06-02 16:02:53 UTC
User failed mfa authentication, either user does not exist or public email is not set on your github profile. \ see go/mfa-help

| Prepare a lend/borrow action | Harness HTTP tool or `web_request` (GET or POST) → calldata → `send_calls`. |

Steps in `transactions[]` are ordered — `approve` and `enter-market` come before the protocol action. Execute them as a single `send_calls` batch.
**Prerequisite:** `api.moonwell.fi` must be in the MCP server's `web_request` allowlist. If requests to that hostname are rejected and no harness HTTP tool is available, inform the user that the Moonwell API is not yet whitelisted on this MCP instance.
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why does this need to be in the skill?

---
title: "Morpho Plugin"
description: "Skill plugin reference for lending on Morpho with Morpho CLI when available, or Morpho MCP on chat-only surfaces."
description: "Lending on Morpho — Morpho CLI when a shell is available, else Morpho MCP — preparing unsigned calls submitted via Base MCP send_calls."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this seems like an instruction that should be in the body of the skill, not the description

---
title: "Uniswap Plugin"
description: "Skill plugin reference for swapping and LPing on Uniswap through Base MCP."
description: "Swapping (proxy-approval, no Permit2) and V2/V3/V4 LP on Uniswap via the Uniswap API → send_calls on Base."
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

once again this feels like information that belongs in the skill body, not fit for a description of the plugin

name: morpho
version: 0.2.0
integration: hybrid
chains: [0x2105]
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be the chain name, not hex id to be consistent with MCP

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.

4 participants