@baseline-markets/cli 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@baseline-markets/cli",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "repository": {
6
6
  "type": "git",
@@ -1,33 +1,303 @@
1
1
  ---
2
+ title: "Baseline Plugin"
3
+ description: "Launch Baseline tokens with the Baseline CLI, then submit unsigned calls through Base MCP send_calls."
4
+ tags: [token-launches, liquidity, ai-agents]
2
5
  name: base-mcp-baseline
3
- description: Vendors the Baseline plugin for Base MCP so agents can launch Baseline tokens with the Baseline CLI and Base Account approval. Use when a user wants to use Base MCP, Base Account, send_calls, or the Baseline CLI to prepare and submit a Baseline token launch.
6
+ version: 0.2.0
7
+ integration: cli-only
8
+ chains: [base, base-sepolia, ethereum]
9
+ requires:
10
+ shell: required
11
+ allowlist: []
12
+ externalMcp: null
13
+ cliPackage: "npx @baseline-markets/cli@latest"
14
+ auth: none
15
+ risk: [low-liquidity, irreversible, local-exec]
4
16
  ---
5
17
 
6
- # Baseline Base MCP
18
+ # Baseline Plugin
7
19
 
8
- This skill packages the Baseline Base MCP plugin with `@baseline-markets/cli`.
9
- The plugin file is the source of truth; do not duplicate or improvise the launch
10
- workflow here.
20
+ > [!IMPORTANT]
21
+ > Complete the Base MCP onboarding flow before calling any Baseline flow. This
22
+ > skill requires a shell-capable harness and a connected Base Account.
11
23
 
12
- ## Quick Start
24
+ ## Overview
13
25
 
14
- 1. If the installed Base MCP skill already includes a native `baseline` plugin,
15
- use that native plugin.
16
- 2. Otherwise, read and follow [plugins/baseline.md](plugins/baseline.md).
17
- 3. Use the local `baseline` binary when available; otherwise use the `npx`
18
- command documented in the plugin.
26
+ Baseline is an AMM for tokens with token-owned liquidity that grows itself. A
27
+ Baseline token operates its own liquidity pool, so a creator or agent can launch
28
+ without managing external LP positions, capture swap fees that would otherwise go
29
+ to outside liquidity providers, and split those fees between a creator recipient
30
+ and token stakers. This skill launches a Baseline token on Ethereum mainnet, Base
31
+ mainnet, or Base Sepolia by running the Baseline CLI to prepare unsigned launch
32
+ calls, then submitting those calls through Base MCP's `send_calls`, where the
33
+ user approves in Base Account.
19
34
 
20
- ## Boundary
35
+ This is a CLI-only Base MCP plugin flow: it only works in harnesses with
36
+ shell/terminal access. It does not work on chat-only surfaces that cannot run
37
+ commands. No additional MCP server is required beyond Base MCP.
21
38
 
22
- - The installed Base MCP skill/server is still required.
23
- - The Baseline CLI prepares unsigned launch call artifacts.
24
- - Base MCP provides wallet identity, Base Account approval, submission, and
25
- request-status polling.
26
- - Do not use `baseline launch --execute` in the Base MCP flow.
27
- - Do not ask for, load, print, or use a private key.
39
+ Chains:
28
40
 
29
- ## Distribution
41
+ - Ethereum mainnet: `chainId` `1`, Base MCP chain string `ethereum`.
42
+ - Base mainnet: `chainId` `8453`, Base MCP chain string `base`.
43
+ - Base Sepolia: `chainId` `84532`, Base MCP chain string `base-sepolia`.
30
44
 
31
- This wrapper exists so users who discover Baseline through the CLI can install
32
- the same Base MCP plugin instructions before the plugin is available natively in
33
- their Base MCP skill bundle.
45
+ ## Installation
46
+
47
+ No MCP registration or permanent install is required; the CLI runs per call via
48
+ `npx`.
49
+
50
+ Use an installed CLI when available:
51
+
52
+ ```sh
53
+ baseline launch --help
54
+ ```
55
+
56
+ Otherwise invoke the published package:
57
+
58
+ ```sh
59
+ npx @baseline-markets/cli@latest launch --help
60
+ ```
61
+
62
+ ## Surface Routing
63
+
64
+ Every launch calldata artifact is built by the Baseline CLI and therefore
65
+ requires a harness with shell/terminal access.
66
+
67
+ | Surface | Path |
68
+ | --- | --- |
69
+ | Shell-capable harness | Run `baseline launch` or `npx @baseline-markets/cli@latest launch`, validate the artifact, submit via `send_calls`. |
70
+ | Chat-only surface | Not supported. Tell the user this Baseline plugin requires CLI access and stop. Do not route through `web_request`, use a user-paste fallback, ask for private keys, or hand-build calldata. |
71
+
72
+ ## Commands
73
+
74
+ `baseline launch` writes an unsigned call artifact. The artifact is a superset
75
+ of the `send_calls` payload: `chain` and `calls` are submitted directly, while
76
+ `chainId`, `account`, and `bToken` are validation and reporting metadata.
77
+
78
+ ```json
79
+ {
80
+ "chainId": 84532,
81
+ "chain": "base-sepolia",
82
+ "account": "0xBaseAccount",
83
+ "bToken": "0xBToken",
84
+ "calls": [
85
+ { "to": "0xTarget", "data": "0xCalldata", "value": "0x0" }
86
+ ]
87
+ }
88
+ ```
89
+
90
+ ### Zero-Reserve Pool Launch
91
+
92
+ Zero-reserve pool launch (`zrp`) is the default mode. It deposits the full
93
+ BToken supply into the pool without initial reserve liquidity.
94
+
95
+ Base Sepolia example:
96
+
97
+ ```sh
98
+ baseline launch \
99
+ --mode zrp \
100
+ --chain-id 84532 \
101
+ --account "$BASE_MCP_WALLET" \
102
+ --name "$TOKEN_NAME" \
103
+ --symbol "$TOKEN_SYMBOL" \
104
+ --reserve 0xB85885897D297000A74eA2e4711C3Ca729461ABC \
105
+ --total-supply "$TOTAL_SUPPLY" \
106
+ --output .context/launches/baseline-launch.json
107
+ ```
108
+
109
+ ### Standard Launch
110
+
111
+ Standard launches include initial reserve liquidity. Require both the initial
112
+ pool BToken amount and the reserve seed amount.
113
+
114
+ Base Sepolia example:
115
+
116
+ ```sh
117
+ baseline launch \
118
+ --mode standard \
119
+ --chain-id 84532 \
120
+ --account "$BASE_MCP_WALLET" \
121
+ --name "$TOKEN_NAME" \
122
+ --symbol "$TOKEN_SYMBOL" \
123
+ --reserve 0xB85885897D297000A74eA2e4711C3Ca729461ABC \
124
+ --total-supply "$TOTAL_SUPPLY" \
125
+ --initial-pool-btokens "$POOL_BTOKENS" \
126
+ --initial-pool-reserves "$RESERVE_SEED" \
127
+ --output .context/launches/baseline-launch.json
128
+ ```
129
+
130
+ ### Chain And Reserve Selection
131
+
132
+ Use the chain ID and approved reserve token for the selected network:
133
+
134
+ | Network | `--chain-id` | `artifact.chain` | WETH reserve |
135
+ | --- | --- | --- | --- |
136
+ | Ethereum mainnet | `1` | `ethereum` | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` |
137
+ | Base mainnet | `8453` | `base` | `0x4200000000000000000000000000000000000006` |
138
+ | Base Sepolia | `84532` | `base-sepolia` | `0xB85885897D297000A74eA2e4711C3Ca729461ABC` |
139
+
140
+ Treat Ethereum mainnet and Base mainnet as production. Confirm the user
141
+ explicitly requested production execution before preparing calls on either
142
+ mainnet.
143
+
144
+ Do not pass `--execute`, `--private-key`, or `BASELINE_PRIVATE_KEY` in this
145
+ plugin flow. Base MCP is the only submission path.
146
+
147
+ ### Optional Launch Parameters
148
+
149
+ Use these flags when the user asks to customize launch ownership or fee routing:
150
+
151
+ | Flag | Purpose | Default |
152
+ | --- | --- | --- |
153
+ | `--creator <address>` | Creator address recorded on the launch. | Launch account |
154
+ | `--fee-recipient <address>` | Address receiving the creator share of swap fees. | Creator |
155
+ | `--creator-fee-pct <percent>` | Creator share of swap fees, from `0` to `100`. | `50` |
156
+ | `--swap-fee-pct <percent>` | Swap fee charged by the pool. | `1` |
157
+ | `--salt <bytes32>` | Deterministic deployment salt. | Zero bytes32 |
158
+ | `--reserve-decimals <number>` | Decimal precision for `--initial-pool-reserves`. | `18` |
159
+
160
+ The remaining fee share goes to token stakers. With the default
161
+ `--creator-fee-pct 50`, swap fees are split 50% to the creator fee recipient
162
+ and 50% to stakers.
163
+
164
+ ## Orchestration
165
+
166
+ ### Launch
167
+
168
+ 1. Complete Base MCP onboarding and confirm Base MCP tools are available.
169
+ 2. Fetch the wallet address only when needed with `get_wallets`; use the
170
+ in-session Base Account address as `BASE_MCP_WALLET`.
171
+ 3. Gather token name, symbol, total supply, launch mode, chain, reserve token,
172
+ creator, fee recipient, swap fee, and creator fee. Default to Base Sepolia
173
+ `84532` and `zrp` unless the user explicitly chooses otherwise.
174
+ 4. For `standard`, require both `POOL_BTOKENS` and a nonzero `RESERVE_SEED`.
175
+ `POOL_BTOKENS` must be less than `TOTAL_SUPPLY` so some supply remains
176
+ outside the initial pool.
177
+ 5. Run `baseline launch` with `--output`. If the CLI exits nonzero, fix inputs
178
+ and rerun; do not salvage partial output.
179
+ 6. Parse the artifact JSON and validate it before submission:
180
+ - `account` equals the connected Base Account.
181
+ - `chainId` is `1`, `8453`, or `84532`.
182
+ - `chain` is `ethereum`, `base`, or `base-sepolia`.
183
+ - `chain` matches `chainId`.
184
+ - `bToken` is a valid address.
185
+ - `calls` is an ordered array and every call has `to`, `data`, and `value`.
186
+ - No `execution` field is present.
187
+ - `zrp` has three calls; `standard` has four calls.
188
+ 7. For `chainId` `1` or `8453`, confirm the exact chain, token name, symbol,
189
+ supply, reserve, fees, creator, and fee recipient immediately before
190
+ `send_calls`.
191
+ 8. Submit the calls through `send_calls` as described in [Submission](#submission).
192
+ 9. Show the returned approval URL as an `[Approve Transaction](<approvalUrl>)`
193
+ link, include the request ID, print the link as a fallback, and open it with
194
+ the local shell when the harness supports that.
195
+ 10. Wait for the user to confirm they approved in Base Account, then poll
196
+ `get_request_status(requestId)`. If it is still pending, retry with a short
197
+ delay; never report success until the request is completed.
198
+ 11. After completion, run `baseline info "$BTOKEN" --chain-id "$CHAIN_ID"`
199
+ using the artifact `bToken` and `chainId` when the command is available.
200
+
201
+ ## Submission
202
+
203
+ Submit with Base MCP `send_calls`. Use `artifact.chain` directly and pass
204
+ `artifact.calls` without editing calldata or changing order:
205
+
206
+ ```json
207
+ {
208
+ "chain": "base-sepolia",
209
+ "calls": [
210
+ { "to": "0xTarget", "data": "0xCalldata", "value": "0x0" }
211
+ ]
212
+ }
213
+ ```
214
+
215
+ Do not include `artifact.account` in the `send_calls` payload; Base MCP uses
216
+ the connected Base Account session for approval and execution.
217
+
218
+ Expected call sequences:
219
+
220
+ - `zrp`: Relay `createBToken`, BToken `approve`, Relay
221
+ `createPoolFromInvariant`.
222
+ - `standard`: Relay `createBToken`, BToken `approve`, reserve `approve`, Relay
223
+ `createPool`.
224
+
225
+ Any `send_calls` approval URL follows the standard Base MCP approval flow: show
226
+ the approval URL as an `[Approve Transaction](<approvalUrl>)` link, include the
227
+ request ID, print the link as a fallback, wait for the user to approve in Base
228
+ Account, then poll `get_request_status`.
229
+
230
+ ## Example Prompts
231
+
232
+ Launch a Base Sepolia test token:
233
+
234
+ 1. Get the Base Account with `get_wallets`.
235
+ 2. Run the `zrp` Base Sepolia `baseline launch` command with the requested name,
236
+ symbol, and supply.
237
+ 3. Validate the artifact and call count.
238
+ 4. Submit `artifact.calls` to `send_calls` with `chain: artifact.chain`.
239
+ 5. Wait for approval, poll status, then run `baseline info`.
240
+
241
+ Launch a standard token with seed liquidity:
242
+
243
+ 1. Require `POOL_BTOKENS` and `RESERVE_SEED`.
244
+ 2. Run `baseline launch --mode standard`.
245
+ 3. Confirm the artifact has four ordered calls.
246
+ 4. Submit the batch with `send_calls`.
247
+ 5. Wait for approval, poll status, then run `baseline info`.
248
+
249
+ Launch on Base mainnet:
250
+
251
+ 1. Confirm the user explicitly requested Base mainnet production execution.
252
+ 2. Use chain ID `8453` and reserve
253
+ `0x4200000000000000000000000000000000000006`.
254
+ 3. Validate the artifact carefully before `send_calls`.
255
+ 4. Submit with `chain: "base"` only after the user confirms the mainnet launch.
256
+
257
+ Use from a chat-only app:
258
+
259
+ 1. Stop.
260
+ 2. Explain that this plugin is CLI-only and requires a shell-capable harness.
261
+ 3. Do not use HTTP, pasted URLs, private keys, or hand-built calldata as a
262
+ workaround.
263
+
264
+ ## Risks And Warnings
265
+
266
+ - `low-liquidity`: New token pools may have thin liquidity and volatile prices.
267
+ Do not imply liquidity depth, execution quality, or market safety beyond the
268
+ explicit launch inputs.
269
+ - `irreversible`: A submitted launch cannot be undone through this plugin.
270
+ Confirm chain, token name, symbol, supply, reserve, fees, creator, and fee
271
+ recipient before `send_calls`.
272
+ - `local-exec`: The plugin runs the Baseline CLI on the user's machine. Use the
273
+ installed `baseline` binary when trusted by the user, or the documented
274
+ `npx @baseline-markets/cli@latest` package invocation.
275
+
276
+ ## Notes
277
+
278
+ Constants:
279
+
280
+ ```text
281
+ ethereum.chain: ethereum
282
+ ethereum.chainId: 1
283
+ ethereum.reserve: 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
284
+ base.chain: base
285
+ base.chainId: 8453
286
+ base.reserve: 0x4200000000000000000000000000000000000006
287
+ baseSepolia.chain: base-sepolia
288
+ baseSepolia.chainId: 84532
289
+ baseSepolia.reserve: 0xB85885897D297000A74eA2e4711C3Ca729461ABC
290
+ relay: 0xc81Fd894C0acE037d133aF4886550aC8133568E8
291
+ zeroBytes32: 0x0000000000000000000000000000000000000000000000000000000000000000
292
+ ```
293
+
294
+ Default launch assumptions:
295
+
296
+ - `zrp` is the default launch mode.
297
+ - Swap fee defaults to `1%`; protocol bounds are `0.15%` to `50%`.
298
+ - Creator fee share defaults to `50%`; the remaining share goes to token
299
+ stakers. Change it with `--creator-fee-pct <percent>`.
300
+ - Creator defaults to the launch account.
301
+ - Fee recipient defaults to creator.
302
+ - Salt defaults to zero `bytes32`.
303
+ - Reserve decimals default to `18`.
@@ -1,15 +1,19 @@
1
1
  ---
2
- name: launch
3
- description: Builds Baseline token launch artifacts with the Baseline CLI and optionally executes them with an explicit signer. Use when a user wants to launch a Baseline token, generate launch calls, create wallet_sendCalls JSON, or use `baseline launch`.
2
+ name: baseline-cli
3
+ description: Guides agents through Baseline CLI workflows.
4
4
  ---
5
5
 
6
- # Launch
6
+ # Baseline CLI
7
7
 
8
- Use this skill to guide agents through `baseline launch`. The default workflow
9
- is to build and review an unsigned call artifact; execute only when the user
10
- explicitly asks for live submission.
8
+ Use this skill when a user wants an agent to use the Baseline CLI beyond a
9
+ single command reference. The generated command skills (`baseline-launch` and
10
+ `baseline-info`) document flags; this skill documents the launch workflow,
11
+ artifact contract, validation rules, and execution boundaries.
11
12
 
12
- ## Quick Start
13
+ ## Launch Workflow
14
+
15
+ Default to building and reviewing an unsigned call artifact. Execute only when
16
+ the user explicitly asks for local signer submission.
13
17
 
14
18
  Show the command surface first when inputs are unclear:
15
19
 
@@ -63,8 +67,8 @@ baseline info "$BTOKEN" --chain-id "$CHAIN_ID"
63
67
 
64
68
  ## Launch Modes
65
69
 
66
- `zrp` is the default zero-reserve launch mode. It derives pool BTokens from
67
- `--total-supply`, has no reserve seed, and has no reserve approval call.
70
+ `zrp` is the default zero-reserve pool launch mode. It derives pool BTokens
71
+ from `--total-supply`, has no reserve seed, and has no reserve approval call.
68
72
 
69
73
  `standard` launches with reserve liquidity and requires both pool BTokens and a
70
74
  reserve seed:
@@ -91,8 +95,8 @@ Reuse the artifact command and add `--execute --private-key "$PRIVATE_KEY"`.
91
95
  `BASELINE_PRIVATE_KEY` may be used instead of `--private-key`. `--account` is
92
96
  optional with `--execute` because the CLI can derive it from the private key.
93
97
  The CLI sends sequential transactions and returns `execution.transactions`.
94
- Do not use `--execute` for external executors such as Base MCP, Bankr, or Aeon;
95
- those consume `artifact.calls`.
98
+ Do not use `--execute` for external executors such as Base MCP; those consume
99
+ `artifact.calls`.
96
100
  Never print, commit, or persist private keys.
97
101
 
98
102
  ## Defaults And Notes
@@ -101,6 +105,8 @@ Never print, commit, or persist private keys.
101
105
  - `--reserve` must be the intended reserve token on that chain.
102
106
  - Require explicit user approval before preparing or executing a production
103
107
  launch.
104
- - Swap fee defaults to `1%`; creator fee share defaults to `50%`.
108
+ - Swap fee defaults to `1%`; change it with `--swap-fee-pct <percent>`.
109
+ - Creator fee share defaults to `50%`, with the remaining fee share going to
110
+ stakers; change the split with `--creator-fee-pct <percent>`.
105
111
  - Creator defaults to `account`; fee recipient defaults to creator.
106
112
  - Salt is optional and must be bytes32 when provided.
@@ -1,154 +0,0 @@
1
- ---
2
- name: aeon-baseline
3
- description: Execute a Baseline launch call artifact through an Aeon operator workflow.
4
- var: ""
5
- tags: [crypto, onchain]
6
- capabilities: [external_api, writes_external_host, onchain_writes, sends_notifications]
7
- ---
8
-
9
- > **${var}** - Path to a saved `baseline launch` JSON artifact, or empty
10
- > when `run.vars.launchArtifact` already contains the artifact object. If
11
- > neither is available, notify `LAUNCH_BASELINE_NO_ARTIFACT` and stop.
12
-
13
- Today is ${today}. Execute a Baseline launch call artifact through the
14
- configured Aeon operator surface without inventing calldata, signers, or wallet
15
- policy.
16
-
17
- ## Required Config
18
-
19
- - `AEON_RUN_URL` is required only when dispatching this skill through the
20
- repository CLI executor.
21
- - `AEON_AUTH_TOKEN` is optional and is sent as `Authorization: Bearer ...` by
22
- the CLI executor when configured.
23
- - The launch artifact must already be produced by `baseline launch`.
24
- - Aeon execution is Base mainnet only in v1.
25
- - Register this skill in an Aeon instance by copying this folder under
26
- `skills/`, running `./generate-skills-json`, and adding an `aeon.yml` entry
27
- with `enabled: false` and `schedule: "manual"` until an operator explicitly
28
- enables it.
29
-
30
- ## CLI Artifact Contract
31
-
32
- `baseline launch` builds and validates the canonical call artifact. The
33
- `--output` file is the source of truth:
34
-
35
- ```json
36
- {
37
- "chainId": 8453,
38
- "chain": "base",
39
- "account": "0xAeonOperatorWallet",
40
- "bToken": "0x...",
41
- "calls": [{ "to": "0x...", "data": "0x...", "value": "0x0" }]
42
- }
43
- ```
44
-
45
- Required Aeon launch inputs:
46
-
47
- - `--mode zrp` or `--mode standard`
48
- - `--chain-id 8453`
49
- - `--account "$AEON_OPERATOR_WALLET"`
50
- - `--name "$TOKEN_NAME"`
51
- - `--symbol "$TOKEN_SYMBOL"`
52
- - `--reserve 0x4200000000000000000000000000000000000006`
53
- - `--total-supply "$TOTAL_SUPPLY"`
54
- - `--initial-pool-btokens "$POOL_BTOKENS"` for `standard`
55
- - `--initial-pool-reserves "$RESERVE_SEED"` for `standard`
56
- - `--output .context/launches/aeon-launch.json`
57
-
58
- Key optional controls:
59
-
60
- - Fees: `--swap-fee-pct` and `--creator-fee-pct`.
61
- - Parties and salt: `--creator`, `--fee-recipient`, and `--salt`.
62
-
63
- Build the handoff artifact before running this skill:
64
-
65
- ```sh
66
- baseline launch \
67
- --mode zrp \
68
- --chain-id 8453 \
69
- --account "$AEON_OPERATOR_WALLET" \
70
- --name "$TOKEN_NAME" \
71
- --symbol "$TOKEN_SYMBOL" \
72
- --reserve 0x4200000000000000000000000000000000000006 \
73
- --total-supply "$TOTAL_SUPPLY" \
74
- --output .context/launches/aeon-launch.json
75
- ```
76
-
77
- Before Aeon execution, verify `chainId`, `account`, call count, call order,
78
- allowed targets, and selected mode economics. `zrp` artifacts use
79
- three calls and all BTokens in the pool. `standard` artifacts use four calls,
80
- a nonzero reserve seed, and `createPool`.
81
-
82
- ## Steps
83
-
84
- 1. **Load the artifact.** If `run.vars.launchArtifact` exists, use it.
85
- Otherwise read the JSON file path from `${var}`. If both are absent, run:
86
-
87
- ```sh
88
- ./notify "LAUNCH_BASELINE_NO_ARTIFACT: provide var=<path-to-launch-artifact.json> or run.vars.launchArtifact"
89
- ```
90
-
91
- Then stop.
92
-
93
- 2. **Validate the artifact.** Confirm:
94
-
95
- - `chainId` is `8453`.
96
- - `account` is present and is the expected Aeon operator wallet.
97
- - `calls` is an array with exactly three or four items.
98
- - Every call has `to`, `data`, and `value`.
99
-
100
- 3. **Validate transaction shape.** Confirm the call order matches the selected
101
- mode:
102
-
103
- - `zrp`: Relay `createBToken`, BToken `approve`, Relay
104
- `createPoolFromInvariant`.
105
- - `standard`: Relay `createBToken`, BToken `approve`, reserve `approve`, Relay
106
- `createPool`.
107
-
108
- Reject any artifact whose targets are outside the Baseline Relay, precomputed
109
- BToken, and reserve token.
110
-
111
- 4. **Respect the executor boundary.** Do not sign directly, do not ask for a
112
- private key, and do not rebuild calldata by hand. Use the artifact calls
113
- exactly as produced by the CLI or abort with a notification explaining the
114
- mismatch.
115
-
116
- 5. **Submit through the configured Aeon operator workflow.** If this skill is
117
- running inside Aeon with a wallet-capable operator surface, submit the
118
- ordered Base mainnet calls according to that operator's configured wallet
119
- policy. If no wallet execution surface is configured, emit a handoff
120
- notification and stop without broadcasting.
121
-
122
- 6. **Verify on-chain state.** After a successful run, perform read-only checks:
123
-
124
- - BToken code is non-empty.
125
- - Maker initialization is true.
126
- - Reserve equals Base WETH.
127
- - Creator and fee recipient match the artifact expectations.
128
- - For `zrp`, total reserves and deployer BToken balance are `0`.
129
-
130
- 7. **Log.** Append to `memory/logs/${today}.md`:
131
-
132
- ```markdown
133
- ## aeon-baseline
134
- - Artifact: ARTIFACT_PATH_OR_INLINE
135
- - Chain ID: 8453
136
- - Account: ACCOUNT
137
- - Status: SUBMITTED | HANDOFF_READY | VERIFIED | REJECTED
138
- - Transaction hashes: HASHES_OR_NONE
139
- ```
140
-
141
- 8. **Notify.** Send a notification under 4000 characters:
142
-
143
- ```text
144
- Baseline launch: STATUS
145
- Account: ACCOUNT
146
- Txs: HASHES_OR_HANDOFF
147
- Next: verification summary or rejection reason
148
- ```
149
-
150
- ## Sandbox Note
151
-
152
- Authenticated wallet or run APIs may not be reachable from the Claude sandbox.
153
- If secrets are unavailable, do not fail noisily or fabricate execution. Notify
154
- `LAUNCH_BASELINE_HANDOFF_READY`, write the handoff details to memory, and stop.
@@ -1,260 +0,0 @@
1
- ---
2
- name: bankr-baseline
3
- description: Build Baseline launch call artifacts and submit them with Bankr Wallet API
4
- tags: [crypto, baseline, token, erc20]
5
- version: 1
6
- ---
7
-
8
- # Bankr Baseline
9
-
10
- Use this skill when a user wants an agent to plan and deploy a Baseline token
11
- with this repository's `baseline` CLI and Bankr's Wallet API.
12
-
13
- ## Skill Contract
14
-
15
- | Field | Requirement |
16
- |---|---|
17
- | Purpose | Build, review, and submit explicit Baseline launch calls. |
18
- | Supported chain | Confirmed Bankr execution uses Base mainnet, chain ID `8453`. |
19
- | Pending validation | Base Sepolia `84532` needs authenticated Wallet API validation before Bankr execution. |
20
- | Planner | The local `baseline` CLI is the launch calldata builder. |
21
- | Protocol surface | The CLI uses Baseline SDK/protocol helpers for economics, addresses, and calldata. |
22
- | Wallet executor | Bankr provides wallet identity, signing, and transaction submission only. |
23
- | Allowed Bankr endpoints | `GET /wallet/me` and `POST /wallet/submit`. |
24
- | Canonical artifact | `baseline launch` call artifact with `{ chainId, chain, account, bToken, calls }`. |
25
- | Hard stops | No private keys, Bankr native launches, Agent API prompts, or hand-built calldata. |
26
-
27
- Base MCP remains the confirmed Sepolia test executor in this repository. Bankr
28
- Wallet API docs document explicit transaction submission by `chainId`, but do
29
- not currently document Base Sepolia `84532` as supported. Do not use Bankr for
30
- Base Sepolia execution until an authenticated validation run proves support.
31
-
32
- ## Protocol Constants
33
-
34
- | Chain | Chain ID | Reserve | Use |
35
- |---|---:|---|---|
36
- | Base Sepolia | `84532` | `0xB85885897D297000A74eA2e4711C3Ca729461ABC` | Pending Bankr validation. |
37
- | Base mainnet | `8453` | `0x4200000000000000000000000000000000000006` | Approved production launches. |
38
-
39
- Baseline Relay proxy on both profiles:
40
- `0xc81Fd894C0acE037d133aF4886550aC8133568E8`.
41
-
42
- ## Required Setup
43
-
44
- - `BANKR_API_KEY` must be set only in the local execution environment or secret
45
- manager.
46
- - Optional: `BANKR_API_BASE`, defaulting to `https://api.bankr.bot`.
47
- - The Bankr key must have Wallet API write access enabled and must not be
48
- read-only.
49
- - Raw `/wallet/submit` cannot be used when the key has `allowedRecipients`
50
- restrictions, because Bankr blocks raw submissions for those keys.
51
- - The Bankr EVM wallet returned by `/wallet/me` is the Baseline launch
52
- `account` unless the user explicitly chooses another supported policy.
53
-
54
- ## CLI Artifact Contract
55
-
56
- The CLI is the only Baseline launch calldata builder in this workflow. It
57
- collects launch inputs, applies defaults, calls SDK-backed protocol helpers,
58
- builds ordered raw calls, and writes a JSON artifact. It does not custody keys
59
- or sign transactions.
60
-
61
- `baseline launch` writes the canonical artifact:
62
-
63
- ```json
64
- {
65
- "chainId": 8453,
66
- "chain": "base",
67
- "account": "0xBankrWallet",
68
- "bToken": "0x...",
69
- "calls": [{ "to": "0x...", "data": "0x...", "value": "0x0" }]
70
- }
71
- ```
72
-
73
- Required Bankr launch flags:
74
-
75
- | Flag | Required value | Description |
76
- |---|---|---|
77
- | `--mode` | `zrp` by default, `standard` when a reserve seed is required | Selects the Baseline launch path. |
78
- | `--chain-id` | `8453` | Keeps Bankr on the confirmed Base mainnet execution chain. |
79
- | `--account` | `"$BANKR_WALLET"` | Uses the EVM wallet returned by Bankr `/wallet/me`. |
80
- | `--name` | `"$TOKEN_NAME"` | Sets the BToken name passed to the Baseline Relay. |
81
- | `--symbol` | `"$TOKEN_SYMBOL"` | Sets the BToken symbol passed to the Baseline Relay. |
82
- | `--reserve` | Base mainnet WETH | Uses the confirmed reserve token. |
83
- | `--total-supply` | Launch-specific supply | Sets human-unit total supply. |
84
- | `--initial-pool-btokens` | Required for `standard`; omit for `zrp` | Sets the pool BToken amount while leaving circulating supply. |
85
- | `--initial-pool-reserves` | Required for `standard` | Sets the reserve seed. |
86
- | `--output` | `.context/launches/bankr-launch.json` | Saves the artifact under `.context/`. |
87
-
88
- Important optional launch flags:
89
-
90
- | Category | Flags | Description |
91
- |---|---|---|
92
- | Fees | `--swap-fee-pct`, `--creator-fee-pct` | Defaults are `1%` and `50%`; swap fee protocol bounds are `0.15%` to `50%`. |
93
- | Parties | `--creator`, `--fee-recipient` | Creator defaults to `account`; fee recipient defaults to creator. |
94
- | Salt | `--salt` | Sets deterministic BToken salt; empty input uses zero `bytes32`. |
95
-
96
- ## Default Launch Profile
97
-
98
- ### ZRP
99
-
100
- | Setting | Default | Notes |
101
- |---|---|---|
102
- | Mode | `zrp` | Default launch path. |
103
- | Chain ID | `8453` for Bankr | Bankr remains Base mainnet only. |
104
- | Supply | `100B` | Human-unit total supply when not overridden. |
105
- | Pool BTokens | Derived from `totalSupply` | Deployer BToken balance is `0`. |
106
- | Pool reserves | `0` | No reserve approval is expected. |
107
- | Reserve | Base mainnet WETH | `0x4200000000000000000000000000000000000006`. |
108
- | Swap fee | `1%` | Must stay within protocol bounds. |
109
- | Creator fee share | `50%` | Creator share of pool fees. |
110
- | Creator | Bankr EVM wallet | Override only when explicitly requested. |
111
- | Fee recipient | Creator | Override only when explicitly requested. |
112
- | `createHook` | `true` | Matches the current SDK launch params. |
113
-
114
- ### Standard
115
-
116
- | Setting | Default | Notes |
117
- |---|---|---|
118
- | Mode | `standard` | Explicit standard launch path. |
119
- | Chain ID | `8453` for Bankr | Bankr remains Base mainnet only. |
120
- | Pool BTokens | User supplied | Must leave circulating supply. |
121
- | Pool reserves | User supplied | Must be nonzero. |
122
- | Pool creation | `createPool` | Uses the `createPool` Relay flow. |
123
- | Shared fees and parties | Same as `zrp` | Override only with explicit fee, creator, or recipient flags. |
124
- | `createHook` | `true` | Matches the current SDK launch params. |
125
-
126
- ## Baseline Launch Call Sequence
127
-
128
- The Baseline protocol launch is represented as an ordered call sequence inside
129
- the CLI-generated artifact. Bankr does not decide this sequence. Bankr only
130
- identifies the wallet and signs/submits the explicit calls that the CLI
131
- produces.
132
-
133
- For `zrp`, the sequence is:
134
-
135
- | Order | Step | Transaction purpose |
136
- |---|---|---|
137
- | 1 | `createBToken` | Deploy the planned BToken through the Baseline Relay. |
138
- | 2 | BToken `approve` | Approve the Baseline Relay to move the full BToken supply for pool creation. |
139
- | 3 | `createPoolFromInvariant` | Create the pool from the computed invariant and planned params. |
140
-
141
- For `standard`, the sequence is:
142
-
143
- | Order | Step | Transaction purpose |
144
- |---|---|---|
145
- | 1 | `createBToken` | Deploy the planned BToken through the Baseline Relay. |
146
- | 2 | BToken `approve` | Approve the Baseline Relay to move the planned BToken pool allocation. |
147
- | 3 | Reserve `approve` | Approve the Baseline Relay to move the planned reserve seed. |
148
- | 4 | `createPool` | Create the pool with standard params, fees, creator, and fee recipient. |
149
-
150
- These calls are dependent. If a live run partially completes, do not replay the
151
- full sequence blindly. Verify the last completed on-chain step and recover from
152
- that exact state.
153
-
154
- ## Execution Plan
155
-
156
- 1. Resolve the Bankr EVM wallet with `/wallet/me`.
157
- 2. Use that wallet as `--account` for the local CLI artifact builder.
158
- 3. Confirm the user explicitly approved a Bankr Base mainnet run.
159
- 4. Run `baseline launch --chain-id 8453` and save the artifact.
160
- 5. Review the saved artifact: `chainId`, `account`, ordered call count, call
161
- targets, and call data.
162
- 6. Submit each artifact call through Bankr Wallet API `/wallet/submit` in
163
- order. Wait for each submission result before sending the next dependent
164
- call.
165
- 7. Verify on-chain state and store one-off run notes under `.context/`.
166
-
167
- ## Commands
168
-
169
- Read the Bankr wallet identity:
170
-
171
- ```sh
172
- BANKR_API_BASE="${BANKR_API_BASE:-https://api.bankr.bot}"
173
- curl -s "$BANKR_API_BASE/wallet/me" \
174
- -H "X-API-Key: $BANKR_API_KEY"
175
- ```
176
-
177
- Build a Bankr Base mainnet artifact with the local CLI:
178
-
179
- ```sh
180
- baseline launch \
181
- --mode zrp \
182
- --chain-id 8453 \
183
- --account "$BANKR_WALLET" \
184
- --name "$TOKEN_NAME" \
185
- --symbol "$TOKEN_SYMBOL" \
186
- --reserve 0x4200000000000000000000000000000000000006 \
187
- --total-supply "$TOTAL_SUPPLY" \
188
- --output .context/launches/bankr-launch.json
189
- ```
190
-
191
- For a `standard` launch, include `--initial-pool-reserves "$RESERVE_SEED"` and
192
- set `--initial-pool-btokens` below `--total-supply`.
193
-
194
- Submit each call in order through Bankr:
195
-
196
- ```http
197
- POST /wallet/submit
198
- X-API-Key: $BANKR_API_KEY
199
- Content-Type: application/json
200
-
201
- {
202
- "chainId": 8453,
203
- "to": "<call.to>",
204
- "data": "<call.data>",
205
- "value": "<call.value>"
206
- }
207
- ```
208
-
209
- ## Review Checklist
210
-
211
- Before any live submission, confirm:
212
-
213
- - The user explicitly authorized Bankr live execution on Base mainnet.
214
- - `BANKR_API_KEY` is set for a live run and is not exposed in tracked files.
215
- - `/wallet/me` returns an EVM wallet address.
216
- - `artifact.chainId` is `8453`.
217
- - `artifact.account` equals the Bankr EVM wallet unless the user explicitly
218
- chose another supported policy.
219
- - The transaction order and count match the selected CLI mode.
220
- - Transaction targets are limited to the Baseline Relay, precomputed BToken,
221
- and reserve token.
222
- - `zrp` artifacts use all BTokens in the pool and no reserve approval.
223
- - `standard` artifacts include the intended reserve seed and circulating supply.
224
-
225
- ## Verification
226
-
227
- After a successful live run, perform read-only verification:
228
-
229
- - BToken code is non-empty.
230
- - `bLens.getMaker(bToken).initialized` is true.
231
- - `bLens.reserve(bToken)` equals the planned chain reserve.
232
- - `bLens.creator(bToken)` equals the planned creator.
233
- - `bLens.poolFeeRecipient(bToken)` equals the planned fee recipient.
234
- - For `zrp`, total reserves and deployer BToken balance are both `0`.
235
- - For `standard`, deployer BToken balance matches the planned circulating
236
- allocation, allowing for integer division.
237
-
238
- ## Rejection Rules
239
-
240
- Stop before live submission if:
241
-
242
- - The user has not explicitly authorized Bankr live execution.
243
- - Base mainnet execution is implied but not explicitly approved.
244
- - `BANKR_API_KEY` is missing for a live run.
245
- - `/wallet/me` does not return an EVM wallet address.
246
- - The artifact is not for chain ID `8453`.
247
- - The prepared transaction order or count differs from the selected CLI mode.
248
- - Any requested flow involves raw private keys, seed phrases, local production
249
- signing, Bankr native launch endpoints, or Agent API prompts.
250
-
251
- ## Troubleshooting
252
-
253
- - `403`: confirm Wallet API write access, read-only mode, IP allowlist, and
254
- absence of `allowedRecipients` restrictions.
255
- - Base Sepolia requested: use Base MCP for the confirmed Sepolia path, or run a
256
- separate authenticated Bankr validation task before enabling Bankr Sepolia.
257
- - Missing transaction hash: treat the phase as ambiguous and perform read-only
258
- on-chain verification before retrying.
259
- - Partial failure: do not replay the full sequence blindly. Recover from the
260
- exact last verified phase.
@@ -1,240 +0,0 @@
1
- ---
2
- title: "Baseline Plugin"
3
- description: "Launch Baseline tokens with the Baseline CLI, then submit unsigned calls through Base MCP send_calls."
4
- tags: [token-launches, liquidity]
5
- name: baseline
6
- version: 0.1.0
7
- integration: cli-only
8
- chains: [base, base-sepolia]
9
- requires:
10
- shell: required
11
- allowlist: []
12
- externalMcp: null
13
- cliPackage: "npx @baseline-markets/cli@latest"
14
- auth: none
15
- risk: [irreversible, local-exec, low-liquidity]
16
- ---
17
-
18
- # Baseline Plugin
19
-
20
- > [!IMPORTANT]
21
- > Run Base MCP onboarding first (defined by the installed Base MCP SKILL.md). This plugin requires a shell-capable harness and a connected Base Account.
22
-
23
- ## Overview
24
-
25
- Baseline is an onchain AMM for leveraged tokens. This plugin launches a
26
- Baseline token on Base or Base Sepolia by running the Baseline CLI to prepare
27
- unsigned launch calls, then submitting those calls through Base MCP
28
- `send_calls` for Base Account approval and execution.
29
-
30
- ## Installation
31
-
32
- No additional MCP server is required. The plugin shells out to the Baseline CLI
33
- for each prepare step.
34
-
35
- Use an installed CLI when available:
36
-
37
- ```sh
38
- baseline launch --help
39
- ```
40
-
41
- Otherwise invoke the package with `npx`:
42
-
43
- ```sh
44
- npx @baseline-markets/cli@latest launch --help
45
- ```
46
-
47
- ## Surface Routing
48
-
49
- | Capability | Shell-capable surfaces | Shell-less / chat-only surfaces |
50
- |---|---|---|
51
- | Build launch calldata | Run `baseline launch` or `npx @baseline-markets/cli@latest launch`. | Stop. This plugin is CLI-only and must not use `web_request`, user-paste, or hand-built calldata as a workaround. |
52
- | Submit prepared calls | Use Base MCP `send_calls`. | Stop unless the surface exposes both Base MCP tools and a way to run the CLI. |
53
- | Check request status | Use Base MCP `get_request_status` after the user approves in Base Account. | Stop unless the pending request came from a supported CLI prepare flow. |
54
-
55
- ## Commands
56
-
57
- `baseline launch` writes an unsigned call artifact:
58
-
59
- ```json
60
- {
61
- "chainId": 84532,
62
- "chain": "base-sepolia",
63
- "account": "0xBaseAccount",
64
- "bToken": "0xBToken",
65
- "calls": [
66
- { "to": "0xTarget", "data": "0xCalldata", "value": "0x0" }
67
- ]
68
- }
69
- ```
70
-
71
- Default Base Sepolia zero-reserve launch:
72
-
73
- ```sh
74
- baseline launch \
75
- --mode zrp \
76
- --chain-id 84532 \
77
- --account "$BASE_ACCOUNT" \
78
- --name "$TOKEN_NAME" \
79
- --symbol "$TOKEN_SYMBOL" \
80
- --reserve 0xB85885897D297000A74eA2e4711C3Ca729461ABC \
81
- --total-supply "$TOTAL_SUPPLY" \
82
- --output .context/launches/baseline-launch.json
83
- ```
84
-
85
- Standard launch with reserve liquidity:
86
-
87
- ```sh
88
- baseline launch \
89
- --mode standard \
90
- --chain-id 84532 \
91
- --account "$BASE_ACCOUNT" \
92
- --name "$TOKEN_NAME" \
93
- --symbol "$TOKEN_SYMBOL" \
94
- --reserve 0xB85885897D297000A74eA2e4711C3Ca729461ABC \
95
- --total-supply "$TOTAL_SUPPLY" \
96
- --initial-pool-btokens "$POOL_BTOKENS" \
97
- --initial-pool-reserves "$RESERVE_SEED" \
98
- --output .context/launches/baseline-launch.json
99
- ```
100
-
101
- Base mainnet uses `--chain-id 8453` and WETH reserve
102
- `0x4200000000000000000000000000000000000006`. Treat mainnet as production and
103
- confirm the user explicitly requested it before preparing calls.
104
-
105
- Do not pass `--execute` or `--private-key` in this plugin flow. Base MCP is the
106
- only submission path.
107
-
108
- ## Orchestration
109
-
110
- ### Launch
111
-
112
- 1. Complete Base MCP onboarding and confirm Base MCP tools are available.
113
- 2. Call `get_wallets`, confirm the selected chain is in `supportedChains`, and
114
- use the in-session Base Account address as `BASE_ACCOUNT`. If the Base
115
- Account is not in session, stop and ask the user to reconnect Base MCP.
116
- 3. Gather token name, symbol, total supply, launch mode, and chain. Default to
117
- Base Sepolia `84532` and `zrp` unless the user explicitly chooses otherwise.
118
- 4. For `standard`, require both `POOL_BTOKENS` and a nonzero `RESERVE_SEED`.
119
- `POOL_BTOKENS` must be less than `TOTAL_SUPPLY` so some supply remains
120
- circulating.
121
- 5. Run `baseline launch` with `--output`. If the CLI exits nonzero, fix inputs
122
- and rerun; do not salvage partial output.
123
- 6. Parse the artifact JSON and validate it before submission:
124
- - `account` equals the connected Base Account.
125
- - `chainId` is `84532` or `8453`.
126
- - `chain` is `base-sepolia` or `base`.
127
- - `bToken` is a valid address.
128
- - `calls` is an ordered array and every call has `to`, `data`, and `value`.
129
- - No `execution` field is present.
130
- - `zrp` has three calls; `standard` has four calls.
131
- 7. Submit the calls through `send_calls` as described in `## Submission`.
132
- 8. Show the returned `approvalUrl` as an "Approve Transaction" link and open it
133
- with the local shell when the harness supports that.
134
- 9. Wait for the user to confirm they approved in Base Account, then call
135
- `get_request_status(requestId)`. If it is still `pending`, retry with a
136
- short delay; never report success until the request is `completed`.
137
- 10. After completion, run
138
- `baseline info "$BTOKEN" --chain-id "$CHAIN_ID"` using the artifact
139
- `bToken` and `chainId`.
140
-
141
- ## Submission
142
-
143
- Submit with Base MCP `send_calls`.
144
-
145
- Map the artifact exactly:
146
-
147
- ```json
148
- {
149
- "chain": "base-sepolia",
150
- "calls": [
151
- { "to": "0xTarget", "data": "0xCalldata", "value": "0x0" }
152
- ]
153
- }
154
- ```
155
-
156
- Use `artifact.chain` directly. Preserve call order and do not edit calldata. Do
157
- not include `artifact.account` in the `send_calls` payload; Base MCP uses the
158
- connected Base Account session for approval and execution.
159
-
160
- Expected call sequences:
161
-
162
- - `zrp`: Relay `createBToken`, BToken `approve`, Relay
163
- `createPoolFromInvariant`.
164
- - `standard`: Relay `createBToken`, BToken `approve`, reserve `approve`, Relay
165
- `createPool`.
166
-
167
- Any `send_calls` approval URL follows the Base MCP approval flow: show an
168
- "Approve Transaction" link, open it from shell-capable harnesses, wait for the
169
- user to approve in Base Account, then poll `get_request_status`.
170
-
171
- ## Example Prompts
172
-
173
- Launch a Base Sepolia test token:
174
-
175
- 1. Get the Base Account with `get_wallets`.
176
- 2. Run the `zrp` Base Sepolia `baseline launch` command with the requested name,
177
- symbol, and supply.
178
- 3. Validate the artifact and call count.
179
- 4. Submit `artifact.calls` to `send_calls` with `chain: artifact.chain`.
180
- 5. Wait for approval, poll status, then run `baseline info`.
181
-
182
- Launch a standard token with seed liquidity:
183
-
184
- 1. Require `POOL_BTOKENS` and `RESERVE_SEED`.
185
- 2. Run `baseline launch --mode standard`.
186
- 3. Confirm the artifact has four ordered calls.
187
- 4. Submit the batch with `send_calls`.
188
- 5. Wait for approval, poll status, then run `baseline info`.
189
-
190
- Launch on Base mainnet:
191
-
192
- 1. Confirm the user explicitly requested Base mainnet production execution.
193
- 2. Use chain ID `8453` and reserve
194
- `0x4200000000000000000000000000000000000006`.
195
- 3. Validate the artifact carefully before `send_calls`.
196
- 4. Submit with `chain: "base"` only after the user confirms the mainnet launch.
197
-
198
- User asks to run from a phone or chat-only app:
199
-
200
- 1. Stop.
201
- 2. Explain that this plugin is CLI-only and requires a shell-capable harness.
202
- 3. Do not use HTTP, pasted URLs, private keys, or hand-built calldata as a
203
- workaround.
204
-
205
- ## Risks & Warnings
206
-
207
- - `irreversible`: A submitted launch cannot be undone through this plugin.
208
- Confirm chain, token name, symbol, supply, reserve, fees, creator, and fee
209
- recipient before `send_calls`.
210
- - `local-exec`: The plugin runs the Baseline CLI on the user's machine. Use the
211
- installed `baseline` binary when trusted by the user, or the documented `npx`
212
- package invocation.
213
- - `low-liquidity`: New token pools may have thin liquidity and volatile prices.
214
- Do not imply liquidity, execution quality, or market safety beyond the
215
- explicit launch inputs.
216
-
217
- ## Notes
218
-
219
- Constants:
220
-
221
- ```text
222
- base.chain: base
223
- base.chainId: 8453
224
- base.reserve: 0x4200000000000000000000000000000000000006
225
- baseSepolia.chain: base-sepolia
226
- baseSepolia.chainId: 84532
227
- baseSepolia.reserve: 0xB85885897D297000A74eA2e4711C3Ca729461ABC
228
- relay: 0xc81Fd894C0acE037d133aF4886550aC8133568E8
229
- zeroBytes32: 0x0000000000000000000000000000000000000000000000000000000000000000
230
- ```
231
-
232
- Default launch assumptions:
233
-
234
- - `zrp` is the default launch mode.
235
- - Swap fee defaults to `1%`; protocol bounds are `0.15%` to `50%`.
236
- - Creator fee share defaults to `50%`.
237
- - Creator defaults to the launch account.
238
- - Fee recipient defaults to creator.
239
- - Salt defaults to zero `bytes32`.
240
- - Reserve decimals default to `18`.