Repository navigation
feat(wallet-mcp): add Spectra plugin - #15
Open
GaspardPeduzzi wants to merge 1 commit into
Open
GaspardPeduzzi wants to merge 1 commit into
GaspardPeduzzi wants to merge 1 commit into
Conversation
Add skills/wallet-mcp/plugins/spectra.md and append fixed-rate to the tag vocabulary in plugin-spec.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Adds the Spectra Wallet MCP plugin (
skills/wallet-mcp/plugins/spectra.md, version 0.1.0,external-mcp, chainsbase,ethereum,arbitrum,optimism,bsc,avalanche). It also appendsfixed-rateto the tag vocabulary inskills/wallet-mcp/references/plugin-spec.md, the one shared-file edit the Contribution Scope allows for a new tag.Spectra is a permissionless fixed-rate and yield-trading protocol. Principal Tokens (PT) lock a fixed rate when held to maturity; the protocol also has Yield Tokens (YT), LP pools and curated MetaVaults. The plugin uses the Spectra MCP server that Perspective hosts at
https://mcp.spectra.finance/mcp/trade(Streamable HTTP, stateless, no account or API key). Its tools read markets and positions and return unsigned PT buy, sell and redeem steps{to, data, value: "0", chain_id}: an exact-amount ERC-20 approval only when the onchain allowance is short, then the Spectra router call. The server refuses calldata whosetois not the pinned router for that chain, and cross-checks each quote against the market's spot PT price.The plugin maps
chain_idto the Wallet MCP chain string. Before submitting, the agent checks the router address against a table pinned in the plugin, then submits the steps in order withsend_callsonce the user has confirmed the quote. It tells the agent to present rates as fixed only if the PT is held to maturity and never as guaranteed. The server hides tokenized-equity markets from all users.Contact: https://github.com/perspectivefi/spectra-ai/issues. Docs: https://docs.spectra.finance
Change type
Validation
tools/listonhttps://mcp.spectra.finance/mcp/tradereturns the eightspectra_*tools the plugin names.https://mcp.spectra.finance/mcpreturns the six data tools, which is how## Detectiontells the two endpoints apart. Both answertools/listwithapplication/jsonand need noinitializeround trip.The six router addresses in
## Notesmatch Spectra's pinned contract table and the Spectra app's contract registry.eth_getCodereturns contract code at each address on its chain.A 10-unit PT buy and a 10-unit PT sell on a Base market were quoted, then built with a placeholder receiver (not submitted). Each build returned
approve(<Base router>, exact amount)on the token being spent, then the router'sexecute(bytes,bytes[])withTRANSFER_FROMas its first command, all withvalue0. There is no permit and no embedded signature, so the batch works with the smart-contract Coinbase Wallet Account.Checked by hand against
references/plugin-spec.md: frontmatter enums, canonical sections and order, the authoring checklist and the contribution scope. Also checked against the evaluation criteria of theplugin-reviewskill, which is not in this repo; it was removed frombase/skillsin chore: remove wallet-mcp and base-mcp skills base/skills#171, and its last version is at base/skills@ef8bcd52. Relative links resolve under the same rule asvalidate_links.On this branch,
python3 -m unittest discover -s testspasses (38 tests) andpython3 scripts/build-distributions.py distsucceeds.Not run: an authenticated Wallet MCP
send_calls, or any onchain transaction.Generated portable manifest and MCP config validate against the vendored Agent Plugins schemas (N/A: no manifest or MCP config changes)
Package paths and skill references remain inside each generated plugin root (N/A:
wallet-mcpis not packaged; the plugin links only to../references/)Marketplace, skills, MCP, and icon paths are valid (N/A: no changes)
Exactly one canonical skill library; generated copies are not committed
Claude compatibility metadata/endpoint and marketplace sources agree with the portable package (N/A: no changes)
Tool schemas, authorization, and retry behavior reviewed (the Spectra MCP needs no auth; the plugin forbids silent retries and slippage changes)
README and changelog updated; versions consistent (N/A: the Contribution Scope limits plugin PRs to the plugin file and the tag line)
No unapproved disclosures or sensitive data
Signed commits
Release considerations
Maintainers add the
SKILL.mdregistry row and the conformance entry on acceptance. Noskills/base-mcp/plugins/copy is included because that folder does not exist in this repo.As of 2026-11-03 the public Spectra catalog lists markets on Base, Ethereum, BNB Chain and Avalanche, and none on Arbitrum or Optimism. Both stay in
chainsbecause the Spectra router is deployed there and pools are permissionless.🤖 Generated with Claude Code