@parabolicfamily/mcp 0.2.0 → 0.2.1

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 CHANGED
@@ -22,6 +22,13 @@ and whether `<ticker>.parabolic.family` is free. It is advice and not a gate —
22
22
  unique symbol — and the hostname is the one exclusive thing, held by the oldest coin with that ticker. The
23
23
  ticker is normalised the way the site normalises it, so an impossible one is refused before a request is spent.
24
24
 
25
+ ## What changed in 0.2.1
26
+
27
+ No tool changed. The dependency tree is refreshed (`@modelcontextprotocol/sdk` 1.32.1, and the patched
28
+ `proxy-addr`, `ip-address` and `fast-uri` under it), so `npm audit` on an install reads clean, and a failed RPC
29
+ call now writes the endpoint's host to stderr rather than its whole URL, so a keyed endpoint's key stays out of
30
+ the server's own log as well as out of the answer.
31
+
25
32
  ## What changed in 0.2.0
26
33
 
27
34
  Five tools for coins made on **other launchpads** (pons on Robinhood Chain, SolonPad on Arc), traded through
@@ -194,16 +201,22 @@ Arguments are strict: a key a tool does not know fails with `Unrecognized key` i
194
201
  | Tool | Purpose |
195
202
  |---|---|
196
203
  | `parabolic.list_coins` | `{ status?: "climbing" \| "graduated", sort?: "trending" \| "new" \| "near_graduation" \| "market_cap", limit?, pair?: "USDC" \| "EURC" \| "Agents" }`. Subgraph when configured, otherwise Parabolic's public read API; a `TokenLaunched` log scan only when both are unavailable. `pair` is the quote asset, except `"Agents"`, which means the coin's creator holds an ERC-8004 identity: that is read from Arc's registry (one `balanceOf` per creator, over the top 100 of the sort) whatever the listing source is. Without a registry for the chain the result sets `pairFilterApplied: false` and the `source` line says the filter did not run. |
197
- | `parabolic.get_coin` | `{ address }` (token or curve). Name, ticker, creator, curve, status/phase, raised/threshold/progress, price, market cap, holders, pool id, fee terms and 50/30/20 split, snipe-tax window and `currentSnipeTaxBps()`. |
204
+ | `parabolic.get_coin` | `{ address }` (token or curve). Name, ticker, creator, curve, status/phase, raised/threshold/progress, price, market cap, holders, pool id, fee terms and the coin's own split (creator / protocol / buyback as the curve snapshotted them at launch, the buyback leg only while the creator's `buybackEnabled` switch is on), snipe-tax window and `currentSnipeTaxBps()`. |
198
205
  | `parabolic.quote_buy` | `{ address, quoteIn, buyer?, slippageBps? }`. Exact curve math on live reserves: fee, creator tax and snipe tax legs, spot vs effective price, price impact, whether the buy graduates the coin, suggested `minTokensOut`. `buyer` checks the snipe-tax exemption. |
199
206
  | `parabolic.quote_sell` | `{ address, tokensIn, slippageBps? }`. Gross, fee, creator tax, effective price, price impact, suggested `minQuoteOut`. |
200
207
  | `parabolic.build_buy_tx` | `{ address, quoteIn, minTokensOut?, recipient, buyer?, slippageBps?, memo? }` → unsigned `curve.buy(...)` (value = quote on native-USDC curves; an approval step for EURC pairs). `memo: { referral, note? }` returns the memo-routed variant instead (see below). |
201
208
  | `parabolic.build_sell_tx` | `{ address, tokensIn, minQuoteOut?, recipient, slippageBps? }` → unsigned ERC-20 approval + `curve.sell(...)`. |
202
- | `parabolic.build_launch_tx` | `{ name, ticker, image?, description?, socials?, pair?, devBuy?, creatorTaxBps?, creator, buybackEnabled? }`. The `TokenParams` are built exactly like the web Create form (economics pinned with `previewLaunchEconomics`, random salt). With `devBuy` and `PARABOLIC_MEMO_ROUTER` set: one unsigned `ParabolicMemoRouter.launchAndBuy` (value = launch fee + dev buy, `creatorFeeRecipient` zero, `minTokensOut` from the curve math on the launch config; `launchAndBuyWithToken` plus an approval for EURC). Otherwise: unsigned `factory.launchToken(...)` with the launch fee as value and, for a `devBuy`, the follow-up buy calldata to send to the curve from the `TokenLaunched` event. |
209
+ | `parabolic.build_launch_tx` | `{ name, ticker, image?, description?, socials?, pair?, devBuy?, creatorTaxBps?, creator, buybackEnabled? }` (`creatorTaxBps` 0 to 500, the factories' `maxCreatorTaxBps()`). The `TokenParams` are built exactly like the web Create form (economics pinned with `previewLaunchEconomics`, random salt). With `devBuy` and `PARABOLIC_MEMO_ROUTER` set: one unsigned `ParabolicMemoRouter.launchAndBuy` (value = launch fee + dev buy, `creatorFeeRecipient` zero, `minTokensOut` from the curve math on the launch config; `launchAndBuyWithToken` plus an approval for EURC). Otherwise: unsigned `factory.launchToken(...)` with the launch fee as value and, for a `devBuy`, the follow-up buy calldata to send to the curve from the `TokenLaunched` event. |
203
210
  | `parabolic.agent_status` | `{ address }`. Whether the wallet holds an ERC-8004 agent identity on Arc's `IdentityRegistry` (`balanceOf`), how many it holds, and the registry address and chain. On a chain where Arc has published no registry the answer is that fact, with `registered` and `identities` null. |
204
211
  | `parabolic.build_register_agent_tx` | `{ from, metadataURI? }` → unsigned `IdentityRegistry.register(metadataURI)` (no value). The registry mints the ERC-721 identity to the signer, so `from` is the wallet that sends it, and returns the agent id; read it from the `Transfer` log in the receipt. `metadataURI` is a pointer to the agent's metadata stored as `tokenURI` and may be empty. Warns when the wallet already holds an identity. |
205
212
  | `parabolic.protocol_stats` | Subgraph totals (launches, graduations, trades, volume, fees, daily series) plus the factory's live launch fee, curve preset, snipe-tax terms and contract addresses. |
206
213
  | `parabolic.check_ticker` | `{ ticker }`. Whether a Parabolic coin already carries the ticker on **any** chain the site serves, and whether `<ticker>.parabolic.family` is free, read from the site's own route (`/api/v1/studio/ticker` on `PARABOLIC_API_URL`'s site). **Advice, not a gate**: nothing on chain enforces a unique symbol, so `free: false` lists what exists (`taken[]`, each with a `ref` for `get_coin`) and does not stop a launch. The hostname is the one exclusive thing and belongs to the oldest coin carrying the ticker (`hostFree`). A name on the site's reserved list comes back as `reserved` and is not a coin. The ticker is normalised the way the site does it (A-Z and 0-9, case and punctuation ignored, 2 to 10 characters); one outside that is refused before the site is asked. Call it before `build_launch_tx`. |
214
+ | `parabolic.referral_status` | `{ account }`. One wallet's referral payouts on this server's chain, read from the site (`GET /api/v1/referrals/{account}`): per asset, what the indexer has credited, what the latest weekly root publishes, what the referral distributor has paid and what is claimable now, with the `claim(asset, account, cumulative, proof)` arguments when there is a leaf. Read-only; figures are never summed across assets. On a chain with no distributor recorded, referrals are paid by hand and the answer says so. |
215
+ | `parabolic.list_venue_coins` | `{ venue: "pons" \| "solonpad", status?, sort?, limit? }`. Coins made on another launchpad, read from that launchpad's subgraph when `PARABOLIC_SUBGRAPH_URL_<VENUE>_<CHAIN>` is set, with the figures `list_coins` returns plus `venue`, the site's `ref` and whether they can be routed here. They live on that launchpad's contracts, not Parabolic's. |
216
+ | `parabolic.quote_routed_buy` | `{ venue, address, quoteIn, from?, slippageBps? }`. Tokens received for `quoteIn` of the coin's own quote asset, bought through `ParabolicAggregatorRouter` on the launchpad's curve (the router's quote view) or its graduated v4 pool (the chain's V4Quoter), read now, with the launchpad's fee and Parabolic's routed fee (the router's `defaultFeeBps`) both shown. |
217
+ | `parabolic.quote_routed_sell` | `{ venue, address, tokensIn, from?, slippageBps? }`. Money received, after Parabolic's routed fee, for `tokensIn` sold through the router, read now. |
218
+ | `parabolic.build_routed_buy_tx` | `{ venue, address, quoteIn, from, slippageBps?, maxSnipeTaxBps? }` → unsigned `ParabolicAggregatorRouter.buy(trade, noVoucher, "0x", noPermit)`, encoded as the site encodes it: `minOut` from a fresh quote less slippage, recipient = `from`, a five-minute deadline; an ETH-quoted coin sends `quoteIn` as value, a USDG-quoted one returns an exact-amount approval of the router first. Inside a launch window the build is refused and names the tax unless `maxSnipeTaxBps` accepts it. |
219
+ | `parabolic.build_routed_sell_tx` | `{ venue, address, tokensIn, from, slippageBps? }` → unsigned exact-amount approval of the router plus `ParabolicAggregatorRouter.sell(...)`; `minOut` is the money after Parabolic's fee. The four routed tools refuse, by name, until the chain's record carries the router (`aggregator`), when the router has the launchpad off, when the coin is not that launchpad's, and when any read fails. |
207
220
  | `parabolic.docs` | The adopted parameters, curve mechanics, verified Arc facts and this server's configuration, as text. |
208
221
 
209
222
  Every tool above also takes an optional `chain` (see "What changed in 0.1.7"), and every coin argument
@@ -252,7 +265,7 @@ Launch a coin with a $200 dev buy:
252
265
  { "name": "parabolic.build_launch_tx", "arguments": { "name": "Orange Pill", "ticker": "PILL", "image": "ipfs://…", "description": "a frog", "socials": { "twitter": "@robin" }, "creatorTaxBps": 250, "devBuy": "200", "creator": "0xYourWallet" } }
253
266
  ```
254
267
 
255
- With `PARABOLIC_MEMO_ROUTER` set the result is `kind: "launch_and_buy"`: one `tx` to the router (`value` = $1 launch fee + $200), the encoded `params` (`creatorFeeRecipient` zero, as the router requires), the curve `terms` (opening and fully diluted graduation market caps, reserved / pool-seed / locked token shares, snipe-tax window) and `devBuy` (expected and minimum tokens, snipe-tax exempt). Without the router it is `kind: "launch"`: `tx` to the factory (value = the launch fee) and `devBuy` with the calldata for the second, snipe-tax-exempt transaction to the new curve. There is no exemption list: only the creator's own address is exempt from the snipe tax.
268
+ With `PARABOLIC_MEMO_ROUTER` set the result is `kind: "launch_and_buy"`: one `tx` to the router (`value` = the factory's `launchFee()`, 0 on both chains today, + $200), the encoded `params` (`creatorFeeRecipient` zero, as the router requires), the curve `terms` (opening and fully diluted graduation market caps, reserved / pool-seed / locked token shares, snipe-tax window) and `devBuy` (expected and minimum tokens, snipe-tax exempt). Without the router it is `kind: "launch"`: `tx` to the factory (value = the launch fee) and `devBuy` with the calldata for the second, snipe-tax-exempt transaction to the new curve. There is no exemption list: only the creator's own address is exempt from the snipe tax.
256
269
 
257
270
  Check whether a wallet is a registered agent, then register it:
258
271
 
@@ -340,7 +353,7 @@ The source lives in a private repository; the published package ships `src/` alo
340
353
  code is readable from `node_modules`. If you have the repository checked out:
341
354
 
342
355
  ```sh
343
- npm install # reads .npmrc (legacy-peer-deps) to skip a vitest peer-resolution bug on Node 23
356
+ npm install
344
357
  npm run build # -> dist/
345
358
  npm test # vitest: curve math, tx builders, tools against a mocked subgraph and RPC
346
359
  npm run smoke # starts dist/index.js over stdio, initialize + tools/list
@@ -90,6 +90,19 @@
90
90
  ],
91
91
  "stateMutability": "view"
92
92
  },
93
+ {
94
+ "type": "function",
95
+ "name": "MAX_GRANT_AUTH_DEADLINE",
96
+ "inputs": [],
97
+ "outputs": [
98
+ {
99
+ "name": "",
100
+ "type": "uint256",
101
+ "internalType": "uint256"
102
+ }
103
+ ],
104
+ "stateMutability": "view"
105
+ },
93
106
  {
94
107
  "type": "function",
95
108
  "name": "MAX_GRANT_TERM",
@@ -103,6 +116,19 @@
103
116
  ],
104
117
  "stateMutability": "view"
105
118
  },
119
+ {
120
+ "type": "function",
121
+ "name": "MAX_SNIPE_CEILING_BPS",
122
+ "inputs": [],
123
+ "outputs": [
124
+ {
125
+ "name": "",
126
+ "type": "uint16",
127
+ "internalType": "uint16"
128
+ }
129
+ ],
130
+ "stateMutability": "view"
131
+ },
106
132
  {
107
133
  "type": "function",
108
134
  "name": "NATIVE_PER_USDC_UNIT",
@@ -142,6 +168,19 @@
142
168
  ],
143
169
  "stateMutability": "view"
144
170
  },
171
+ {
172
+ "type": "function",
173
+ "name": "SCOPE_TYPEHASH",
174
+ "inputs": [],
175
+ "outputs": [
176
+ {
177
+ "name": "",
178
+ "type": "bytes32",
179
+ "internalType": "bytes32"
180
+ }
181
+ ],
182
+ "stateMutability": "view"
183
+ },
145
184
  {
146
185
  "type": "function",
147
186
  "name": "acceptOwnership",
@@ -229,6 +268,11 @@
229
268
  "name": "perDay",
230
269
  "type": "uint128",
231
270
  "internalType": "uint128"
271
+ },
272
+ {
273
+ "name": "openPerDay",
274
+ "type": "uint128",
275
+ "internalType": "uint128"
232
276
  }
233
277
  ]
234
278
  }
@@ -282,6 +326,19 @@
282
326
  ],
283
327
  "stateMutability": "view"
284
328
  },
329
+ {
330
+ "type": "function",
331
+ "name": "disableExecutor",
332
+ "inputs": [
333
+ {
334
+ "name": "executor",
335
+ "type": "address",
336
+ "internalType": "address"
337
+ }
338
+ ],
339
+ "outputs": [],
340
+ "stateMutability": "nonpayable"
341
+ },
285
342
  {
286
343
  "type": "function",
287
344
  "name": "eip712Domain",
@@ -403,6 +460,43 @@
403
460
  "name": "nonce",
404
461
  "type": "uint256",
405
462
  "internalType": "uint256"
463
+ },
464
+ {
465
+ "name": "scope",
466
+ "type": "tuple",
467
+ "internalType": "struct Scope",
468
+ "components": [
469
+ {
470
+ "name": "factories",
471
+ "type": "uint8",
472
+ "internalType": "uint8"
473
+ },
474
+ {
475
+ "name": "maxCreatorTaxBps",
476
+ "type": "uint16",
477
+ "internalType": "uint16"
478
+ },
479
+ {
480
+ "name": "minCoinAgeSec",
481
+ "type": "uint32",
482
+ "internalType": "uint32"
483
+ },
484
+ {
485
+ "name": "maxCoinAgeSec",
486
+ "type": "uint32",
487
+ "internalType": "uint32"
488
+ },
489
+ {
490
+ "name": "maxDeployerShareBps",
491
+ "type": "uint16",
492
+ "internalType": "uint16"
493
+ },
494
+ {
495
+ "name": "leader",
496
+ "type": "address",
497
+ "internalType": "address"
498
+ }
499
+ ]
406
500
  }
407
501
  ]
408
502
  },
@@ -517,6 +611,25 @@
517
611
  ],
518
612
  "stateMutability": "nonpayable"
519
613
  },
614
+ {
615
+ "type": "function",
616
+ "name": "executorDisabled",
617
+ "inputs": [
618
+ {
619
+ "name": "executor",
620
+ "type": "address",
621
+ "internalType": "address"
622
+ }
623
+ ],
624
+ "outputs": [
625
+ {
626
+ "name": "",
627
+ "type": "bool",
628
+ "internalType": "bool"
629
+ }
630
+ ],
631
+ "stateMutability": "view"
632
+ },
520
633
  {
521
634
  "type": "function",
522
635
  "name": "filled",
@@ -596,6 +709,11 @@
596
709
  "name": "perDay",
597
710
  "type": "uint128",
598
711
  "internalType": "uint128"
712
+ },
713
+ {
714
+ "name": "openPerDay",
715
+ "type": "uint128",
716
+ "internalType": "uint128"
599
717
  }
600
718
  ]
601
719
  },
@@ -735,6 +853,35 @@
735
853
  ],
736
854
  "stateMutability": "view"
737
855
  },
856
+ {
857
+ "type": "function",
858
+ "name": "openSpentOnDay",
859
+ "inputs": [
860
+ {
861
+ "name": "user",
862
+ "type": "address",
863
+ "internalType": "address"
864
+ },
865
+ {
866
+ "name": "asset",
867
+ "type": "address",
868
+ "internalType": "address"
869
+ },
870
+ {
871
+ "name": "day",
872
+ "type": "uint256",
873
+ "internalType": "uint256"
874
+ }
875
+ ],
876
+ "outputs": [
877
+ {
878
+ "name": "spent",
879
+ "type": "uint256",
880
+ "internalType": "uint256"
881
+ }
882
+ ],
883
+ "stateMutability": "view"
884
+ },
738
885
  {
739
886
  "type": "function",
740
887
  "name": "orderHash",
@@ -813,6 +960,43 @@
813
960
  "name": "nonce",
814
961
  "type": "uint256",
815
962
  "internalType": "uint256"
963
+ },
964
+ {
965
+ "name": "scope",
966
+ "type": "tuple",
967
+ "internalType": "struct Scope",
968
+ "components": [
969
+ {
970
+ "name": "factories",
971
+ "type": "uint8",
972
+ "internalType": "uint8"
973
+ },
974
+ {
975
+ "name": "maxCreatorTaxBps",
976
+ "type": "uint16",
977
+ "internalType": "uint16"
978
+ },
979
+ {
980
+ "name": "minCoinAgeSec",
981
+ "type": "uint32",
982
+ "internalType": "uint32"
983
+ },
984
+ {
985
+ "name": "maxCoinAgeSec",
986
+ "type": "uint32",
987
+ "internalType": "uint32"
988
+ },
989
+ {
990
+ "name": "maxDeployerShareBps",
991
+ "type": "uint16",
992
+ "internalType": "uint16"
993
+ },
994
+ {
995
+ "name": "leader",
996
+ "type": "address",
997
+ "internalType": "address"
998
+ }
999
+ ]
816
1000
  }
817
1001
  ]
818
1002
  }
@@ -999,6 +1183,11 @@
999
1183
  "name": "perDay",
1000
1184
  "type": "uint128",
1001
1185
  "internalType": "uint128"
1186
+ },
1187
+ {
1188
+ "name": "openPerDay",
1189
+ "type": "uint128",
1190
+ "internalType": "uint128"
1002
1191
  }
1003
1192
  ]
1004
1193
  }
@@ -1066,6 +1255,11 @@
1066
1255
  "name": "perDay",
1067
1256
  "type": "uint128",
1068
1257
  "internalType": "uint128"
1258
+ },
1259
+ {
1260
+ "name": "openPerDay",
1261
+ "type": "uint128",
1262
+ "internalType": "uint128"
1069
1263
  }
1070
1264
  ]
1071
1265
  },
@@ -1217,6 +1411,12 @@
1217
1411
  "type": "uint128",
1218
1412
  "indexed": false,
1219
1413
  "internalType": "uint128"
1414
+ },
1415
+ {
1416
+ "name": "openPerDay",
1417
+ "type": "uint128",
1418
+ "indexed": false,
1419
+ "internalType": "uint128"
1220
1420
  }
1221
1421
  ],
1222
1422
  "anonymous": false
@@ -1264,6 +1464,25 @@
1264
1464
  "inputs": [],
1265
1465
  "anonymous": false
1266
1466
  },
1467
+ {
1468
+ "type": "event",
1469
+ "name": "ExecutorDisabledSet",
1470
+ "inputs": [
1471
+ {
1472
+ "name": "executor",
1473
+ "type": "address",
1474
+ "indexed": true,
1475
+ "internalType": "address"
1476
+ },
1477
+ {
1478
+ "name": "by",
1479
+ "type": "address",
1480
+ "indexed": true,
1481
+ "internalType": "address"
1482
+ }
1483
+ ],
1484
+ "anonymous": false
1485
+ },
1267
1486
  {
1268
1487
  "type": "event",
1269
1488
  "name": "GrantSet",
@@ -1396,6 +1615,12 @@
1396
1615
  "type": "uint8",
1397
1616
  "indexed": false,
1398
1617
  "internalType": "uint8"
1618
+ },
1619
+ {
1620
+ "name": "venue",
1621
+ "type": "address",
1622
+ "indexed": false,
1623
+ "internalType": "address"
1399
1624
  }
1400
1625
  ],
1401
1626
  "anonymous": false
@@ -1481,6 +1706,11 @@
1481
1706
  "name": "AmountTooLarge",
1482
1707
  "inputs": []
1483
1708
  },
1709
+ {
1710
+ "type": "error",
1711
+ "name": "BadDeadline",
1712
+ "inputs": []
1713
+ },
1484
1714
  {
1485
1715
  "type": "error",
1486
1716
  "name": "BadGrantExpiry",
@@ -1534,6 +1764,17 @@
1534
1764
  "name": "DeadlinePassed",
1535
1765
  "inputs": []
1536
1766
  },
1767
+ {
1768
+ "type": "error",
1769
+ "name": "ExecutorDisabled",
1770
+ "inputs": [
1771
+ {
1772
+ "name": "executor",
1773
+ "type": "address",
1774
+ "internalType": "address"
1775
+ }
1776
+ ]
1777
+ },
1537
1778
  {
1538
1779
  "type": "error",
1539
1780
  "name": "FillTooLarge",
@@ -1550,6 +1791,11 @@
1550
1791
  }
1551
1792
  ]
1552
1793
  },
1794
+ {
1795
+ "type": "error",
1796
+ "name": "FloorRequired",
1797
+ "inputs": []
1798
+ },
1553
1799
  {
1554
1800
  "type": "error",
1555
1801
  "name": "FullyFilled",
@@ -1592,6 +1838,11 @@
1592
1838
  }
1593
1839
  ]
1594
1840
  },
1841
+ {
1842
+ "type": "error",
1843
+ "name": "IntervalRequired",
1844
+ "inputs": []
1845
+ },
1595
1846
  {
1596
1847
  "type": "error",
1597
1848
  "name": "InvalidOrder",
@@ -1692,6 +1943,22 @@
1692
1943
  }
1693
1944
  ]
1694
1945
  },
1946
+ {
1947
+ "type": "error",
1948
+ "name": "OpenPerDayCap",
1949
+ "inputs": [
1950
+ {
1951
+ "name": "wouldSpend",
1952
+ "type": "uint256",
1953
+ "internalType": "uint256"
1954
+ },
1955
+ {
1956
+ "name": "cap",
1957
+ "type": "uint256",
1958
+ "internalType": "uint256"
1959
+ }
1960
+ ]
1961
+ },
1695
1962
  {
1696
1963
  "type": "error",
1697
1964
  "name": "OrderExpired",
@@ -1851,11 +2118,106 @@
1851
2118
  }
1852
2119
  ]
1853
2120
  },
2121
+ {
2122
+ "type": "error",
2123
+ "name": "ScopeAge",
2124
+ "inputs": [
2125
+ {
2126
+ "name": "age",
2127
+ "type": "uint256",
2128
+ "internalType": "uint256"
2129
+ },
2130
+ {
2131
+ "name": "minimum",
2132
+ "type": "uint256",
2133
+ "internalType": "uint256"
2134
+ },
2135
+ {
2136
+ "name": "maximum",
2137
+ "type": "uint256",
2138
+ "internalType": "uint256"
2139
+ }
2140
+ ]
2141
+ },
2142
+ {
2143
+ "type": "error",
2144
+ "name": "ScopeCreatorTax",
2145
+ "inputs": [
2146
+ {
2147
+ "name": "taxBps",
2148
+ "type": "uint256",
2149
+ "internalType": "uint256"
2150
+ },
2151
+ {
2152
+ "name": "maximum",
2153
+ "type": "uint256",
2154
+ "internalType": "uint256"
2155
+ }
2156
+ ]
2157
+ },
2158
+ {
2159
+ "type": "error",
2160
+ "name": "ScopeDeployerShare",
2161
+ "inputs": [
2162
+ {
2163
+ "name": "shareBps",
2164
+ "type": "uint256",
2165
+ "internalType": "uint256"
2166
+ },
2167
+ {
2168
+ "name": "maximum",
2169
+ "type": "uint256",
2170
+ "internalType": "uint256"
2171
+ }
2172
+ ]
2173
+ },
2174
+ {
2175
+ "type": "error",
2176
+ "name": "ScopeFactory",
2177
+ "inputs": [
2178
+ {
2179
+ "name": "from",
2180
+ "type": "uint8",
2181
+ "internalType": "uint8"
2182
+ },
2183
+ {
2184
+ "name": "allowed",
2185
+ "type": "uint8",
2186
+ "internalType": "uint8"
2187
+ }
2188
+ ]
2189
+ },
2190
+ {
2191
+ "type": "error",
2192
+ "name": "ScopeRequired",
2193
+ "inputs": []
2194
+ },
2195
+ {
2196
+ "type": "error",
2197
+ "name": "ScopeUnreadable",
2198
+ "inputs": []
2199
+ },
1854
2200
  {
1855
2201
  "type": "error",
1856
2202
  "name": "SignatureExpired",
1857
2203
  "inputs": []
1858
2204
  },
2205
+ {
2206
+ "type": "error",
2207
+ "name": "SnipeCeilingTooHigh",
2208
+ "inputs": [
2209
+ {
2210
+ "name": "given",
2211
+ "type": "uint16",
2212
+ "internalType": "uint16"
2213
+ },
2214
+ {
2215
+ "name": "maximum",
2216
+ "type": "uint16",
2217
+ "internalType": "uint16"
2218
+ }
2219
+ ]
2220
+ },
1859
2221
  {
1860
2222
  "type": "error",
1861
2223
  "name": "SnipeTaxAbove",
package/dist/abi.d.ts CHANGED
@@ -15,5 +15,3 @@ export declare const tokenAbi: Abi;
15
15
  export declare const memoRouterAbi: Abi;
16
16
  /** docs/33 §A: routed trades on another launchpad's coin (src/routed.ts). */
17
17
  export declare const aggregatorRouterAbi: Abi;
18
- /** Names of all functions in an ABI (used to document what the factory can and cannot enumerate). */
19
- export declare const functionNames: (abi: Abi) => string[];
package/dist/abi.js CHANGED
@@ -34,6 +34,4 @@ export const tokenAbi = loadAbi("ParabolicLauncherToken");
34
34
  export const memoRouterAbi = loadAbi("ParabolicMemoRouter");
35
35
  /** docs/33 §A: routed trades on another launchpad's coin (src/routed.ts). */
36
36
  export const aggregatorRouterAbi = loadAbi("ParabolicAggregatorRouter");
37
- /** Names of all functions in an ABI (used to document what the factory can and cannot enumerate). */
38
- export const functionNames = (abi) => abi.flatMap((e) => (e.type === "function" ? [e.name] : []));
39
37
  //# sourceMappingURL=abi.js.map
package/dist/abi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,2BAA2B,CAAU,CAAC;AAGpK,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,8GAA+G,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5L,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAQ,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACjE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAQ,OAAO,CAAC,2BAA2B,CAAC,CAAC;AAE7E,qGAAqG;AACrG,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAY,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"abi.js","sourceRoot":"","sources":["../src/abi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,wBAAwB,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,2BAA2B,CAAU,CAAC;AAGpK,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgB,CAAC;AAEtC,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,GAAG;QAAE,OAAO,GAAG,CAAC;IACpB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;IAC3C,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,8GAA+G,CAAW,CAAC,OAAO,GAAG,CAAC,CAAC;IAC5L,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,IAAI,sBAAsB,CAAC,CAAC;IAC/E,MAAM,GAAG,GAAG,MAAa,CAAC;IAC1B,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AACjE,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAC9D,MAAM,CAAC,MAAM,QAAQ,GAAQ,OAAO,CAAC,wBAAwB,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,aAAa,GAAQ,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACjE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,mBAAmB,GAAQ,OAAO,CAAC,2BAA2B,CAAC,CAAC"}
package/dist/coins.js CHANGED
@@ -3,6 +3,7 @@ import { chainFor } from "./chains.js";
3
3
  import { NATIVE_QUOTE } from "./config.js";
4
4
  import { toNumber } from "./curve.js";
5
5
  import { quoteBlock, quoteUnitByAddress, quoteUnitOf } from "./quote-unit.js";
6
+ import { shortAddr } from "./format.js";
6
7
  export const SORT_KEYS = ["trending", "new", "near_graduation", "market_cap"];
7
8
  export const isNative = (pairToken) => pairToken.toLowerCase() === NATIVE_QUOTE;
8
9
  /**
@@ -75,7 +76,7 @@ export function summaryFromGql(g, now = Math.floor(Date.now() / 1000), chainId =
75
76
  and until 20 September 2026 it was fed into `quoteUnitOf`, a SYMBOL lookup, which no shortened address can
76
77
  ever match: USDG, a dollar, was published to every model as `dollar: false`. */
77
78
  const byAddress = native ? undefined : quoteUnitByAddress(g.pairToken, chainId);
78
- const quoteSymbol = native ? gas?.symbol ?? "" : byAddress?.symbol ?? `${g.pairToken.slice(0, 6)}\u2026${g.pairToken.slice(-4)}`;
79
+ const quoteSymbol = native ? gas?.symbol ?? "" : byAddress?.symbol ?? shortAddr(g.pairToken);
79
80
  return {
80
81
  address: getAddress(g.id),
81
82
  curve: getAddress(g.curve),
package/dist/coins.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"coins.js","sourceRoot":"","sources":["../src/coins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coins.js","sourceRoot":"","sources":["../src/coins.ts"],"names":[],"mappings":"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"}
package/dist/docs.js CHANGED
@@ -136,7 +136,7 @@ function routedSection(config) {
136
136
  "OTHER LAUNCHPADS' COINS (routed through Parabolic)",
137
137
  "- list_venue_coins lists coins made on another launchpad from that launchpad's subgraph; quote_routed_buy / quote_routed_sell and build_routed_buy_tx / build_routed_sell_tx trade them through ParabolicAggregatorRouter.",
138
138
  "- Such a coin lives on the other launchpad's contracts, not Parabolic's: its curve or pool, its own fee and creator tax, and its snipe tax (keyed on the RECIPIENT on pons) are that launchpad's. Parabolic's own coins never go through the router.",
139
- "- The routed fee: the router takes Parabolic's fee on top of the launchpad's own, from the input of a buy and from the venue's payout on a sell, and pushes it to the treasury in the same call. It is the router's `defaultFeeBps`, read at every call: 60 bps (0.6%) at deploy, the Free tier's; Pro (30) and Hyper (10) are vouchers the Parabolic site signs for one wallet, and this server sends none. No owner call can raise it above 100 bps.",
139
+ "- The routed fee: the router takes Parabolic's fee on top of the launchpad's own, from the input of a buy and from the venue's payout on a sell, and pushes it to the treasury in the same call. It is the router's `defaultFeeBps`, read at every call: 60 bps (0.6%) at deploy, the Free tier's; Pro (30) and Ultra (10) are vouchers the Parabolic site signs for one wallet, and this server sends none. No owner call can raise it above 100 bps.",
140
140
  "- A build sends minOut from a fresh quote less slippage, maxSnipeTaxBps 0 unless raised to the tax the launchpad charges now, recipient = from, and a deadline five minutes past the chain's head block. An ERC-20 input (a USDG-quoted buy, every sell) comes with an approval of the router for exactly the amount, because the site's one-shot Permit2 transfer is a signature this server cannot make.",
141
141
  `- Router on this chain: ${router ? `${router} (${config.aggregatorSource === "env" ? "PARABOLIC_AGGREGATOR_ROUTER, not in the deployment record: a rehearsal" : "from the deployment record"})` : recorded ? recorded.address : "none. This chain's deployment record carries no `aggregator` key yet, so every routed tool refuses rather than build against a guessed address"}.`,
142
142
  `- Launchpads on this chain: ${here.length ? here.join("; ") : "none this server knows"}.`,
package/dist/format.d.ts CHANGED
@@ -27,6 +27,7 @@ export declare const endpointHost: (url: string) => string;
27
27
  * and body, so a user who set a keyed endpoint would otherwise have that key copied into any failed
28
28
  * call. Our own thrown messages carry no URL and pass through untouched; anything else keeps its first
29
29
  * line, which is where the actual cause is ("HTTP request failed. Status: 401"), with URLs masked.
30
- * The unredacted error still goes to stderr, which is where a server log would come from.
30
+ * The whole error also goes to stderr, which is where a server log would come from, with every URL cut to its
31
+ * host first: a keyed endpoint carries its key in the path, and an operator's log is still a log (MCP-1).
31
32
  */
32
33
  export declare function safeMessage(e: unknown): string;