@baseline-markets/cli 0.2.2 → 0.3.0
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/README.md +86 -2
- package/dist/index.js +1059 -41
- package/package.json +2 -2
- package/skills/aeon-baseline/SKILL.md +154 -0
- package/skills/bankr-baseline/SKILL.md +260 -0
- package/skills/base-mcp-baseline/SKILL.md +22 -292
- package/skills/base-mcp-baseline/plugins/baseline.md +240 -0
- package/skills/launch/SKILL.md +106 -0
|
@@ -1,303 +1,33 @@
|
|
|
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]
|
|
5
2
|
name: base-mcp-baseline
|
|
6
|
-
|
|
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]
|
|
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.
|
|
16
4
|
---
|
|
17
5
|
|
|
18
|
-
# Baseline
|
|
6
|
+
# Baseline Base MCP
|
|
19
7
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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.
|
|
23
11
|
|
|
24
|
-
##
|
|
12
|
+
## Quick Start
|
|
25
13
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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.
|
|
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.
|
|
34
19
|
|
|
35
|
-
|
|
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.
|
|
20
|
+
## Boundary
|
|
38
21
|
|
|
39
|
-
|
|
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.
|
|
40
28
|
|
|
41
|
-
|
|
42
|
-
- Base mainnet: `chainId` `8453`, Base MCP chain string `base`.
|
|
43
|
-
- Base Sepolia: `chainId` `84532`, Base MCP chain string `base-sepolia`.
|
|
29
|
+
## Distribution
|
|
44
30
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
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`.
|
|
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.
|
|
@@ -0,0 +1,240 @@
|
|
|
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`.
|
|
@@ -0,0 +1,106 @@
|
|
|
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`.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Launch
|
|
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.
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
Show the command surface first when inputs are unclear:
|
|
15
|
+
|
|
16
|
+
```sh
|
|
17
|
+
baseline launch --help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Build a ZRP launch artifact:
|
|
21
|
+
|
|
22
|
+
```sh
|
|
23
|
+
baseline launch \
|
|
24
|
+
--mode zrp \
|
|
25
|
+
--chain-id "$CHAIN_ID" \
|
|
26
|
+
--account "$ACCOUNT" \
|
|
27
|
+
--name "$TOKEN_NAME" \
|
|
28
|
+
--symbol "$TOKEN_SYMBOL" \
|
|
29
|
+
--reserve "$RESERVE" \
|
|
30
|
+
--total-supply "$TOTAL_SUPPLY" \
|
|
31
|
+
--output .context/launches/baseline-launch.json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Artifact Contract
|
|
35
|
+
|
|
36
|
+
`baseline launch` writes wallet_sendCalls-compatible JSON:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"chainId": 84532,
|
|
41
|
+
"chain": "base-sepolia",
|
|
42
|
+
"account": "0x...",
|
|
43
|
+
"bToken": "0x...",
|
|
44
|
+
"calls": [{ "to": "0x...", "data": "0x...", "value": "0x0" }]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Before handing the artifact to any wallet or execution layer, verify:
|
|
49
|
+
|
|
50
|
+
- `chainId`, `chain`, and `account` match the intended wallet and chain.
|
|
51
|
+
- `chain` is the executor chain slug, for example `base-sepolia`.
|
|
52
|
+
- `bToken` is the predicted address, not proof of deployment.
|
|
53
|
+
- `calls` is ordered and every call has `to`, `data`, and `value`.
|
|
54
|
+
- `zrp` has three calls; `standard` has four calls.
|
|
55
|
+
- No `execution` field is present unless the user intentionally used
|
|
56
|
+
`--execute`.
|
|
57
|
+
|
|
58
|
+
After submission, inspect deployment status and links with:
|
|
59
|
+
|
|
60
|
+
```sh
|
|
61
|
+
baseline info "$BTOKEN" --chain-id "$CHAIN_ID"
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Launch Modes
|
|
65
|
+
|
|
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.
|
|
68
|
+
|
|
69
|
+
`standard` launches with reserve liquidity and requires both pool BTokens and a
|
|
70
|
+
reserve seed:
|
|
71
|
+
|
|
72
|
+
```sh
|
|
73
|
+
baseline launch \
|
|
74
|
+
--mode standard \
|
|
75
|
+
--chain-id "$CHAIN_ID" \
|
|
76
|
+
--account "$ACCOUNT" \
|
|
77
|
+
--name "$TOKEN_NAME" \
|
|
78
|
+
--symbol "$TOKEN_SYMBOL" \
|
|
79
|
+
--reserve "$RESERVE" \
|
|
80
|
+
--total-supply "$TOTAL_SUPPLY" \
|
|
81
|
+
--initial-pool-btokens "$POOL_BTOKENS" \
|
|
82
|
+
--initial-pool-reserves "$RESERVE_SEED" \
|
|
83
|
+
--output .context/launches/baseline-launch.json
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Execution
|
|
87
|
+
|
|
88
|
+
Only execute when the user explicitly asks for local signer submission.
|
|
89
|
+
|
|
90
|
+
Reuse the artifact command and add `--execute --private-key "$PRIVATE_KEY"`.
|
|
91
|
+
`BASELINE_PRIVATE_KEY` may be used instead of `--private-key`. `--account` is
|
|
92
|
+
optional with `--execute` because the CLI can derive it from the private key.
|
|
93
|
+
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`.
|
|
96
|
+
Never print, commit, or persist private keys.
|
|
97
|
+
|
|
98
|
+
## Defaults And Notes
|
|
99
|
+
|
|
100
|
+
- `--chain-id` must be a chain supported by the installed Baseline CLI/SDK.
|
|
101
|
+
- `--reserve` must be the intended reserve token on that chain.
|
|
102
|
+
- Require explicit user approval before preparing or executing a production
|
|
103
|
+
launch.
|
|
104
|
+
- Swap fee defaults to `1%`; creator fee share defaults to `50%`.
|
|
105
|
+
- Creator defaults to `account`; fee recipient defaults to creator.
|
|
106
|
+
- Salt is optional and must be bytes32 when provided.
|