From e105652b650d60efb9af5b6a0db156a080fbc1b2 Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Sun, 21 Jun 2026 17:29:22 +0300 Subject: [PATCH 1/7] Create boardwalk.md --- skills/base-mcp/plugins/boardwalk.md | 185 +++++++++++++++++++++++++++ 1 file changed, 185 insertions(+) create mode 100644 skills/base-mcp/plugins/boardwalk.md diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md new file mode 100644 index 0000000..68bf87b --- /dev/null +++ b/skills/base-mcp/plugins/boardwalk.md @@ -0,0 +1,185 @@ +--- +title: "Boardwalk Plugin" +description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." +tags: [token-launches, staking, governance, liquidity] +name: boardwalk +version: 0.4.1 +integration: hybrid +chains: [base, ethereum, arbitrum] +requires: + shell: optional + allowlist: [] + externalMcp: null + cliPackage: "npx -p @useboardwalk/sdk@0.4.1 boardwalk" +auth: none +risk: [low-liquidity, slippage, irreversible] +--- + +# Boardwalk Plugin + +> [!IMPORTANT] +> Complete the short Base MCP onboarding flow defined in `SKILL.md` before calling any Boardwalk command. Fetch the user's wallet address (`get_wallets`) only when a flow needs it. **Shell present → drive the `boardwalk` CLI; no shell → emit a prefilled launch link instead** (see `## Surface Routing`). The CLI and Base MCP never touch a private key. + +## Overview + +Boardwalk is a fee-protection token-launch platform: every launch gets permanently-locked liquidity (the LP can never be pulled) plus a built-in swap-fee equivalent that routes ongoing trading fees back to the issuer, BMX stakers, liquidity, and platform participation. Launches run as fixed-window presale auctions — contributors deposit a raise token (e.g. WETH) during the presale, and on a successful close the contract seeds permanent liquidity and lets contributors claim. + +This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), which turns a natural-language intent into **unsigned transaction calldata** — an ordered array of `{ to, data, value }` calls (plus, for launch metadata, an **EIP-712** payload to sign). The CLI never signs and never broadcasts. Calldata is submitted through Base MCP `send_calls` where the user's Base Account approves; the launch-metadata leg is signed with Base MCP `sign`. On a no-shell surface there is no calldata to submit — the plugin emits a prefilled `…/launch?path=…&prefill=…` URL the user opens in the Boardwalk UI. Base MCP can route launch / contribute / claim on `base`, `ethereum`, and `arbitrum`; BMX staking and governance voting are Base-only. + +## Installation + +No install step is required — the CLI runs per call via `npx`: + +```bash +npx -p @useboardwalk/sdk@0.4.1 boardwalk [flags] +``` + +Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. + +## Surface Routing + +The CLI is the path for every on-chain action; the no-shell fallback covers launches only. + +| Capability | Surface | Path | +|---|---|---| +| Reads (`status`, `launch-cost`) | shell | `boardwalk` CLI (viem RPC). On a 429/timeout retry with `--rpc `. | +| Writes (launch, contribute, claim, stake, vote, fees, LP, swap, …) | shell | `boardwalk` CLI → unsigned `calls` → Base MCP `send_calls`. | +| Launch-metadata signature | shell | `boardwalk launch-metadata` → EIP-712 payload → Base MCP `sign` → `submit-metadata`. | +| Start a launch | **no shell** | Emit a prefilled launch link — `boardwalk launch-link` (with a shell) or `buildLaunchLink()` from `@useboardwalk/sdk`. Hand the URL to the user; the UI collects the logo and signs/submits. | +| Anything other than a launch link | **no shell** | **Stop.** Contribute / claim / stake / vote / reads need the CLI and a signer — do not improvise a `web_request`/paste workaround. | + +## Commands + +Every transaction command prints a JSON object to stdout: an ordered `calls` array plus action-specific metadata. Reads (`status`, `launch-cost`) print a plain object with no `calls`. + +```jsonc +{ + "calls": [ + { "id": "approve-…", "label": "…", "to": "0x…", "data": "0x…", "value": "0", "chainId": 8453 }, + { "id": "", "label": "…", "to": "0x…", "data": "0x…", "value": "0", "chainId": 8453 } + ] + // …per-command meta (action, token, amounts, config, bmxBurnCost, graduationThreshold, …) +} +``` + +- **`calls` is an ORDERED array.** When an ERC-20 allowance is insufficient, a conditional **approve** is element `[0]` and the action follows; feed the whole array to one `send_calls` so the user approves once. If the allowance already covers it, the approve step is omitted. +- **`value`** is a decimal **wei** string and is `"0"` for every v1 action — no native value is ever attached. +- On **Base**, every call's `data` ends with Boardwalk's ERC-8021 builder-code suffix; submit `data` exactly as printed on any chain. + +| Command | What it does | Key flags | Scope | +|---|---|---|---| +| `launch` | Create a launch (conditional BMX approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · advanced: `--presale-percent --fee --vesting --referrer` | multi-chain | +| `launch-metadata` | Upload logo, print EIP-712 payload + submit request | `--tx\|--token --chain` · `--logo\|--logo-data\|--logo-url` · `--twitter --homepage --description --raise-goal …` | multi-chain | +| `submit-metadata` | POST signed metadata (auto-retries on 404) | `--token --chain --signature --message` | multi-chain | +| `contribute` | Join a presale (approve raise token + `contribute`) | `--token --amount --chain --wallet` · `--rpc` | multi-chain | +| `claim` | Claim presale tokens (after seeded + 7-day cliff) | `--token --chain --wallet` · `--rpc` | multi-chain | +| `refund` | Reclaim a contribution on a **failed** launch | `--token --chain --wallet` | multi-chain | +| `seed-liquidity` | Activate trading after a successful presale | `--token --chain --wallet` | multi-chain | +| `stake-bmx` / `unstake-bmx` | Stake / unstake BMX | `--amount --wallet` · `--chain base` | **Base only** | +| `handle-rewards` | Claim/compound staking rewards | `--wallet` · `--claim-op-bmx --stake-mp --claim-weth --convert-weth-to-eth` | **Base only** | +| `vote` | Vote on fee direction (`--option 1-4`) | `--option --wallet` · `--chain base` | **Base only** | +| `claim-participation` | Claim participation BMX rewards | `--epochs --wallet` · `--chain base` | **Base only** | +| `claim-issuer-fees` / `claim-referrer-fees` / `claim-integrator-fees` / `claim-vested` | Claim fees / vested tokens (resolves the per-launch contract on-chain) | `--token --chain --wallet` (+ `--recipient-idx` / `--allocation-id` / `--min-out --deadline --slippage-bps`) | multi-chain | +| `cast-visibility` | Boost / downvote a token (burns BMX) | `--token --mode boost\|deboost --chain --wallet` | multi-chain | +| `add-liquidity` / `remove-liquidity` / `stake-lp` / `unstake-lp` / `claim-lp-rewards` | Boardwalk LP management | `--token[-a/-b] --amount[-a/-b] --liquidity --chain --wallet` · `--slippage-bps` | multi-chain | +| `swap` | Swap launch↔raise token on the Boardwalk DEX | `--token --amount --direction buy\|sell --chain --wallet` · `--slippage-bps` | multi-chain | +| `launch-link` | Emit a prefilled `/launch` URL (no wallet, no signing) | `--chain --name --ticker --category` (+ optional path/socials) | URL only | +| `launch-cost` | Read the BMX burn cost to launch (with member discount) | `--chain --wallet` · `--rpc` | read-only | +| `status` | Read a launch's status / path / presale manager / raise token | `--token --chain` | read-only | + +Amounts (`--amount`, `--amount-a/-b`, `--liquidity`, `--min-out`) are **human units** — the CLI scales to wei. `--option` for `vote`: `1 = Treasury`, `2 = Buy & Burn BMX`, `3 = Buy & Burn LP`, `4 = Participation`. Validate inputs before calling; the CLI re-checks everything and exits non-zero with a one-line `Error: …` — read it, fix the one input, retry (don't loop blindly). The full per-flag validation table lives in `SKILL.md`. + +## Orchestration + +Every on-chain action follows the same shape: **`get_wallets` → run CLI → take `calls` → `send_calls` (one batch) → `get_request_status`.** Read state first where a state gate applies. + +### Launch (multi-leg: create on-chain, then attach metadata) + +1. `get_wallets` → use as `--wallet`. +2. Create the launch on-chain (express path shown; the wallet needs ≥ `bmxBurnCost` BMX): + ```bash + boardwalk launch --chain base --wallet 0x3666…1CA3 \ + --name "Agent Test Token" --ticker AGENTX --category meme-culture \ + --path express --issuer-fee 0x3666…1CA3 + ``` + → `calls = [approve-bmx, create-launch]` plus top-level `bmxBurnCost`, `config`, `graduationThreshold`. `send_calls` the batch → `get_request_status`. +3. Capture the `create-launch` tx hash from the `send_calls` result (no log-parsing — the next command resolves the token from the receipt). +4. `boardwalk launch-metadata --tx 0x --chain base --logo ./logo.png --twitter … --homepage …` → returns `{ token, auctionUrl, sign, next }`. (Have the token already? Pass `--token ` instead of `--tx`.) Advanced `--raise-goal` must **exceed** the chain's graduation threshold (surfaced by `launch` as `graduationThreshold`). +5. Sign the returned EIP-712 `sign` object with the **issuer** wallet via Base MCP `sign` → `0x…` signature. +6. `boardwalk submit-metadata --token 0x --chain base --signature 0x --message ''`. It auto-retries on 404 to ride out indexer lag. + +> The token is live after step 2, but **don't stop there** — a launch with no metadata shows on the Boardwalk UI with no name, logo, or socials. Always finish steps 4–6. + +Advanced path adds `--presale-percent` (25–50, steps of 5), repeatable `--fee ` (≥1 required), and repeatable `--vesting ` (required when `--presale-percent` < 50; not allowed at 50). + +### Contribute (only while `status == "presale"`) + +1. `get_wallets`. 2. `boardwalk status --token … --chain …` → confirm `status: "presale"` and the wallet holds ≥ amount of `raiseToken`. 3. `boardwalk contribute --token … --amount 0.01 --chain base --wallet …` → `calls = [approve-raise-token, contribute]`. 4. `send_calls` the two-element batch → `get_request_status`. + +### Claim (only after `seeded` AND the 7-day post-seed cliff) + +1. `get_wallets`. 2. `boardwalk claim --token … --chain base --wallet …`. The CLI requires `status === "seeded"`, then reads `PresaleManager.cliffEnd()`; until the cliff passes it **refuses to emit calldata** and surfaces `cliffEnd` instead of a reverting tx. 3. `send_calls` → `get_request_status`. + +### Stake BMX / Vote (Base-only) + +`boardwalk stake-bmx --amount 100 --wallet … --chain base` → `calls = [approve-bmx (conditional), stake-bmx]`. `boardwalk vote --option 1 --wallet … --chain base` → `calls = [vote]` (and a conditional `approve-bmx` at `[0]` when `governanceBurnAmount > 0`). `vote` pre-checks eligibility and refuses to emit a guaranteed-revert tx when the wallet already voted this epoch, has no staked BMX, or is below the 1.5%-of-staked-BMX participation gate — surface the error, don't retry. `send_calls` → `get_request_status`. + +### Launch link (no shell — no `send_calls`) + +`boardwalk launch-link --chain base --name "My Token" --ticker MYT --category meme-culture --issuer-fee 0xYou` → `{ url, prefill, … }`; without a shell, `buildLaunchLink(input)` from `@useboardwalk/sdk` returns the same URL. Hand `url` to the user — the UI loads the prefilled summary, collects the logo, and signs/submits. Launch only. + +The remaining actions (refund, seed-liquidity, fee/vesting/participation claims, cast-visibility, LP add/remove/stake/unstake/claim, swap) follow the identical `get_wallets → CLI → send_calls → get_request_status` flow; the fee/vesting/LP commands take only `--token` and resolve the per-launch contract on-chain. + +## Submission + +Target tool: **`send_calls`** for every on-chain action (and **`sign`** for the launch-metadata EIP-712 leg; **`none`** for `launch-link`). Each element of the CLI `calls` array maps 1:1 onto a `send_calls` call object: + +| CLI `calls[i]` | `send_calls` | Notes | +|---|---|---| +| `to` | `to` | target contract | +| `data` | `data` | full unsigned calldata (hex) — submit exactly as printed | +| `value` | `value` | decimal **wei** string (`"0"` for all v1) | +| `chainId` | (request chain) | map to Base MCP's chain string — `8453 → base`, `1 → ethereum`, `42161 → arbitrum` | +| `id` / `label` | — | human context only; not sent on-chain | + +Submit the **entire array as ONE batch** — the conditional approve and the action ride in the same request, so the user signs once, and order is preserved (approve at `[0]` before the action). Then poll **`get_request_status`** until it settles. See [../references/batch-calls.md](../references/batch-calls.md) and [../references/approval-mode.md](../references/approval-mode.md). The launch-metadata `sign` payload is EIP-712 typed data, not a `calls` entry — sign it with `sign`, then run `submit-metadata`. + +## Example Prompts + +``` +Launch a meme token called Agent Test Token, ticker AGENTX, on Base, express path +``` +1. `get_wallets` → `--wallet`. 2. `boardwalk launch --chain base --path express --name "Agent Test Token" --ticker AGENTX --category meme-culture --issuer-fee --wallet `. 3. `send_calls([approve-bmx, create-launch])` → `get_request_status`. 4. Finish the metadata sub-flow (`launch-metadata` → `sign` → `submit-metadata`). + +``` +Contribute 0.01 WETH to the BARRY presale on Base +``` +1. `get_wallets`. 2. `boardwalk status --token … --chain base` → confirm `presale` and sufficient WETH. 3. `boardwalk contribute --token … --amount 0.01 --chain base --wallet `. 4. `send_calls([approve-raise-token, contribute])` → `get_request_status`. + +``` +What does it cost me to launch on Base, and do I get the member discount? +``` +1. `get_wallets`. 2. `boardwalk launch-cost --chain base --wallet ` → read `bmxBurnCost` (wei to burn), `isMember`, `discountBps`. 3. Report the cost — this is a read, nothing to submit. (`vote --option 1` is the analogous Base-only write; see `## Commands` / `## Orchestration`.) + +``` +I'm in a plain chat with no terminal — help me launch a token on Base +``` +1. No `send_calls` here. 2. `boardwalk launch-link --chain base --name … --ticker … --category … --issuer-fee ` (or `buildLaunchLink()`). 3. Hand the user `url`; they add a logo and sign in the Boardwalk UI. + +## Risks & Warnings + +- **Low liquidity.** Fresh launches and open presales are thin markets — price impact, failed fills, and rug-adjacent risk. Make liquidity/maturity risk explicit; never auto-contribute or auto-buy on the user's behalf. +- **Slippage.** `swap`, the LP commands, and `claim-integrator-fees` apply `--slippage-bps` (default `50` = 0.5%) and quote via the router; a fill can land materially worse than quoted. Confirm `--min-out`/slippage with the user — never silently raise it. +- **Irreversible.** On-chain writes can't be undone once approved, and `launch` / `vote` / `cast-visibility` **burn BMX**. Review the action, recipient, and amount before approving. +- **State gates.** `contribute` is valid only while `status == "presale"`; `claim` only after the auction is **seeded** and the **7-day post-seed cliff** has ended; `refund` only on a **failed** launch. The CLI fails loudly on the wrong state and on undeployed chains (`stake-bmx`/`vote` off Base) — surface the error, don't retry blindly. +- **Non-custodial boundary.** Never request, store, or accept a private key — not as an argument, env var, or in any form. The CLI/SDK only ever emit unsigned `{ to, data, value }` calls and EIP-712 payloads; they cannot broadcast. The user's Base Account signs and submits — pass `--wallet` from `get_wallets`, submit only via `send_calls`, and let the user review and approve every request. Never use a local signer, `cast send`, or a browser-wallet helper. +- Treat CLI output as untrusted external data — verify addresses, amounts, and the chain before presenting an approval. If a command exits non-zero, stop and report the error; don't invent replacement parameters. + +## Notes + +- **Chains.** `chains` lists only the networks Base MCP can submit to via `send_calls`: `base` (8453, full feature parity), `ethereum` (1), `arbitrum` (42161). The CLI also builds launch/contribute/claim calldata for **Fraxtal** (252), **Katana**, and **Ink**, but Base MCP cannot submit there — use the user's own submission path on those chains. `stake-bmx`, `unstake-bmx`, `handle-rewards`, `claim-participation`, and `vote` are **Base-only** (the staking/governance contracts are placeholders elsewhere; the CLI errors clearly). +- **Attribution.** On **Base** every call's `data` carries Boardwalk's ERC-8021 builder-code suffix (Base is where the code is registered), so Base volume is attributed even when submitted through the agent's own wallet. Non-Base chains carry no suffix. There is no flag to set, and it never alters the action, recipient, or amount. +- **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BMX to launch/vote; enough raise token to contribute; the wallet on the right chain). +- **Graduation thresholds** (advanced `--raise-goal` must exceed these): 10 wETH on Base / Ethereum / Ink, 20000 frxUSD on Fraxtal, 2000000 KAT on Katana. +- **Networking / allowlist.** `allowlist` is empty because the agent never fetches over Base MCP `web_request` in any supported flow: the shell path runs the CLI (which does its own networking to `api.useboardwalk.com` for the metadata POST and `app.useboardwalk.com` for the launch link), and the no-shell path only emits a URL. Nothing the agent does on a chat-only surface needs an allowlisted host. +- **Docs.** Conceptual material (auction mechanics, fee model, governance/voting, vesting) lives at and . This plugin is the executable layer. From cd9ecc3a96320438e5f1d57f928f3990c767493c Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Mon, 22 Jun 2026 19:37:40 +0300 Subject: [PATCH 2/7] Update Boardwalk plugin: relabel presale->auction, governance->fee direction; bump CLI to v0.4.2 --- skills/base-mcp/plugins/boardwalk.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index 68bf87b..3268158 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -3,14 +3,14 @@ title: "Boardwalk Plugin" description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." tags: [token-launches, staking, governance, liquidity] name: boardwalk -version: 0.4.1 +version: 0.4.2 integration: hybrid chains: [base, ethereum, arbitrum] requires: shell: optional allowlist: [] externalMcp: null - cliPackage: "npx -p @useboardwalk/sdk@0.4.1 boardwalk" + cliPackage: "npx -p @useboardwalk/sdk@0.4.2 boardwalk" auth: none risk: [low-liquidity, slippage, irreversible] --- @@ -31,7 +31,7 @@ This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), wh No install step is required — the CLI runs per call via `npx`: ```bash -npx -p @useboardwalk/sdk@0.4.1 boardwalk [flags] +npx -p @useboardwalk/sdk@0.4.2 boardwalk [flags] ``` Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. @@ -71,10 +71,10 @@ Every transaction command prints a JSON object to stdout: an ordered `calls` arr | `launch` | Create a launch (conditional BMX approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · advanced: `--presale-percent --fee --vesting --referrer` | multi-chain | | `launch-metadata` | Upload logo, print EIP-712 payload + submit request | `--tx\|--token --chain` · `--logo\|--logo-data\|--logo-url` · `--twitter --homepage --description --raise-goal …` | multi-chain | | `submit-metadata` | POST signed metadata (auto-retries on 404) | `--token --chain --signature --message` | multi-chain | -| `contribute` | Join a presale (approve raise token + `contribute`) | `--token --amount --chain --wallet` · `--rpc` | multi-chain | -| `claim` | Claim presale tokens (after seeded + 7-day cliff) | `--token --chain --wallet` · `--rpc` | multi-chain | +| `contribute` | Join an auction (approve raise token + `contribute`) | `--token --amount --chain --wallet` · `--rpc` | multi-chain | +| `claim` | Claim tokens (after seeded + 7-day cliff) | `--token --chain --wallet` · `--rpc` | multi-chain | | `refund` | Reclaim a contribution on a **failed** launch | `--token --chain --wallet` | multi-chain | -| `seed-liquidity` | Activate trading after a successful presale | `--token --chain --wallet` | multi-chain | +| `seed-liquidity` | Activate trading after a successful auction | `--token --chain --wallet` | multi-chain | | `stake-bmx` / `unstake-bmx` | Stake / unstake BMX | `--amount --wallet` · `--chain base` | **Base only** | | `handle-rewards` | Claim/compound staking rewards | `--wallet` · `--claim-op-bmx --stake-mp --claim-weth --convert-weth-to-eth` | **Base only** | | `vote` | Vote on fee direction (`--option 1-4`) | `--option --wallet` · `--chain base` | **Base only** | From 5ed9cbbc9a3678256358266732e87439a2a69d8d Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Fri, 31 Jul 2026 12:09:34 +0300 Subject: [PATCH 3/7] Update Boardwalk plugin for the BWLK redeployment (SDK 1.0.0) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Boardwalk redeployed while this PR was open: BMX is now BWLK and the staking/governance stack moved from Base to Ethereum (weekly vote epochs). Update the plugin to the released @useboardwalk/sdk@1.0.0: - chains: [ethereum, base, arbitrum] — the intersection of Boardwalk's deployments and Base MCP's send_calls set; Robinhood Chain (4663) is noted as out of Base MCP scope in ## Notes - rename BMX flags/ids/fields to BWLK; stake/vote/rewards/participation are Ethereum-only - refresh mechanics: 0.95% fee split, swap on the chain's canonical Uniswap V2 with tax-adjusted quotes, 5 WETH graduation on every chain - pin cliPackage and the npx examples to @useboardwalk/sdk@1.0.0 - append staking + governance to the shared tag vocabulary (the sanctioned Contribution Scope edit for net-new tags) --- skills/base-mcp/plugins/boardwalk.md | 62 +++++++++++------------ skills/base-mcp/references/plugin-spec.md | 2 +- 2 files changed, 32 insertions(+), 32 deletions(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index 3268158..a77d699 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -3,14 +3,14 @@ title: "Boardwalk Plugin" description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." tags: [token-launches, staking, governance, liquidity] name: boardwalk -version: 0.4.2 +version: 1.0.0 integration: hybrid -chains: [base, ethereum, arbitrum] +chains: [ethereum, base, arbitrum] requires: shell: optional allowlist: [] externalMcp: null - cliPackage: "npx -p @useboardwalk/sdk@0.4.2 boardwalk" + cliPackage: "npx -p @useboardwalk/sdk@1.0.0 boardwalk" auth: none risk: [low-liquidity, slippage, irreversible] --- @@ -22,16 +22,16 @@ risk: [low-liquidity, slippage, irreversible] ## Overview -Boardwalk is a fee-protection token-launch platform: every launch gets permanently-locked liquidity (the LP can never be pulled) plus a built-in swap-fee equivalent that routes ongoing trading fees back to the issuer, BMX stakers, liquidity, and platform participation. Launches run as fixed-window presale auctions — contributors deposit a raise token (e.g. WETH) during the presale, and on a successful close the contract seeds permanent liquidity and lets contributors claim. +Boardwalk is a fee-protection token-launch platform: every launch gets permanently-locked liquidity (the LP can never be pulled) plus a built-in swap-fee equivalent — a 0.95% token tax split between the issuer (0.35%), Boardwalk (0.35%), LP incentives (0.15%), and integrators (0.10%). Launches run as fixed-window presale auctions — contributors deposit the chain's canonical WETH (the raise token on every chain) during the presale, and on a successful close the contract seeds permanent liquidity and lets contributors claim. -This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), which turns a natural-language intent into **unsigned transaction calldata** — an ordered array of `{ to, data, value }` calls (plus, for launch metadata, an **EIP-712** payload to sign). The CLI never signs and never broadcasts. Calldata is submitted through Base MCP `send_calls` where the user's Base Account approves; the launch-metadata leg is signed with Base MCP `sign`. On a no-shell surface there is no calldata to submit — the plugin emits a prefilled `…/launch?path=…&prefill=…` URL the user opens in the Boardwalk UI. Base MCP can route launch / contribute / claim on `base`, `ethereum`, and `arbitrum`; BMX staking and governance voting are Base-only. +This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), which turns a natural-language intent into **unsigned transaction calldata** — an ordered array of `{ to, data, value }` calls (plus, for launch metadata, an **EIP-712** payload to sign). The CLI never signs and never broadcasts. Calldata is submitted through Base MCP `send_calls` where the user's Base Account approves; the launch-metadata leg is signed with Base MCP `sign`. On a no-shell surface there is no calldata to submit — the plugin emits a prefilled `…/launch?path=…&prefill=…` URL the user opens in the Boardwalk UI. Base MCP can route launch / contribute / claim on `ethereum`, `base`, and `arbitrum`; BWLK staking and governance voting are Ethereum-only. The CLI also supports Robinhood Chain (4663), but Base MCP can't route `send_calls` there — see `## Notes`. ## Installation No install step is required — the CLI runs per call via `npx`: ```bash -npx -p @useboardwalk/sdk@0.4.2 boardwalk [flags] +npx -p @useboardwalk/sdk@1.0.0 boardwalk [flags] ``` Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. @@ -42,7 +42,7 @@ The CLI is the path for every on-chain action; the no-shell fallback covers laun | Capability | Surface | Path | |---|---|---| -| Reads (`status`, `launch-cost`) | shell | `boardwalk` CLI (viem RPC). On a 429/timeout retry with `--rpc `. | +| Reads (`status`, `launch-cost`) | shell | `boardwalk` CLI. `status` reads the Boardwalk API; `launch-cost` reads via viem RPC — on a 429/timeout retry it with `--rpc `. | | Writes (launch, contribute, claim, stake, vote, fees, LP, swap, …) | shell | `boardwalk` CLI → unsigned `calls` → Base MCP `send_calls`. | | Launch-metadata signature | shell | `boardwalk launch-metadata` → EIP-712 payload → Base MCP `sign` → `submit-metadata`. | | Start a launch | **no shell** | Emit a prefilled launch link — `boardwalk launch-link` (with a shell) or `buildLaunchLink()` from `@useboardwalk/sdk`. Hand the URL to the user; the UI collects the logo and signs/submits. | @@ -58,7 +58,7 @@ Every transaction command prints a JSON object to stdout: an ordered `calls` arr { "id": "approve-…", "label": "…", "to": "0x…", "data": "0x…", "value": "0", "chainId": 8453 }, { "id": "", "label": "…", "to": "0x…", "data": "0x…", "value": "0", "chainId": 8453 } ] - // …per-command meta (action, token, amounts, config, bmxBurnCost, graduationThreshold, …) + // …per-command meta (action, token, amounts, config, bwlkBurnCost, graduationThreshold, …) } ``` @@ -68,26 +68,26 @@ Every transaction command prints a JSON object to stdout: an ordered `calls` arr | Command | What it does | Key flags | Scope | |---|---|---|---| -| `launch` | Create a launch (conditional BMX approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · advanced: `--presale-percent --fee --vesting --referrer` | multi-chain | +| `launch` | Create a launch (conditional BWLK approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · advanced: `--presale-percent --fee --vesting --referrer` | multi-chain | | `launch-metadata` | Upload logo, print EIP-712 payload + submit request | `--tx\|--token --chain` · `--logo\|--logo-data\|--logo-url` · `--twitter --homepage --description --raise-goal …` | multi-chain | | `submit-metadata` | POST signed metadata (auto-retries on 404) | `--token --chain --signature --message` | multi-chain | | `contribute` | Join an auction (approve raise token + `contribute`) | `--token --amount --chain --wallet` · `--rpc` | multi-chain | | `claim` | Claim tokens (after seeded + 7-day cliff) | `--token --chain --wallet` · `--rpc` | multi-chain | | `refund` | Reclaim a contribution on a **failed** launch | `--token --chain --wallet` | multi-chain | | `seed-liquidity` | Activate trading after a successful auction | `--token --chain --wallet` | multi-chain | -| `stake-bmx` / `unstake-bmx` | Stake / unstake BMX | `--amount --wallet` · `--chain base` | **Base only** | -| `handle-rewards` | Claim/compound staking rewards | `--wallet` · `--claim-op-bmx --stake-mp --claim-weth --convert-weth-to-eth` | **Base only** | -| `vote` | Vote on fee direction (`--option 1-4`) | `--option --wallet` · `--chain base` | **Base only** | -| `claim-participation` | Claim participation BMX rewards | `--epochs --wallet` · `--chain base` | **Base only** | +| `stake-bwlk` / `unstake-bwlk` | Stake / unstake BWLK | `--amount --wallet` · `--chain ethereum` | **Ethereum only** | +| `handle-rewards` | Claim/compound staking rewards | `--wallet` · `--claim-bwlk --stake-mp --claim-weth --convert-weth-to-eth` | **Ethereum only** | +| `vote` | Vote on the weekly revenue direction (`--option 1-4`) | `--option --wallet` · `--chain ethereum` | **Ethereum only** | +| `claim-participation` | Claim participation BWLK rewards | `--epochs --wallet` · `--chain ethereum` | **Ethereum only** | | `claim-issuer-fees` / `claim-referrer-fees` / `claim-integrator-fees` / `claim-vested` | Claim fees / vested tokens (resolves the per-launch contract on-chain) | `--token --chain --wallet` (+ `--recipient-idx` / `--allocation-id` / `--min-out --deadline --slippage-bps`) | multi-chain | -| `cast-visibility` | Boost / downvote a token (burns BMX) | `--token --mode boost\|deboost --chain --wallet` | multi-chain | +| `cast-visibility` | Boost / downvote a token (burns BWLK) | `--token --mode boost\|deboost --chain --wallet` | multi-chain | | `add-liquidity` / `remove-liquidity` / `stake-lp` / `unstake-lp` / `claim-lp-rewards` | Boardwalk LP management | `--token[-a/-b] --amount[-a/-b] --liquidity --chain --wallet` · `--slippage-bps` | multi-chain | -| `swap` | Swap launch↔raise token on the Boardwalk DEX | `--token --amount --direction buy\|sell --chain --wallet` · `--slippage-bps` | multi-chain | +| `swap` | Swap launch↔WETH on the chain's canonical Uniswap V2 | `--token --amount --direction buy\|sell --chain --wallet` · `--slippage-bps` | multi-chain | | `launch-link` | Emit a prefilled `/launch` URL (no wallet, no signing) | `--chain --name --ticker --category` (+ optional path/socials) | URL only | -| `launch-cost` | Read the BMX burn cost to launch (with member discount) | `--chain --wallet` · `--rpc` | read-only | +| `launch-cost` | Read the BWLK burn cost to launch (with member discount) | `--chain --wallet` · `--rpc` | read-only | | `status` | Read a launch's status / path / presale manager / raise token | `--token --chain` | read-only | -Amounts (`--amount`, `--amount-a/-b`, `--liquidity`, `--min-out`) are **human units** — the CLI scales to wei. `--option` for `vote`: `1 = Treasury`, `2 = Buy & Burn BMX`, `3 = Buy & Burn LP`, `4 = Participation`. Validate inputs before calling; the CLI re-checks everything and exits non-zero with a one-line `Error: …` — read it, fix the one input, retry (don't loop blindly). The full per-flag validation table lives in `SKILL.md`. +Amounts (`--amount`, `--amount-a/-b`, `--liquidity`, `--min-out`) are **human units** — the CLI scales to wei. `--option` for `vote`: `1 = Treasury`, `2 = Buy & Burn BWLK`, `3 = Buy & Burn LP`, `4 = Participation`. Validate inputs before calling; the CLI re-checks everything and exits non-zero with a one-line `Error: …` — read it, fix the one input, retry (don't loop blindly). The full per-flag validation table lives in `SKILL.md`. ## Orchestration @@ -96,13 +96,13 @@ Every on-chain action follows the same shape: **`get_wallets` → run CLI → ta ### Launch (multi-leg: create on-chain, then attach metadata) 1. `get_wallets` → use as `--wallet`. -2. Create the launch on-chain (express path shown; the wallet needs ≥ `bmxBurnCost` BMX): +2. Create the launch on-chain (express path shown; the wallet needs ≥ `bwlkBurnCost` BWLK): ```bash boardwalk launch --chain base --wallet 0x3666…1CA3 \ --name "Agent Test Token" --ticker AGENTX --category meme-culture \ --path express --issuer-fee 0x3666…1CA3 ``` - → `calls = [approve-bmx, create-launch]` plus top-level `bmxBurnCost`, `config`, `graduationThreshold`. `send_calls` the batch → `get_request_status`. + → `calls = [approve-bwlk, create-launch]` plus top-level `bwlkBurnCost`, `config`, `graduationThreshold`. `send_calls` the batch → `get_request_status`. 3. Capture the `create-launch` tx hash from the `send_calls` result (no log-parsing — the next command resolves the token from the receipt). 4. `boardwalk launch-metadata --tx 0x --chain base --logo ./logo.png --twitter … --homepage …` → returns `{ token, auctionUrl, sign, next }`. (Have the token already? Pass `--token ` instead of `--tx`.) Advanced `--raise-goal` must **exceed** the chain's graduation threshold (surfaced by `launch` as `graduationThreshold`). 5. Sign the returned EIP-712 `sign` object with the **issuer** wallet via Base MCP `sign` → `0x…` signature. @@ -110,7 +110,7 @@ Every on-chain action follows the same shape: **`get_wallets` → run CLI → ta > The token is live after step 2, but **don't stop there** — a launch with no metadata shows on the Boardwalk UI with no name, logo, or socials. Always finish steps 4–6. -Advanced path adds `--presale-percent` (25–50, steps of 5), repeatable `--fee ` (≥1 required), and repeatable `--vesting ` (required when `--presale-percent` < 50; not allowed at 50). +Advanced path adds `--presale-percent` (25–50, steps of 5), repeatable `--fee ` (1–4 recipients), and repeatable `--vesting ` (up to 5; required when `--presale-percent` < 50; not allowed at 50). ### Contribute (only while `status == "presale"`) @@ -120,9 +120,9 @@ Advanced path adds `--presale-percent` (25–50, steps of 5), repeatable `--fee 1. `get_wallets`. 2. `boardwalk claim --token … --chain base --wallet …`. The CLI requires `status === "seeded"`, then reads `PresaleManager.cliffEnd()`; until the cliff passes it **refuses to emit calldata** and surfaces `cliffEnd` instead of a reverting tx. 3. `send_calls` → `get_request_status`. -### Stake BMX / Vote (Base-only) +### Stake BWLK / Vote (Ethereum-only) -`boardwalk stake-bmx --amount 100 --wallet … --chain base` → `calls = [approve-bmx (conditional), stake-bmx]`. `boardwalk vote --option 1 --wallet … --chain base` → `calls = [vote]` (and a conditional `approve-bmx` at `[0]` when `governanceBurnAmount > 0`). `vote` pre-checks eligibility and refuses to emit a guaranteed-revert tx when the wallet already voted this epoch, has no staked BMX, or is below the 1.5%-of-staked-BMX participation gate — surface the error, don't retry. `send_calls` → `get_request_status`. +`boardwalk stake-bwlk --amount 100 --wallet … --chain ethereum` → `calls = [approve-bwlk (conditional), stake-bwlk]`. `boardwalk vote --option 1 --wallet … --chain ethereum` → `calls = [vote]` (and a conditional `approve-bwlk` at `[0]` when the per-vote BWLK burn is above zero — it starts at 0). Votes are weekly: epoch N's vote directs epoch N+1's revenue budget. `vote` pre-checks eligibility and refuses to emit a guaranteed-revert tx when the wallet already voted this epoch, has no voting power, or is below the 1.5%-of-staked-BWLK participation gate — surface the error, don't retry. `send_calls` → `get_request_status`. ### Launch link (no shell — no `send_calls`) @@ -139,7 +139,7 @@ Target tool: **`send_calls`** for every on-chain action (and **`sign`** for the | `to` | `to` | target contract | | `data` | `data` | full unsigned calldata (hex) — submit exactly as printed | | `value` | `value` | decimal **wei** string (`"0"` for all v1) | -| `chainId` | (request chain) | map to Base MCP's chain string — `8453 → base`, `1 → ethereum`, `42161 → arbitrum` | +| `chainId` | (request chain) | map to Base MCP's chain string — `1 → ethereum`, `8453 → base`, `42161 → arbitrum`. Chain 4663 (Robinhood) is outside Base MCP — see `## Notes` | | `id` / `label` | — | human context only; not sent on-chain | Submit the **entire array as ONE batch** — the conditional approve and the action ride in the same request, so the user signs once, and order is preserved (approve at `[0]` before the action). Then poll **`get_request_status`** until it settles. See [../references/batch-calls.md](../references/batch-calls.md) and [../references/approval-mode.md](../references/approval-mode.md). The launch-metadata `sign` payload is EIP-712 typed data, not a `calls` entry — sign it with `sign`, then run `submit-metadata`. @@ -149,7 +149,7 @@ Submit the **entire array as ONE batch** — the conditional approve and the act ``` Launch a meme token called Agent Test Token, ticker AGENTX, on Base, express path ``` -1. `get_wallets` → `--wallet`. 2. `boardwalk launch --chain base --path express --name "Agent Test Token" --ticker AGENTX --category meme-culture --issuer-fee --wallet `. 3. `send_calls([approve-bmx, create-launch])` → `get_request_status`. 4. Finish the metadata sub-flow (`launch-metadata` → `sign` → `submit-metadata`). +1. `get_wallets` → `--wallet`. 2. `boardwalk launch --chain base --path express --name "Agent Test Token" --ticker AGENTX --category meme-culture --issuer-fee --wallet `. 3. `send_calls([approve-bwlk, create-launch])` → `get_request_status`. 4. Finish the metadata sub-flow (`launch-metadata` → `sign` → `submit-metadata`). ``` Contribute 0.01 WETH to the BARRY presale on Base @@ -159,7 +159,7 @@ Contribute 0.01 WETH to the BARRY presale on Base ``` What does it cost me to launch on Base, and do I get the member discount? ``` -1. `get_wallets`. 2. `boardwalk launch-cost --chain base --wallet ` → read `bmxBurnCost` (wei to burn), `isMember`, `discountBps`. 3. Report the cost — this is a read, nothing to submit. (`vote --option 1` is the analogous Base-only write; see `## Commands` / `## Orchestration`.) +1. `get_wallets`. 2. `boardwalk launch-cost --chain base --wallet ` → read `bwlkBurnCost` (wei to burn), `isMember`, `discountBps`. 3. Report the cost — this is a read, nothing to submit. (`vote --option 1` is the analogous Ethereum-only write; see `## Commands` / `## Orchestration`.) ``` I'm in a plain chat with no terminal — help me launch a token on Base @@ -169,17 +169,17 @@ I'm in a plain chat with no terminal — help me launch a token on Base ## Risks & Warnings - **Low liquidity.** Fresh launches and open presales are thin markets — price impact, failed fills, and rug-adjacent risk. Make liquidity/maturity risk explicit; never auto-contribute or auto-buy on the user's behalf. -- **Slippage.** `swap`, the LP commands, and `claim-integrator-fees` apply `--slippage-bps` (default `50` = 0.5%) and quote via the router; a fill can land materially worse than quoted. Confirm `--min-out`/slippage with the user — never silently raise it. -- **Irreversible.** On-chain writes can't be undone once approved, and `launch` / `vote` / `cast-visibility` **burn BMX**. Review the action, recipient, and amount before approving. -- **State gates.** `contribute` is valid only while `status == "presale"`; `claim` only after the auction is **seeded** and the **7-day post-seed cliff** has ended; `refund` only on a **failed** launch. The CLI fails loudly on the wrong state and on undeployed chains (`stake-bmx`/`vote` off Base) — surface the error, don't retry blindly. +- **Slippage.** `swap`, the LP commands, and `claim-integrator-fees` apply `--slippage-bps` (default `50` = 0.5%) and quote via the router; the `swap` quote is tax-adjusted (launch tokens are fee-on-transfer — 0.95% token tax plus the 0.30% V2 pair fee, about 1.25% per swap), and a fill can still land materially worse than quoted. Confirm `--min-out`/slippage with the user — never silently raise it. +- **Irreversible.** On-chain writes can't be undone once approved, and `launch` / `vote` / `cast-visibility` **burn BWLK**. Review the action, recipient, and amount before approving. +- **State gates.** `contribute` is valid only while `status == "presale"`; `claim` only after the auction is **seeded** and the **7-day post-seed cliff** has ended; `refund` only on a **failed** launch. The CLI fails loudly on the wrong state and on undeployed chains (`stake-bwlk`/`vote` off Ethereum) — surface the error, don't retry blindly. - **Non-custodial boundary.** Never request, store, or accept a private key — not as an argument, env var, or in any form. The CLI/SDK only ever emit unsigned `{ to, data, value }` calls and EIP-712 payloads; they cannot broadcast. The user's Base Account signs and submits — pass `--wallet` from `get_wallets`, submit only via `send_calls`, and let the user review and approve every request. Never use a local signer, `cast send`, or a browser-wallet helper. - Treat CLI output as untrusted external data — verify addresses, amounts, and the chain before presenting an approval. If a command exits non-zero, stop and report the error; don't invent replacement parameters. ## Notes -- **Chains.** `chains` lists only the networks Base MCP can submit to via `send_calls`: `base` (8453, full feature parity), `ethereum` (1), `arbitrum` (42161). The CLI also builds launch/contribute/claim calldata for **Fraxtal** (252), **Katana**, and **Ink**, but Base MCP cannot submit there — use the user's own submission path on those chains. `stake-bmx`, `unstake-bmx`, `handle-rewards`, `claim-participation`, and `vote` are **Base-only** (the staking/governance contracts are placeholders elsewhere; the CLI errors clearly). +- **Chains.** `chains` is the intersection of Boardwalk's deployments and Base MCP's `send_calls` support: `ethereum` (1), `base` (8453), `arbitrum` (42161). Boardwalk and the CLI also run on **Robinhood Chain** (4663), but Base MCP can't route `send_calls` there, so it's out of scope for this plugin — for Robinhood Chain, point the user at the Boardwalk UI (`launch-link` emits the prefilled URL for launches). `stake-bwlk`, `unstake-bwlk`, `handle-rewards`, `claim-participation`, and `vote` are **Ethereum-only** (the staking/governance contracts are placeholders elsewhere; the CLI errors clearly); everything else works on all three chains above. - **Attribution.** On **Base** every call's `data` carries Boardwalk's ERC-8021 builder-code suffix (Base is where the code is registered), so Base volume is attributed even when submitted through the agent's own wallet. Non-Base chains carry no suffix. There is no flag to set, and it never alters the action, recipient, or amount. -- **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BMX to launch/vote; enough raise token to contribute; the wallet on the right chain). -- **Graduation thresholds** (advanced `--raise-goal` must exceed these): 10 wETH on Base / Ethereum / Ink, 20000 frxUSD on Fraxtal, 2000000 KAT on Katana. +- **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BWLK to launch/vote; enough WETH to contribute; the wallet on the right chain). +- **Graduation threshold** (advanced `--raise-goal` must exceed it): 5 WETH on every chain, both paths. - **Networking / allowlist.** `allowlist` is empty because the agent never fetches over Base MCP `web_request` in any supported flow: the shell path runs the CLI (which does its own networking to `api.useboardwalk.com` for the metadata POST and `app.useboardwalk.com` for the launch link), and the no-shell path only emits a URL. Nothing the agent does on a chat-only surface needs an allowlisted host. - **Docs.** Conceptual material (auction mechanics, fee model, governance/voting, vesting) lives at and . This plugin is the executable layer. diff --git a/skills/base-mcp/references/plugin-spec.md b/skills/base-mcp/references/plugin-spec.md index d040303..66d94d2 100644 --- a/skills/base-mcp/references/plugin-spec.md +++ b/skills/base-mcp/references/plugin-spec.md @@ -57,7 +57,7 @@ Derive every value from the protocol's actual behavior — don't copy another pl `arbitrum`, `avalanche`, `base`, `base-sepolia`, `bsc`, `ethereum`, `optimism`, `polygon` (`base-sepolia` is the only testnet; `swap` is mainnet-only.) Read the `chain` parameter on the Base MCP tools to confirm the current set — it may change over time. 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, but add new tags as you see fit. Current vocabulary: `lending`, `borrowing`, `yield`, `vaults`, `dex`, `swap`, `liquidity`, `perps`, `leverage`, `derivatives`, `trading`, `token-launches`, `memecoins`, `discovery`, `ai-agents`, `agent-commerce`, `payment-cards`, `email`, `nft`, `marketplace`, `drops` — when you introduce a new tag, add it to this list so the vocabulary stays shared. +- **`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, but add new tags as you see fit. Current vocabulary: `lending`, `borrowing`, `yield`, `vaults`, `dex`, `swap`, `liquidity`, `perps`, `leverage`, `derivatives`, `trading`, `token-launches`, `memecoins`, `discovery`, `ai-agents`, `agent-commerce`, `payment-cards`, `email`, `nft`, `marketplace`, `drops`, `staking`, `governance` — when you introduce a new tag, add it to this list so the vocabulary stays shared. - **`requires.shell`**: - `required` — the plugin cannot function without a shell/terminal (its only path is a CLI). On shell-less surfaces the agent must stop. - `optional` — a shell unlocks a richer path (a CLI, or a tx-builder), but the plugin still works without one via an HTTP/MCP/UI fallback. From 22f58ce588d93241cf219d255adefdb3ed5d18fa Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Fri, 31 Jul 2026 12:46:50 +0300 Subject: [PATCH 4/7] Re-pin Boardwalk plugin to @useboardwalk/sdk@1.0.1 1.0.1 is published and the pinned invocation resolves. Updates the plugin doc version, the cliPackage pin, and the npx example. --- skills/base-mcp/plugins/boardwalk.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index a77d699..fba1bb3 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -3,14 +3,14 @@ title: "Boardwalk Plugin" description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." tags: [token-launches, staking, governance, liquidity] name: boardwalk -version: 1.0.0 +version: 1.0.1 integration: hybrid chains: [ethereum, base, arbitrum] requires: shell: optional allowlist: [] externalMcp: null - cliPackage: "npx -p @useboardwalk/sdk@1.0.0 boardwalk" + cliPackage: "npx -p @useboardwalk/sdk@1.0.1 boardwalk" auth: none risk: [low-liquidity, slippage, irreversible] --- @@ -31,7 +31,7 @@ This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), wh No install step is required — the CLI runs per call via `npx`: ```bash -npx -p @useboardwalk/sdk@1.0.0 boardwalk [flags] +npx -p @useboardwalk/sdk@1.0.1 boardwalk [flags] ``` Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. From e132c21a1ada7745dc87257f7e70d4e6e1c258ba Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Fri, 31 Jul 2026 13:44:28 +0300 Subject: [PATCH 5/7] Rename the 7-day launch path to "standard"; re-pin to 1.0.2 Boardwalk now calls the 7-day path a standard launch. The CLI flag, the SDK types, and the onchain contracts still use "advanced", so the doc keeps the literal alongside the new name and states the mapping in ## Notes. 1.0.2 is published and the pinned invocation resolves. --- skills/base-mcp/plugins/boardwalk.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index fba1bb3..3d275e3 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -3,14 +3,14 @@ title: "Boardwalk Plugin" description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." tags: [token-launches, staking, governance, liquidity] name: boardwalk -version: 1.0.1 +version: 1.0.2 integration: hybrid chains: [ethereum, base, arbitrum] requires: shell: optional allowlist: [] externalMcp: null - cliPackage: "npx -p @useboardwalk/sdk@1.0.1 boardwalk" + cliPackage: "npx -p @useboardwalk/sdk@1.0.2 boardwalk" auth: none risk: [low-liquidity, slippage, irreversible] --- @@ -31,7 +31,7 @@ This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), wh No install step is required — the CLI runs per call via `npx`: ```bash -npx -p @useboardwalk/sdk@1.0.1 boardwalk [flags] +npx -p @useboardwalk/sdk@1.0.2 boardwalk [flags] ``` Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. @@ -68,7 +68,7 @@ Every transaction command prints a JSON object to stdout: an ordered `calls` arr | Command | What it does | Key flags | Scope | |---|---|---|---| -| `launch` | Create a launch (conditional BWLK approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · advanced: `--presale-percent --fee --vesting --referrer` | multi-chain | +| `launch` | Create a launch (conditional BWLK approve + `create-launch`) | `--chain --wallet --name --ticker --category --path` · express: `--issuer-fee` · standard (`--path advanced`): `--presale-percent --fee --vesting --referrer` | multi-chain | | `launch-metadata` | Upload logo, print EIP-712 payload + submit request | `--tx\|--token --chain` · `--logo\|--logo-data\|--logo-url` · `--twitter --homepage --description --raise-goal …` | multi-chain | | `submit-metadata` | POST signed metadata (auto-retries on 404) | `--token --chain --signature --message` | multi-chain | | `contribute` | Join an auction (approve raise token + `contribute`) | `--token --amount --chain --wallet` · `--rpc` | multi-chain | @@ -104,13 +104,13 @@ Every on-chain action follows the same shape: **`get_wallets` → run CLI → ta ``` → `calls = [approve-bwlk, create-launch]` plus top-level `bwlkBurnCost`, `config`, `graduationThreshold`. `send_calls` the batch → `get_request_status`. 3. Capture the `create-launch` tx hash from the `send_calls` result (no log-parsing — the next command resolves the token from the receipt). -4. `boardwalk launch-metadata --tx 0x --chain base --logo ./logo.png --twitter … --homepage …` → returns `{ token, auctionUrl, sign, next }`. (Have the token already? Pass `--token ` instead of `--tx`.) Advanced `--raise-goal` must **exceed** the chain's graduation threshold (surfaced by `launch` as `graduationThreshold`). +4. `boardwalk launch-metadata --tx 0x --chain base --logo ./logo.png --twitter … --homepage …` → returns `{ token, auctionUrl, sign, next }`. (Have the token already? Pass `--token ` instead of `--tx`.) The standard path's `--raise-goal` must **exceed** the chain's graduation threshold (surfaced by `launch` as `graduationThreshold`). 5. Sign the returned EIP-712 `sign` object with the **issuer** wallet via Base MCP `sign` → `0x…` signature. 6. `boardwalk submit-metadata --token 0x --chain base --signature 0x --message ''`. It auto-retries on 404 to ride out indexer lag. > The token is live after step 2, but **don't stop there** — a launch with no metadata shows on the Boardwalk UI with no name, logo, or socials. Always finish steps 4–6. -Advanced path adds `--presale-percent` (25–50, steps of 5), repeatable `--fee ` (1–4 recipients), and repeatable `--vesting ` (up to 5; required when `--presale-percent` < 50; not allowed at 50). +The **standard** path — `--path advanced`, the name the CLI, SDK types, and onchain contracts still use — adds `--presale-percent` (25–50, steps of 5), repeatable `--fee ` (1–4 recipients), and repeatable `--vesting ` (up to 5; required when `--presale-percent` < 50; not allowed at 50). ### Contribute (only while `status == "presale"`) @@ -180,6 +180,7 @@ I'm in a plain chat with no terminal — help me launch a token on Base - **Chains.** `chains` is the intersection of Boardwalk's deployments and Base MCP's `send_calls` support: `ethereum` (1), `base` (8453), `arbitrum` (42161). Boardwalk and the CLI also run on **Robinhood Chain** (4663), but Base MCP can't route `send_calls` there, so it's out of scope for this plugin — for Robinhood Chain, point the user at the Boardwalk UI (`launch-link` emits the prefilled URL for launches). `stake-bwlk`, `unstake-bwlk`, `handle-rewards`, `claim-participation`, and `vote` are **Ethereum-only** (the staking/governance contracts are placeholders elsewhere; the CLI errors clearly); everything else works on all three chains above. - **Attribution.** On **Base** every call's `data` carries Boardwalk's ERC-8021 builder-code suffix (Base is where the code is registered), so Base volume is attributed even when submitted through the agent's own wallet. Non-Base chains carry no suffix. There is no flag to set, and it never alters the action, recipient, or amount. - **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BWLK to launch/vote; enough WETH to contribute; the wallet on the right chain). -- **Graduation threshold** (advanced `--raise-goal` must exceed it): 5 WETH on every chain, both paths. +- **Graduation threshold** (the standard path's `--raise-goal` must exceed it): 5 WETH on every chain, both paths. +- **Launch paths.** Two: **express** (24h) and **standard** (7d after a 24h start delay). "Standard" is the product name; the CLI flag, the SDK types, and the onchain contracts spell it `advanced`, so pass `--path advanced` and report results as a standard launch. - **Networking / allowlist.** `allowlist` is empty because the agent never fetches over Base MCP `web_request` in any supported flow: the shell path runs the CLI (which does its own networking to `api.useboardwalk.com` for the metadata POST and `app.useboardwalk.com` for the launch link), and the no-shell path only emits a URL. Nothing the agent does on a chat-only surface needs an allowlisted host. - **Docs.** Conceptual material (auction mechanics, fee model, governance/voting, vesting) lives at and . This plugin is the executable layer. From a478e3f60d2e29530d37980957d21a850538af89 Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Thu, 6 Aug 2026 10:37:35 +0300 Subject: [PATCH 6/7] Correct the Boardwalk graduation threshold to 2.5 WETH Express dropped from 5 to 2.5 WETH on every chain; the Standard change is timelocked and executes 2026-08-08. The two thresholds are separate timelocked values and can differ between executions, so the line now points at the `graduationThreshold` field in the `launch` output rather than presenting a written-down number as authoritative. --- skills/base-mcp/plugins/boardwalk.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index 3d275e3..e7a1c3a 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -180,7 +180,7 @@ I'm in a plain chat with no terminal — help me launch a token on Base - **Chains.** `chains` is the intersection of Boardwalk's deployments and Base MCP's `send_calls` support: `ethereum` (1), `base` (8453), `arbitrum` (42161). Boardwalk and the CLI also run on **Robinhood Chain** (4663), but Base MCP can't route `send_calls` there, so it's out of scope for this plugin — for Robinhood Chain, point the user at the Boardwalk UI (`launch-link` emits the prefilled URL for launches). `stake-bwlk`, `unstake-bwlk`, `handle-rewards`, `claim-participation`, and `vote` are **Ethereum-only** (the staking/governance contracts are placeholders elsewhere; the CLI errors clearly); everything else works on all three chains above. - **Attribution.** On **Base** every call's `data` carries Boardwalk's ERC-8021 builder-code suffix (Base is where the code is registered), so Base volume is attributed even when submitted through the agent's own wallet. Non-Base chains carry no suffix. There is no flag to set, and it never alters the action, recipient, or amount. - **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BWLK to launch/vote; enough WETH to contribute; the wallet on the right chain). -- **Graduation threshold** (the standard path's `--raise-goal` must exceed it): 5 WETH on every chain, both paths. +- **Graduation threshold** (the standard path's `--raise-goal` must exceed it): 2.5 WETH on every chain. Timelocked per path, so Express and Standard can differ — trust the `graduationThreshold` field in the `launch` output over this number. - **Launch paths.** Two: **express** (24h) and **standard** (7d after a 24h start delay). "Standard" is the product name; the CLI flag, the SDK types, and the onchain contracts spell it `advanced`, so pass `--path advanced` and report results as a standard launch. - **Networking / allowlist.** `allowlist` is empty because the agent never fetches over Base MCP `web_request` in any supported flow: the shell path runs the CLI (which does its own networking to `api.useboardwalk.com` for the metadata POST and `app.useboardwalk.com` for the launch link), and the no-shell path only emits a URL. Nothing the agent does on a chat-only surface needs an allowlisted host. - **Docs.** Conceptual material (auction mechanics, fee model, governance/voting, vesting) lives at and . This plugin is the executable layer. From 35e1d4fedee6872a524fea4b7425f91c23fb65de Mon Sep 17 00:00:00 2001 From: daedboi <87483308+daedboi@users.noreply.github.com> Date: Wed, 12 Aug 2026 00:27:24 +0300 Subject: [PATCH 7/7] Re-pin the Boardwalk plugin to @useboardwalk/sdk@2.1.0 The pinned 1.0.2 predates the launch-parameter work: it hardcodes a 5 wETH graduation threshold and a 7-day standard auction, reads neither from the factory, and rejects any --raise-goal at or below 5 wETH. Both values changed on-chain, so an agent following the pinned command would quote stale figures and block a valid standard raise goal. 2.1.0 reads the graduation threshold and auction window live from LaunchFactory and reports them as graduationThreshold and auctionDuration in the launch output. The launch-paths line now points at that field instead of naming a window, since both durations are timelock-tunable. Syncs the file to its source of truth in boardwalk-sdk (skills/boardwalk/ plugins/boardwalk.md at 69593db); no content differences remain. --- skills/base-mcp/plugins/boardwalk.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/skills/base-mcp/plugins/boardwalk.md b/skills/base-mcp/plugins/boardwalk.md index e7a1c3a..be4cc8a 100644 --- a/skills/base-mcp/plugins/boardwalk.md +++ b/skills/base-mcp/plugins/boardwalk.md @@ -3,14 +3,14 @@ title: "Boardwalk Plugin" description: "Launch, fund, and manage Boardwalk token launches — the CLI builds unsigned calldata → send_calls, or a prefilled launch link when no shell is available." tags: [token-launches, staking, governance, liquidity] name: boardwalk -version: 1.0.2 +version: 2.1.0 integration: hybrid chains: [ethereum, base, arbitrum] requires: shell: optional allowlist: [] externalMcp: null - cliPackage: "npx -p @useboardwalk/sdk@1.0.2 boardwalk" + cliPackage: "npx -p @useboardwalk/sdk@2.1.0 boardwalk" auth: none risk: [low-liquidity, slippage, irreversible] --- @@ -31,7 +31,7 @@ This plugin drives the `boardwalk` CLI (the `@useboardwalk/sdk` npm package), wh No install step is required — the CLI runs per call via `npx`: ```bash -npx -p @useboardwalk/sdk@1.0.2 boardwalk [flags] +npx -p @useboardwalk/sdk@2.1.0 boardwalk [flags] ``` Optionally install it globally (`npm i -g @useboardwalk/sdk`) and call `boardwalk ` directly. The no-shell path needs nothing installed — it only produces a URL. @@ -181,6 +181,6 @@ I'm in a plain chat with no terminal — help me launch a token on Base - **Attribution.** On **Base** every call's `data` carries Boardwalk's ERC-8021 builder-code suffix (Base is where the code is registered), so Base volume is attributed even when submitted through the agent's own wallet. Non-Base chains carry no suffix. There is no flag to set, and it never alters the action, recipient, or amount. - **No login.** There is no Privy/session step for on-chain actions — the only prerequisites are on-chain (enough BWLK to launch/vote; enough WETH to contribute; the wallet on the right chain). - **Graduation threshold** (the standard path's `--raise-goal` must exceed it): 2.5 WETH on every chain. Timelocked per path, so Express and Standard can differ — trust the `graduationThreshold` field in the `launch` output over this number. -- **Launch paths.** Two: **express** (24h) and **standard** (7d after a 24h start delay). "Standard" is the product name; the CLI flag, the SDK types, and the onchain contracts spell it `advanced`, so pass `--path advanced` and report results as a standard launch. +- **Launch paths.** Two: **express** (no start delay) and **standard** (24h start delay). Both auction windows are timelock-tunable — read the live window from the `launch` output's `auctionDuration` rather than stating a fixed length. "Standard" is the product name; the CLI flag, the SDK types, and the onchain contracts spell it `advanced`, so pass `--path advanced` and report results as a standard launch. - **Networking / allowlist.** `allowlist` is empty because the agent never fetches over Base MCP `web_request` in any supported flow: the shell path runs the CLI (which does its own networking to `api.useboardwalk.com` for the metadata POST and `app.useboardwalk.com` for the launch link), and the no-shell path only emits a URL. Nothing the agent does on a chat-only surface needs an allowlisted host. - **Docs.** Conceptual material (auction mechanics, fee model, governance/voting, vesting) lives at and . This plugin is the executable layer.