@parabolicfamily/mcp 0.1.1 → 0.1.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/README.md +14 -4
- package/abi/ParabolicLaunchFactory.json +5 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/format.js +8 -2
- package/dist/format.js.map +1 -1
- package/dist/parabolic.d.ts +17 -0
- package/dist/parabolic.js +41 -6
- package/dist/parabolic.js.map +1 -1
- package/dist/restapi.d.ts +26 -0
- package/dist/restapi.js +64 -0
- package/dist/restapi.js.map +1 -0
- package/package.json +1 -1
- package/src/config.ts +9 -1
- package/src/format.ts +8 -2
- package/src/parabolic.ts +44 -5
- package/src/restapi.ts +79 -0
package/README.md
CHANGED
|
@@ -33,10 +33,20 @@ Set `PARABOLIC_CHAIN_ID` and the RPC and contract addresses for that chain follo
|
|
|
33
33
|
| `PARABOLIC_HOOK` | `ParabolicHook` address | read from `factory.memeHook()` |
|
|
34
34
|
| `PARABOLIC_ARC_MEMO` | Arc `Memo` system contract | `0x5294E9927c3306DcBaDb03fe70b92e01cCede505` |
|
|
35
35
|
| `PARABOLIC_LAUNCH_CONFIG_ID` | Factory launch-config index (0 = the $5K open / $12,500 graduation curve) | `0` |
|
|
36
|
-
| `PARABOLIC_FACTORY_START_BLOCK` | First block of the `TokenLaunched` scan used when
|
|
36
|
+
| `PARABOLIC_FACTORY_START_BLOCK` | First block of the `TokenLaunched` scan, used only when neither a subgraph nor the API is available | the factory's deployment block |
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
Call `parabolic.docs` to print the exact addresses this server is using, including the memo router
|
|
39
|
+
every launch with an opening buy is sent to. Check each one on Arcscan, where all of them are verified
|
|
40
|
+
with source, before you sign anything:
|
|
41
|
+
|
|
42
|
+
| Contract | Arc Testnet (5042002) |
|
|
43
|
+
|---|---|
|
|
44
|
+
| `ParabolicLaunchFactory` | [`0xDA14d24385483c5876e0E170c6135F14Fc3BCEc3`](https://testnet.arcscan.app/address/0xDA14d24385483c5876e0E170c6135F14Fc3BCEc3) |
|
|
45
|
+
| `ParabolicMemoRouter` | [`0x32E6e071eA1Fe58DF86C4D3f419a8BAF2118f505`](https://testnet.arcscan.app/address/0x32E6e071eA1Fe58DF86C4D3f419a8BAF2118f505) |
|
|
46
|
+
| EURC (test token) | [`0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a`](https://testnet.arcscan.app/address/0x89B50855Aa3bE2F677cD6303Cec089B5F319D72a) |
|
|
47
|
+
| Arc `Memo` (system) | [`0x5294E9927c3306DcBaDb03fe70b92e01cCede505`](https://testnet.arcscan.app/address/0x5294E9927c3306DcBaDb03fe70b92e01cCede505) |
|
|
48
|
+
|
|
49
|
+
Arc mainnet (5042) addresses ship in the release that follows the 16 September 2026 deployment.
|
|
40
50
|
|
|
41
51
|
### Claude Code
|
|
42
52
|
|
|
@@ -154,7 +164,7 @@ With `PARABOLIC_MEMO_ROUTER` set the result is `kind: "launch_and_buy"`: one `tx
|
|
|
154
164
|
- At graduation the curve still holds the reserved 28.57% of supply: ≈ 20.4% seeds the Uniswap v4 full-range position with the $12,500 raised at the same terminal price, and ≈ 8.2% is permanently locked. Fully diluted graduation market cap: $61,250.
|
|
155
165
|
- Fair launch: `ParabolicMemoRouter.launchAndBuy` / `launchAndBuyWithToken` put the creator's opening buy inside the launch transaction (snipe-tax exempt, before anyone else can trade). Called directly they work from any wallet; the router forwards no exemption list and rejects a `creatorFeeRecipient` other than zero or the signer.
|
|
156
166
|
- A memo-routed buy (`memo: { referral }`) wraps `ParabolicMemoRouter.buy` inside Arc's `Memo.memo(...)` so the referral code is attributed on-chain. It is **EOA-only** (the Memo contract's caller must be `tx.origin`) and forwards no value, so the router pulls whole 6-decimal USDC units through the ERC-20 view (`0x3600…0000`) and needs a one-time approval; smart-account wallets should use the direct buy. Memo-wrapped launches (referral on a launch) are not built here.
|
|
157
|
-
- The factory has no enumeration function (only `getLaunchedToken(address)`), so listing
|
|
167
|
+
- The factory has no enumeration function (only `getLaunchedToken(address)`), so listing comes from an indexer: `PARABOLIC_SUBGRAPH_URL` when set, otherwise Parabolic's public read API. Only if both are unavailable does it scan `TokenLaunched` logs, which public Arc RPCs rate-limit hard.
|
|
158
168
|
|
|
159
169
|
## Development
|
|
160
170
|
|
package/dist/config.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare const USDC_VIEW: Address;
|
|
|
6
6
|
/** `address(0)` as the pair token means the curve is quoted in native USDC. */
|
|
7
7
|
export declare const NATIVE_QUOTE: Address;
|
|
8
8
|
export declare const DEFAULT_CHAIN_ID = 5042002;
|
|
9
|
+
export declare const DEFAULT_API_URL = "https://www.parabolic.family/api/v1";
|
|
9
10
|
/**
|
|
10
11
|
* Deployed Parabolic addresses per chain, so the server is useful with no configuration at all.
|
|
11
12
|
* The source repository is private; these are the same addresses the site publishes at
|
|
@@ -31,6 +32,11 @@ export type Config = {
|
|
|
31
32
|
chainId: number;
|
|
32
33
|
/** ParabolicLaunchFactory. Required for on-chain coin lookups and for building launch transactions. */
|
|
33
34
|
factory?: Address;
|
|
35
|
+
/**
|
|
36
|
+
* Parabolic's public read API, used for listings when no subgraph is configured. Set to "" to opt
|
|
37
|
+
* out and fall back to a TokenLaunched log scan, which public Arc RPCs rate-limit hard.
|
|
38
|
+
*/
|
|
39
|
+
apiUrl?: string;
|
|
34
40
|
/** ParabolicMemoRouter. Optional; enables the memo-routed (referral-carrying) buy variant. */
|
|
35
41
|
memoRouter?: Address;
|
|
36
42
|
/** Parabolic subgraph GraphQL endpoint. Recommended: listing, holders, volume and stats come from here. */
|
package/dist/config.js
CHANGED
|
@@ -6,6 +6,7 @@ export const USDC_VIEW = "0x3600000000000000000000000000000000000000";
|
|
|
6
6
|
/** `address(0)` as the pair token means the curve is quoted in native USDC. */
|
|
7
7
|
export const NATIVE_QUOTE = "0x0000000000000000000000000000000000000000";
|
|
8
8
|
export const DEFAULT_CHAIN_ID = 5042002;
|
|
9
|
+
export const DEFAULT_API_URL = "https://www.parabolic.family/api/v1";
|
|
9
10
|
/**
|
|
10
11
|
* Deployed Parabolic addresses per chain, so the server is useful with no configuration at all.
|
|
11
12
|
* The source repository is private; these are the same addresses the site publishes at
|
|
@@ -37,9 +38,10 @@ export const ENV_VARS = [
|
|
|
37
38
|
["PARABOLIC_SUBGRAPH_URL", "Parabolic subgraph endpoint (listing, holders, volume, protocol stats)"],
|
|
38
39
|
["PARABOLIC_EURC", "ERC-20 EURC address (EURC-quoted launches only)"],
|
|
39
40
|
["PARABOLIC_HOOK", "ParabolicHook address (optional; read from the factory when unset)"],
|
|
41
|
+
["PARABOLIC_API_URL", `Parabolic public read API for listings (default ${DEFAULT_API_URL}; "" to use a log scan instead)`],
|
|
40
42
|
["PARABOLIC_ARC_MEMO", `Arc Memo system contract (default ${ARC_MEMO_DEFAULT})`],
|
|
41
43
|
["PARABOLIC_LAUNCH_CONFIG_ID", "factory launch config index (default 0)"],
|
|
42
|
-
["PARABOLIC_FACTORY_START_BLOCK", "first block for the TokenLaunched log scan (default
|
|
44
|
+
["PARABOLIC_FACTORY_START_BLOCK", "first block for the TokenLaunched log scan (default: the factory's deployment block for this chain)"],
|
|
43
45
|
];
|
|
44
46
|
function addr(name, v) {
|
|
45
47
|
if (v === undefined || v.trim() === "")
|
|
@@ -68,6 +70,7 @@ export function configFromEnv(env = process.env) {
|
|
|
68
70
|
chainId,
|
|
69
71
|
factory: addr("PARABOLIC_FACTORY", env.PARABOLIC_FACTORY) ?? known?.factory,
|
|
70
72
|
memoRouter: addr("PARABOLIC_MEMO_ROUTER", env.PARABOLIC_MEMO_ROUTER) ?? known?.memoRouter,
|
|
73
|
+
apiUrl: env.PARABOLIC_API_URL === undefined ? DEFAULT_API_URL : env.PARABOLIC_API_URL.trim() || undefined,
|
|
71
74
|
subgraphUrl: env.PARABOLIC_SUBGRAPH_URL?.trim() || undefined,
|
|
72
75
|
eurc: addr("PARABOLIC_EURC", env.PARABOLIC_EURC) ?? known?.eurc,
|
|
73
76
|
hook: addr("PARABOLIC_HOOK", env.PARABOLIC_HOOK),
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAgB,MAAM,MAAM,CAAC;AAE3D,gHAAgH;AAChH,MAAM,CAAC,MAAM,gBAAgB,GAAY,4CAA4C,CAAC;AACtF,mGAAmG;AACnG,MAAM,CAAC,MAAM,SAAS,GAAY,4CAA4C,CAAC;AAC/E,+EAA+E;AAC/E,MAAM,CAAC,MAAM,YAAY,GAAY,4CAA4C,CAAC;AAElF,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/format.js
CHANGED
|
@@ -52,7 +52,13 @@ export function safeMessage(e) {
|
|
|
52
52
|
return raw;
|
|
53
53
|
console.error("[parabolic-mcp]", raw);
|
|
54
54
|
const lines = raw.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
// viem puts the headline first and the actual cause on a `Details:` line further down, past the
|
|
56
|
+
// URL and the request body. Taking the first two lines kept the headline and the URL and dropped
|
|
57
|
+
// the cause, so a rate limit surfaced as "Request exceeds defined limit" with no way to tell why.
|
|
58
|
+
const headline = lines[0] ?? "Request failed";
|
|
59
|
+
// Keep the diagnostic lines and drop the ones that carry the endpoint or the request body.
|
|
60
|
+
const diagnostics = lines.slice(1).filter((l) => /^(Status|Details|Code):/.test(l));
|
|
61
|
+
const kept = [headline, ...diagnostics].join(" ");
|
|
62
|
+
return `${kept.replace(/https?:\/\/[^\s"']+/g, "<endpoint>")} (endpoint masked)`;
|
|
57
63
|
}
|
|
58
64
|
//# sourceMappingURL=format.js.map
|
package/dist/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"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"}
|
package/dist/parabolic.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { type Address } from "viem";
|
|
|
2
2
|
import { type Rpc } from "./chain.js";
|
|
3
3
|
import { type CoinSummary, type SortKey, type StatusKey } from "./coins.js";
|
|
4
4
|
import { type Config } from "./config.js";
|
|
5
|
+
import { RestApi } from "./restapi.js";
|
|
5
6
|
import { Subgraph, type Fetch } from "./subgraph.js";
|
|
6
7
|
import { type Socials, type TokenParams } from "./tx.js";
|
|
7
8
|
export declare const PHASES: readonly ["NotGraduated", "Swept", "PoolCreated", "Rescued"];
|
|
@@ -17,6 +18,9 @@ export declare const METADATA_LIMITS: {
|
|
|
17
18
|
};
|
|
18
19
|
/** Newest launches the TokenLaunched log scan considers when no subgraph is configured. */
|
|
19
20
|
export declare const CHAIN_LIST_MAX = 50;
|
|
21
|
+
/** Extra gas a crossing buy needs for the graduation it triggers, and a limit safe to send outright. */
|
|
22
|
+
export declare const GRADUATION_GAS_ALLOWANCE = 300000n;
|
|
23
|
+
export declare const GRADUATION_GAS_LIMIT = 800000n;
|
|
20
24
|
export type Launch = {
|
|
21
25
|
token: Address;
|
|
22
26
|
curve: Address;
|
|
@@ -79,6 +83,7 @@ export declare class Parabolic {
|
|
|
79
83
|
readonly config: Config;
|
|
80
84
|
readonly rpc: Rpc;
|
|
81
85
|
readonly subgraph: Subgraph | undefined;
|
|
86
|
+
readonly api: RestApi | undefined;
|
|
82
87
|
private hookPromise;
|
|
83
88
|
constructor(config: Config, deps?: {
|
|
84
89
|
rpc?: Rpc;
|
|
@@ -408,7 +413,13 @@ export declare class Parabolic {
|
|
|
408
413
|
};
|
|
409
414
|
};
|
|
410
415
|
gas: {
|
|
416
|
+
limit: string;
|
|
411
417
|
note: string;
|
|
418
|
+
formula: string;
|
|
419
|
+
} | {
|
|
420
|
+
limit: null;
|
|
421
|
+
note: string;
|
|
422
|
+
formula: string;
|
|
412
423
|
};
|
|
413
424
|
warnings: string[];
|
|
414
425
|
notes: string[];
|
|
@@ -447,7 +458,13 @@ export declare class Parabolic {
|
|
|
447
458
|
};
|
|
448
459
|
};
|
|
449
460
|
gas: {
|
|
461
|
+
limit: string;
|
|
462
|
+
note: string;
|
|
463
|
+
formula: string;
|
|
464
|
+
} | {
|
|
465
|
+
limit: null;
|
|
450
466
|
note: string;
|
|
467
|
+
formula: string;
|
|
451
468
|
};
|
|
452
469
|
warnings: string[];
|
|
453
470
|
notes: string[];
|
package/dist/parabolic.js
CHANGED
|
@@ -3,10 +3,11 @@ import { encodeFunctionData, toHex } from "viem";
|
|
|
3
3
|
import { curveAbi, factoryAbi, tokenAbi } from "./abi.js";
|
|
4
4
|
import { mapLimit, viemRpc } from "./chain.js";
|
|
5
5
|
import { isNative, progressPct, sortCoins, summaryFromGql } from "./coins.js";
|
|
6
|
-
import { NATIVE_QUOTE, chainName, explorerUrl } from "./config.js";
|
|
6
|
+
import { DEPLOYMENTS, NATIVE_QUOTE, chainName, explorerUrl } from "./config.js";
|
|
7
7
|
import { applySlippage, graduationMarketCap, graduationSplit, marketCap, passesPriceBound, poolIdOf, priceImpact, quoteBuy, quoteSell, reservedTokensFor, spotPrice, toNumber } from "./curve.js";
|
|
8
8
|
import { docsText } from "./docs.js";
|
|
9
9
|
import { addrOf, amount, big, bool, endpointHost, num, parseAddress, parseAmount, safeMessage, str } from "./format.js";
|
|
10
|
+
import { RestApi } from "./restapi.js";
|
|
10
11
|
import { Subgraph } from "./subgraph.js";
|
|
11
12
|
import { encodeApprove, encodeBuy, encodeLaunch, encodeLaunchAndBuy, encodeMemoBuy, encodeSell } from "./tx.js";
|
|
12
13
|
export const PHASES = ["NotGraduated", "Swept", "PoolCreated", "Rescued"];
|
|
@@ -16,6 +17,9 @@ export const DEV_BUY_SLIPPAGE_BPS = 200n;
|
|
|
16
17
|
export const METADATA_LIMITS = { name: 64, symbol: 16, logo: 512, description: 2048, social: 256 };
|
|
17
18
|
/** Newest launches the TokenLaunched log scan considers when no subgraph is configured. */
|
|
18
19
|
export const CHAIN_LIST_MAX = 50;
|
|
20
|
+
/** Extra gas a crossing buy needs for the graduation it triggers, and a limit safe to send outright. */
|
|
21
|
+
export const GRADUATION_GAS_ALLOWANCE = 300000n;
|
|
22
|
+
export const GRADUATION_GAS_LIMIT = 800000n;
|
|
19
23
|
const LAUNCHED_FIELDS = ["token", "curve", "deployer", "creatorFeeRecipient", "pairToken", "graduationThreshold", "poolFee", "tickSpacing", "creatorTaxBps", "buybackEnabled", "phase", "sweptQuote", "sweptTokens", "sweptAt", "exists"];
|
|
20
24
|
const CONFIG_FIELDS = ["supply", "curveFeeBps", "phantomQuote", "graduationThreshold", "poolFee", "tickSpacing", "enabled"];
|
|
21
25
|
/** viem returns a tuple whose components are all named as an object; accept a positional array as well. */
|
|
@@ -41,11 +45,13 @@ export class Parabolic {
|
|
|
41
45
|
config;
|
|
42
46
|
rpc;
|
|
43
47
|
subgraph;
|
|
48
|
+
api;
|
|
44
49
|
hookPromise;
|
|
45
50
|
constructor(config, deps = {}) {
|
|
46
51
|
this.config = config;
|
|
47
52
|
this.rpc = deps.rpc ?? viemRpc(config.rpcUrl, config.chainId);
|
|
48
53
|
this.subgraph = config.subgraphUrl ? new Subgraph(config.subgraphUrl, deps.fetch) : undefined;
|
|
54
|
+
this.api = config.apiUrl ? new RestApi(config.apiUrl, config.chainId, deps.fetch) : undefined;
|
|
49
55
|
}
|
|
50
56
|
// ---- reads --------------------------------------------------------------------------------------------------
|
|
51
57
|
read(address, abi, functionName, args) {
|
|
@@ -56,8 +62,14 @@ export class Parabolic {
|
|
|
56
62
|
return Object.fromEntries(names.map((n, i) => [n, values[i]]));
|
|
57
63
|
}
|
|
58
64
|
requireFactory() {
|
|
59
|
-
if (!this.config.factory)
|
|
60
|
-
|
|
65
|
+
if (!this.config.factory) {
|
|
66
|
+
// The addresses for every chain we know about ship in DEPLOYMENTS, so a missing factory almost
|
|
67
|
+
// always means the chain has no deployment yet rather than a configuration mistake.
|
|
68
|
+
const known = DEPLOYMENTS[this.config.chainId]?.factory !== undefined;
|
|
69
|
+
throw new Error(known
|
|
70
|
+
? "PARABOLIC_FACTORY is not set: needed for this operation"
|
|
71
|
+
: `Parabolic is not deployed on ${chainName(this.config.chainId)} (chain ${this.config.chainId}) yet. Arc mainnet opens on 16 September 2026; until then use chain 5042002 (Arc Testnet), which needs no configuration. Set PARABOLIC_FACTORY to point at your own deployment.`);
|
|
72
|
+
}
|
|
61
73
|
return this.config.factory;
|
|
62
74
|
}
|
|
63
75
|
hookAddress() {
|
|
@@ -130,11 +142,18 @@ export class Parabolic {
|
|
|
130
142
|
let coins;
|
|
131
143
|
let source;
|
|
132
144
|
let partial = false;
|
|
145
|
+
// Preferred over the log scan whenever there is no subgraph: one cached request instead of the
|
|
146
|
+
// forty rate-limited eth_getLogs calls the scan needs, and it carries holders and volume.
|
|
147
|
+
const fromApi = this.subgraph === undefined && this.api ? await this.api.coins(input.status, 100) : undefined;
|
|
133
148
|
if (this.subgraph) {
|
|
134
149
|
const where = input.status === "climbing" ? { status: "CLIMBING" } : input.status === "graduated" ? { status_not: "CLIMBING" } : undefined;
|
|
135
150
|
coins = (await this.subgraph.coins(where, 200)).map((g) => summaryFromGql(g));
|
|
136
151
|
source = "subgraph";
|
|
137
152
|
}
|
|
153
|
+
else if (fromApi !== undefined) {
|
|
154
|
+
coins = fromApi;
|
|
155
|
+
source = `Parabolic public API (${this.config.apiUrl}): full history, with holders and volume. Set PARABOLIC_SUBGRAPH_URL to read an indexer directly.`;
|
|
156
|
+
}
|
|
138
157
|
else if (this.config.factory) {
|
|
139
158
|
const scanned = await this.chainCoins(this.config.factory);
|
|
140
159
|
coins = scanned.coins;
|
|
@@ -149,7 +168,9 @@ export class Parabolic {
|
|
|
149
168
|
: `factory TokenLaunched log scan${range}${scan.failed ? ", ended early: the RPC refused or rate-limited a window" : ""}. PARTIAL: this is the newest slice of the chain, not every coin. Public Arc RPCs cap the log range, so anything older is missing. Set PARABOLIC_SUBGRAPH_URL for the full list with holders and volume, or read https://www.parabolic.family/api/v1/coins`;
|
|
150
169
|
}
|
|
151
170
|
else {
|
|
152
|
-
throw new Error(
|
|
171
|
+
throw new Error(DEPLOYMENTS[this.config.chainId]?.factory === undefined
|
|
172
|
+
? `Parabolic is not deployed on ${chainName(this.config.chainId)} (chain ${this.config.chainId}) yet, so there is nothing to list. Arc mainnet opens on 16 September 2026; chain 5042002 (Arc Testnet) works with no configuration.`
|
|
173
|
+
: "Listing coins needs PARABOLIC_SUBGRAPH_URL, PARABOLIC_API_URL or PARABOLIC_FACTORY: the factory ABI exposes getLaunchedToken(address) but no enumeration function, so a list has to come from an indexer");
|
|
153
174
|
}
|
|
154
175
|
if (input.status)
|
|
155
176
|
coins = coins.filter((c) => c.status === input.status);
|
|
@@ -371,7 +392,7 @@ export class Parabolic {
|
|
|
371
392
|
graduatesCoin: q.crossing,
|
|
372
393
|
reserves: { quote: amount(t.quoteReserve, qd), tokens: amount(t.tokenReserve, 18), sellableTokens: amount(t.sellableTokens, 18) },
|
|
373
394
|
notes: [
|
|
374
|
-
...(q.crossing ? [
|
|
395
|
+
...(q.crossing ? [`This buy takes the curve's last sellable tokens: it fills to the threshold, refunds the rest, and graduates the coin in the same transaction. Send gas.limit (${GRADUATION_GAS_LIMIT}); an estimate plus the usual 25% is not enough and reverts out of gas.`] : []),
|
|
375
396
|
...(t.snipeBps > 0n && !exempt ? ["The launch snipe-tax window is open; the tax decays every second, so a quote taken now overstates the tax a later block charges."] : []),
|
|
376
397
|
"minTokensOut is enforced as a price bound: spent × minTokensOut ≤ received × tokensOut.",
|
|
377
398
|
],
|
|
@@ -430,7 +451,21 @@ export class Parabolic {
|
|
|
430
451
|
quoteIn: amount(quoteIn, qd), expectedTokensOut: amount(q.tokensOut, 18), minTokensOut: amount(minTokensOut, 18), slippageBps: input.minTokensOut !== undefined ? null : Number(slippage),
|
|
431
452
|
fees: { feeBps: Number(t.feeBps), creatorTaxBps: Number(t.creatorTaxBps), snipeTaxBps: Number(snipeBps), buyerExempt: exempt }, priceImpactPct: priceImpact(q.spent, q.tokensOut, t.quoteReserve, t.tokenReserve), graduatesCoin: q.crossing, refund: amount(q.refund, qd),
|
|
432
453
|
};
|
|
433
|
-
|
|
454
|
+
// A crossing buy graduates the coin in the same transaction, which is a different and much more
|
|
455
|
+
// expensive code path than the estimate covers: taking eth_estimateGas and adding the usual 25%
|
|
456
|
+
// is not enough and the transaction reverts out of gas. The server knows when a buy crosses, so
|
|
457
|
+
// it returns the limit to send rather than a sentence about how to compute one.
|
|
458
|
+
const gas = q.crossing
|
|
459
|
+
? {
|
|
460
|
+
limit: GRADUATION_GAS_LIMIT.toString(),
|
|
461
|
+
note: `This buy graduates the coin, which eth_estimateGas does not price. Send gas = ${GRADUATION_GAS_LIMIT} (an estimate plus ${GRADUATION_GAS_ALLOWANCE} for the graduation, plus 25%). Adding only 25% to the estimate reverts out of gas.`,
|
|
462
|
+
formula: `(estimate + ${GRADUATION_GAS_ALLOWANCE}) * 1.25`,
|
|
463
|
+
}
|
|
464
|
+
: {
|
|
465
|
+
limit: null,
|
|
466
|
+
note: "Take eth_estimateGas and multiply by 1.25: the snipe tax is priced per block, so a buy quoted in one block runs a slightly different path in the next.",
|
|
467
|
+
formula: "estimate * 1.25",
|
|
468
|
+
};
|
|
434
469
|
if (input.memo) {
|
|
435
470
|
if (!this.config.memoRouter)
|
|
436
471
|
throw new Error("Memo-routed buys need PARABOLIC_MEMO_ROUTER");
|
package/dist/parabolic.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parabolic.js","sourceRoot":"","sources":["../src/parabolic.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parabolic.js","sourceRoot":"","sources":["../src/parabolic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type CoinSummary, type StatusKey } from "./coins.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parabolic's own public read API (https://www.parabolic.family/api/v1), used for listings when no
|
|
4
|
+
* subgraph is configured.
|
|
5
|
+
*
|
|
6
|
+
* The alternative was scanning TokenLaunched logs, which is what this server used to do by default.
|
|
7
|
+
* Public Arc RPCs cap eth_getLogs near 10,000 blocks, so covering any useful span took around forty
|
|
8
|
+
* sequential requests, roughly half of which came back rate-limited — and the rate limit then spilled
|
|
9
|
+
* onto every other tool, so an agent that listed coins before launching found build_launch_tx broken.
|
|
10
|
+
* One cached HTTP request replaces all of it, and carries holders and volume the log scan never had.
|
|
11
|
+
*
|
|
12
|
+
* Set PARABOLIC_API_URL to "" to opt out and fall back to the log scan.
|
|
13
|
+
*/
|
|
14
|
+
export type Fetch = typeof globalThis.fetch;
|
|
15
|
+
export declare class RestApi {
|
|
16
|
+
private readonly base;
|
|
17
|
+
private readonly chainId;
|
|
18
|
+
private readonly doFetch;
|
|
19
|
+
constructor(base: string, chainId: number, doFetch?: Fetch);
|
|
20
|
+
/**
|
|
21
|
+
* Returns undefined rather than throwing whenever this source cannot answer for the configured
|
|
22
|
+
* chain, so the caller can fall through to the log scan instead of failing the tool.
|
|
23
|
+
*/
|
|
24
|
+
coins(status: StatusKey | undefined, limit: number): Promise<CoinSummary[] | undefined>;
|
|
25
|
+
private toSummary;
|
|
26
|
+
}
|
package/dist/restapi.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { getAddress, parseUnits } from "viem";
|
|
2
|
+
import { NATIVE_QUOTE } from "./config.js";
|
|
3
|
+
import { isNative, quoteDecimalsOf } from "./coins.js";
|
|
4
|
+
const whole = (n, decimals) => {
|
|
5
|
+
// The API serves whole units as numbers; raw amounts are reconstructed at the quote's precision.
|
|
6
|
+
const fixed = n.toFixed(Math.min(decimals, 18));
|
|
7
|
+
return parseUnits(fixed, decimals);
|
|
8
|
+
};
|
|
9
|
+
export class RestApi {
|
|
10
|
+
base;
|
|
11
|
+
chainId;
|
|
12
|
+
doFetch;
|
|
13
|
+
constructor(base, chainId, doFetch = globalThis.fetch) {
|
|
14
|
+
this.base = base;
|
|
15
|
+
this.chainId = chainId;
|
|
16
|
+
this.doFetch = doFetch;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Returns undefined rather than throwing whenever this source cannot answer for the configured
|
|
20
|
+
* chain, so the caller can fall through to the log scan instead of failing the tool.
|
|
21
|
+
*/
|
|
22
|
+
async coins(status, limit) {
|
|
23
|
+
const url = new URL(`${this.base.replace(/\/$/, "")}/coins`);
|
|
24
|
+
url.searchParams.set("limit", String(Math.min(100, Math.max(1, limit))));
|
|
25
|
+
if (status)
|
|
26
|
+
url.searchParams.set("status", status);
|
|
27
|
+
let body;
|
|
28
|
+
try {
|
|
29
|
+
const res = await this.doFetch(url, { headers: { accept: "application/json", "user-agent": "parabolic-mcp" }, signal: AbortSignal.timeout(8_000) });
|
|
30
|
+
if (!res.ok)
|
|
31
|
+
return undefined;
|
|
32
|
+
body = (await res.json());
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
// Never present another chain's coins as this one's, and never serve the site's demo set.
|
|
38
|
+
if (body.meta?.chainId !== undefined && body.meta.chainId !== this.chainId)
|
|
39
|
+
return undefined;
|
|
40
|
+
if (body.meta?.mode === "sample")
|
|
41
|
+
return undefined;
|
|
42
|
+
if (!Array.isArray(body.coins))
|
|
43
|
+
return undefined;
|
|
44
|
+
return body.coins.filter((c) => c.sample !== true && c.curve).map((c) => this.toSummary(c));
|
|
45
|
+
}
|
|
46
|
+
toSummary(c) {
|
|
47
|
+
const pairToken = (c.pair === "USDC" ? NATIVE_QUOTE : "0x0000000000000000000000000000000000000001");
|
|
48
|
+
const quoteDecimals = isNative(pairToken) ? 18 : quoteDecimalsOf(pairToken);
|
|
49
|
+
const status = c.status === "graduated" ? "graduated" : "climbing";
|
|
50
|
+
return {
|
|
51
|
+
address: getAddress(c.address), curve: getAddress(c.curve), name: c.name, ticker: c.ticker,
|
|
52
|
+
creator: getAddress(c.creator), pair: c.pair, pairToken, quoteDecimals, status,
|
|
53
|
+
raised: String(c.raised), raisedRaw: whole(c.raised, quoteDecimals),
|
|
54
|
+
threshold: String(c.threshold), thresholdRaw: whole(c.threshold, quoteDecimals),
|
|
55
|
+
progressPct: c.progressPct, price: c.price, marketCap: c.marketCap,
|
|
56
|
+
holders: c.holders ?? undefined, volume24h: c.volume24h ?? undefined, change24h: c.change24h ?? undefined,
|
|
57
|
+
tradeCount: c.tradeCount ?? undefined, createdAt: c.createdAt ?? undefined, lastTradeAt: c.lastTradeAt ?? undefined,
|
|
58
|
+
graduatedAt: c.graduatedAt ?? undefined, poolId: c.poolId ?? undefined,
|
|
59
|
+
logo: c.logo ?? undefined, description: c.description ?? undefined,
|
|
60
|
+
source: "subgraph",
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=restapi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restapi.js","sourceRoot":"","sources":["../src/restapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAgB,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAoC,MAAM,YAAY,CAAC;AA2BzF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,QAAgB,EAAU,EAAE;IACpD,iGAAiG;IACjG,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IAChD,OAAO,UAAU,CAAC,KAAoB,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC;AAEF,MAAM,OAAO,OAAO;IACW;IAA+B;IAAkC;IAA9F,YAA6B,IAAY,EAAmB,OAAe,EAAmB,UAAiB,UAAU,CAAC,KAAK;QAAlG,SAAI,GAAJ,IAAI,CAAQ;QAAmB,YAAO,GAAP,OAAO,CAAQ;QAAmB,YAAO,GAAP,OAAO,CAA0B;IAAG,CAAC;IAEnI;;;OAGG;IACH,KAAK,CAAC,KAAK,CAAC,MAA6B,EAAE,KAAa;QACtD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAC7D,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpJ,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,SAAS,CAAC;YAC9B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,0FAA0F;QAC1F,IAAI,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC7F,IAAI,IAAI,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,CAAC;IAEO,SAAS,CAAC,CAAU;QAC1B,MAAM,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4CAA4C,CAAY,CAAC;QAC/G,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAc,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9E,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,KAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM;YACpG,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM;YAC9E,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC;YACnE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,aAAa,CAAC;YAC/E,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS;YAClE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS;YACzG,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;YACnH,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,IAAI,SAAS;YACtE,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,SAAS;YAClE,MAAM,EAAE,UAAU;SACnB,CAAC;IACJ,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@parabolicfamily/mcp",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "MCP server for Parabolic, the dollar-native token launchpad on Arc: discover coins, quote curve trades and build unsigned transactions. Never holds keys.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
package/src/config.ts
CHANGED
|
@@ -8,6 +8,7 @@ export const USDC_VIEW: Address = "0x3600000000000000000000000000000000000000";
|
|
|
8
8
|
export const NATIVE_QUOTE: Address = "0x0000000000000000000000000000000000000000";
|
|
9
9
|
|
|
10
10
|
export const DEFAULT_CHAIN_ID = 5042002;
|
|
11
|
+
export const DEFAULT_API_URL = "https://www.parabolic.family/api/v1";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Deployed Parabolic addresses per chain, so the server is useful with no configuration at all.
|
|
@@ -47,6 +48,11 @@ export type Config = {
|
|
|
47
48
|
chainId: number;
|
|
48
49
|
/** ParabolicLaunchFactory. Required for on-chain coin lookups and for building launch transactions. */
|
|
49
50
|
factory?: Address;
|
|
51
|
+
/**
|
|
52
|
+
* Parabolic's public read API, used for listings when no subgraph is configured. Set to "" to opt
|
|
53
|
+
* out and fall back to a TokenLaunched log scan, which public Arc RPCs rate-limit hard.
|
|
54
|
+
*/
|
|
55
|
+
apiUrl?: string;
|
|
50
56
|
/** ParabolicMemoRouter. Optional; enables the memo-routed (referral-carrying) buy variant. */
|
|
51
57
|
memoRouter?: Address;
|
|
52
58
|
/** Parabolic subgraph GraphQL endpoint. Recommended: listing, holders, volume and stats come from here. */
|
|
@@ -72,9 +78,10 @@ export const ENV_VARS: Array<[name: string, meaning: string]> = [
|
|
|
72
78
|
["PARABOLIC_SUBGRAPH_URL", "Parabolic subgraph endpoint (listing, holders, volume, protocol stats)"],
|
|
73
79
|
["PARABOLIC_EURC", "ERC-20 EURC address (EURC-quoted launches only)"],
|
|
74
80
|
["PARABOLIC_HOOK", "ParabolicHook address (optional; read from the factory when unset)"],
|
|
81
|
+
["PARABOLIC_API_URL", `Parabolic public read API for listings (default ${DEFAULT_API_URL}; "" to use a log scan instead)`],
|
|
75
82
|
["PARABOLIC_ARC_MEMO", `Arc Memo system contract (default ${ARC_MEMO_DEFAULT})`],
|
|
76
83
|
["PARABOLIC_LAUNCH_CONFIG_ID", "factory launch config index (default 0)"],
|
|
77
|
-
["PARABOLIC_FACTORY_START_BLOCK", "first block for the TokenLaunched log scan (default
|
|
84
|
+
["PARABOLIC_FACTORY_START_BLOCK", "first block for the TokenLaunched log scan (default: the factory's deployment block for this chain)"],
|
|
78
85
|
];
|
|
79
86
|
|
|
80
87
|
function addr(name: string, v: string | undefined): Address | undefined {
|
|
@@ -102,6 +109,7 @@ export function configFromEnv(env: Record<string, string | undefined> = process.
|
|
|
102
109
|
chainId,
|
|
103
110
|
factory: addr("PARABOLIC_FACTORY", env.PARABOLIC_FACTORY) ?? known?.factory,
|
|
104
111
|
memoRouter: addr("PARABOLIC_MEMO_ROUTER", env.PARABOLIC_MEMO_ROUTER) ?? known?.memoRouter,
|
|
112
|
+
apiUrl: env.PARABOLIC_API_URL === undefined ? DEFAULT_API_URL : env.PARABOLIC_API_URL.trim() || undefined,
|
|
105
113
|
subgraphUrl: env.PARABOLIC_SUBGRAPH_URL?.trim() || undefined,
|
|
106
114
|
eurc: addr("PARABOLIC_EURC", env.PARABOLIC_EURC) ?? known?.eurc,
|
|
107
115
|
hook: addr("PARABOLIC_HOOK", env.PARABOLIC_HOOK),
|
package/src/format.ts
CHANGED
|
@@ -57,6 +57,12 @@ export function safeMessage(e: unknown): string {
|
|
|
57
57
|
if (!/https?:\/\//.test(raw)) return raw;
|
|
58
58
|
console.error("[parabolic-mcp]", raw);
|
|
59
59
|
const lines = raw.split("\n").map((l) => l.trim()).filter(Boolean);
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
// viem puts the headline first and the actual cause on a `Details:` line further down, past the
|
|
61
|
+
// URL and the request body. Taking the first two lines kept the headline and the URL and dropped
|
|
62
|
+
// the cause, so a rate limit surfaced as "Request exceeds defined limit" with no way to tell why.
|
|
63
|
+
const headline = lines[0] ?? "Request failed";
|
|
64
|
+
// Keep the diagnostic lines and drop the ones that carry the endpoint or the request body.
|
|
65
|
+
const diagnostics = lines.slice(1).filter((l) => /^(Status|Details|Code):/.test(l));
|
|
66
|
+
const kept = [headline, ...diagnostics].join(" ");
|
|
67
|
+
return `${kept.replace(/https?:\/\/[^\s"']+/g, "<endpoint>")} (endpoint masked)`;
|
|
62
68
|
}
|
package/src/parabolic.ts
CHANGED
|
@@ -3,10 +3,11 @@ import { encodeFunctionData, toHex, type Abi, type Address, type Hex } from "vie
|
|
|
3
3
|
import { curveAbi, factoryAbi, tokenAbi } from "./abi.js";
|
|
4
4
|
import { mapLimit, viemRpc, type Rpc } from "./chain.js";
|
|
5
5
|
import { isNative, progressPct, sortCoins, summaryFromGql, type CoinSummary, type SortKey, type StatusKey } from "./coins.js";
|
|
6
|
-
import { NATIVE_QUOTE, chainName, explorerUrl, type Config } from "./config.js";
|
|
6
|
+
import { DEPLOYMENTS, NATIVE_QUOTE, chainName, explorerUrl, type Config } from "./config.js";
|
|
7
7
|
import { applySlippage, graduationMarketCap, graduationSplit, marketCap, passesPriceBound, poolIdOf, priceImpact, quoteBuy, quoteSell, reservedTokensFor, spotPrice, toNumber, type CurveTerms } from "./curve.js";
|
|
8
8
|
import { docsText } from "./docs.js";
|
|
9
9
|
import { addrOf, amount, big, bool, endpointHost, num, parseAddress, parseAmount, safeMessage, str } from "./format.js";
|
|
10
|
+
import { RestApi } from "./restapi.js";
|
|
10
11
|
import { Subgraph, type Fetch, type GqlCoin, type GqlDaily, type GqlProtocol } from "./subgraph.js";
|
|
11
12
|
import { encodeApprove, encodeBuy, encodeLaunch, encodeLaunchAndBuy, encodeMemoBuy, encodeSell, type Socials, type TokenParams } from "./tx.js";
|
|
12
13
|
|
|
@@ -17,6 +18,9 @@ export const DEV_BUY_SLIPPAGE_BPS = 200n;
|
|
|
17
18
|
export const METADATA_LIMITS = { name: 64, symbol: 16, logo: 512, description: 2048, social: 256 } as const;
|
|
18
19
|
/** Newest launches the TokenLaunched log scan considers when no subgraph is configured. */
|
|
19
20
|
export const CHAIN_LIST_MAX = 50;
|
|
21
|
+
/** Extra gas a crossing buy needs for the graduation it triggers, and a limit safe to send outright. */
|
|
22
|
+
export const GRADUATION_GAS_ALLOWANCE = 300_000n;
|
|
23
|
+
export const GRADUATION_GAS_LIMIT = 800_000n;
|
|
20
24
|
|
|
21
25
|
export type Launch = {
|
|
22
26
|
token: Address;
|
|
@@ -77,12 +81,14 @@ export class Parabolic {
|
|
|
77
81
|
readonly config: Config;
|
|
78
82
|
readonly rpc: Rpc;
|
|
79
83
|
readonly subgraph: Subgraph | undefined;
|
|
84
|
+
readonly api: RestApi | undefined;
|
|
80
85
|
private hookPromise: Promise<Address | undefined> | undefined;
|
|
81
86
|
|
|
82
87
|
constructor(config: Config, deps: { rpc?: Rpc; fetch?: Fetch } = {}) {
|
|
83
88
|
this.config = config;
|
|
84
89
|
this.rpc = deps.rpc ?? viemRpc(config.rpcUrl, config.chainId);
|
|
85
90
|
this.subgraph = config.subgraphUrl ? new Subgraph(config.subgraphUrl, deps.fetch) : undefined;
|
|
91
|
+
this.api = config.apiUrl ? new RestApi(config.apiUrl, config.chainId, deps.fetch) : undefined;
|
|
86
92
|
}
|
|
87
93
|
|
|
88
94
|
// ---- reads --------------------------------------------------------------------------------------------------
|
|
@@ -97,7 +103,16 @@ export class Parabolic {
|
|
|
97
103
|
}
|
|
98
104
|
|
|
99
105
|
private requireFactory(): Address {
|
|
100
|
-
if (!this.config.factory)
|
|
106
|
+
if (!this.config.factory) {
|
|
107
|
+
// The addresses for every chain we know about ship in DEPLOYMENTS, so a missing factory almost
|
|
108
|
+
// always means the chain has no deployment yet rather than a configuration mistake.
|
|
109
|
+
const known = DEPLOYMENTS[this.config.chainId]?.factory !== undefined;
|
|
110
|
+
throw new Error(
|
|
111
|
+
known
|
|
112
|
+
? "PARABOLIC_FACTORY is not set: needed for this operation"
|
|
113
|
+
: `Parabolic is not deployed on ${chainName(this.config.chainId)} (chain ${this.config.chainId}) yet. Arc mainnet opens on 16 September 2026; until then use chain 5042002 (Arc Testnet), which needs no configuration. Set PARABOLIC_FACTORY to point at your own deployment.`,
|
|
114
|
+
);
|
|
115
|
+
}
|
|
101
116
|
return this.config.factory;
|
|
102
117
|
}
|
|
103
118
|
|
|
@@ -172,10 +187,16 @@ export class Parabolic {
|
|
|
172
187
|
let coins: CoinSummary[];
|
|
173
188
|
let source: string;
|
|
174
189
|
let partial = false;
|
|
190
|
+
// Preferred over the log scan whenever there is no subgraph: one cached request instead of the
|
|
191
|
+
// forty rate-limited eth_getLogs calls the scan needs, and it carries holders and volume.
|
|
192
|
+
const fromApi = this.subgraph === undefined && this.api ? await this.api.coins(input.status, 100) : undefined;
|
|
175
193
|
if (this.subgraph) {
|
|
176
194
|
const where = input.status === "climbing" ? { status: "CLIMBING" } : input.status === "graduated" ? { status_not: "CLIMBING" } : undefined;
|
|
177
195
|
coins = (await this.subgraph.coins(where, 200)).map((g) => summaryFromGql(g));
|
|
178
196
|
source = "subgraph";
|
|
197
|
+
} else if (fromApi !== undefined) {
|
|
198
|
+
coins = fromApi;
|
|
199
|
+
source = `Parabolic public API (${this.config.apiUrl}): full history, with holders and volume. Set PARABOLIC_SUBGRAPH_URL to read an indexer directly.`;
|
|
179
200
|
} else if (this.config.factory) {
|
|
180
201
|
const scanned = await this.chainCoins(this.config.factory);
|
|
181
202
|
coins = scanned.coins;
|
|
@@ -189,7 +210,11 @@ export class Parabolic {
|
|
|
189
210
|
? `factory TokenLaunched log scan${range} (complete)`
|
|
190
211
|
: `factory TokenLaunched log scan${range}${scan.failed ? ", ended early: the RPC refused or rate-limited a window" : ""}. PARTIAL: this is the newest slice of the chain, not every coin. Public Arc RPCs cap the log range, so anything older is missing. Set PARABOLIC_SUBGRAPH_URL for the full list with holders and volume, or read https://www.parabolic.family/api/v1/coins`;
|
|
191
212
|
} else {
|
|
192
|
-
throw new Error(
|
|
213
|
+
throw new Error(
|
|
214
|
+
DEPLOYMENTS[this.config.chainId]?.factory === undefined
|
|
215
|
+
? `Parabolic is not deployed on ${chainName(this.config.chainId)} (chain ${this.config.chainId}) yet, so there is nothing to list. Arc mainnet opens on 16 September 2026; chain 5042002 (Arc Testnet) works with no configuration.`
|
|
216
|
+
: "Listing coins needs PARABOLIC_SUBGRAPH_URL, PARABOLIC_API_URL or PARABOLIC_FACTORY: the factory ABI exposes getLaunchedToken(address) but no enumeration function, so a list has to come from an indexer",
|
|
217
|
+
);
|
|
193
218
|
}
|
|
194
219
|
if (input.status) coins = coins.filter((c) => c.status === input.status);
|
|
195
220
|
const sorted = sortCoins(coins, sort).slice(0, limit);
|
|
@@ -414,7 +439,7 @@ export class Parabolic {
|
|
|
414
439
|
graduatesCoin: q.crossing,
|
|
415
440
|
reserves: { quote: amount(t.quoteReserve, qd), tokens: amount(t.tokenReserve, 18), sellableTokens: amount(t.sellableTokens, 18) },
|
|
416
441
|
notes: [
|
|
417
|
-
...(q.crossing ? [
|
|
442
|
+
...(q.crossing ? [`This buy takes the curve's last sellable tokens: it fills to the threshold, refunds the rest, and graduates the coin in the same transaction. Send gas.limit (${GRADUATION_GAS_LIMIT}); an estimate plus the usual 25% is not enough and reverts out of gas.`] : []),
|
|
418
443
|
...(t.snipeBps > 0n && !exempt ? ["The launch snipe-tax window is open; the tax decays every second, so a quote taken now overstates the tax a later block charges."] : []),
|
|
419
444
|
"minTokensOut is enforced as a price bound: spent × minTokensOut ≤ received × tokensOut.",
|
|
420
445
|
],
|
|
@@ -474,7 +499,21 @@ export class Parabolic {
|
|
|
474
499
|
quoteIn: amount(quoteIn, qd), expectedTokensOut: amount(q.tokensOut, 18), minTokensOut: amount(minTokensOut, 18), slippageBps: input.minTokensOut !== undefined ? null : Number(slippage),
|
|
475
500
|
fees: { feeBps: Number(t.feeBps), creatorTaxBps: Number(t.creatorTaxBps), snipeTaxBps: Number(snipeBps), buyerExempt: exempt }, priceImpactPct: priceImpact(q.spent, q.tokensOut, t.quoteReserve, t.tokenReserve), graduatesCoin: q.crossing, refund: amount(q.refund, qd),
|
|
476
501
|
};
|
|
477
|
-
|
|
502
|
+
// A crossing buy graduates the coin in the same transaction, which is a different and much more
|
|
503
|
+
// expensive code path than the estimate covers: taking eth_estimateGas and adding the usual 25%
|
|
504
|
+
// is not enough and the transaction reverts out of gas. The server knows when a buy crosses, so
|
|
505
|
+
// it returns the limit to send rather than a sentence about how to compute one.
|
|
506
|
+
const gas = q.crossing
|
|
507
|
+
? {
|
|
508
|
+
limit: GRADUATION_GAS_LIMIT.toString(),
|
|
509
|
+
note: `This buy graduates the coin, which eth_estimateGas does not price. Send gas = ${GRADUATION_GAS_LIMIT} (an estimate plus ${GRADUATION_GAS_ALLOWANCE} for the graduation, plus 25%). Adding only 25% to the estimate reverts out of gas.`,
|
|
510
|
+
formula: `(estimate + ${GRADUATION_GAS_ALLOWANCE}) * 1.25`,
|
|
511
|
+
}
|
|
512
|
+
: {
|
|
513
|
+
limit: null,
|
|
514
|
+
note: "Take eth_estimateGas and multiply by 1.25: the snipe tax is priced per block, so a buy quoted in one block runs a slightly different path in the next.",
|
|
515
|
+
formula: "estimate * 1.25",
|
|
516
|
+
};
|
|
478
517
|
|
|
479
518
|
if (input.memo) {
|
|
480
519
|
if (!this.config.memoRouter) throw new Error("Memo-routed buys need PARABOLIC_MEMO_ROUTER");
|
package/src/restapi.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { getAddress, parseUnits, type Address } from "viem";
|
|
2
|
+
import { NATIVE_QUOTE } from "./config.js";
|
|
3
|
+
import { isNative, quoteDecimalsOf, type CoinSummary, type StatusKey } from "./coins.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Parabolic's own public read API (https://www.parabolic.family/api/v1), used for listings when no
|
|
7
|
+
* subgraph is configured.
|
|
8
|
+
*
|
|
9
|
+
* The alternative was scanning TokenLaunched logs, which is what this server used to do by default.
|
|
10
|
+
* Public Arc RPCs cap eth_getLogs near 10,000 blocks, so covering any useful span took around forty
|
|
11
|
+
* sequential requests, roughly half of which came back rate-limited — and the rate limit then spilled
|
|
12
|
+
* onto every other tool, so an agent that listed coins before launching found build_launch_tx broken.
|
|
13
|
+
* One cached HTTP request replaces all of it, and carries holders and volume the log scan never had.
|
|
14
|
+
*
|
|
15
|
+
* Set PARABOLIC_API_URL to "" to opt out and fall back to the log scan.
|
|
16
|
+
*/
|
|
17
|
+
export type Fetch = typeof globalThis.fetch;
|
|
18
|
+
|
|
19
|
+
type ApiCoin = {
|
|
20
|
+
address: string; curve?: string | null; name: string; ticker: string; creator: string;
|
|
21
|
+
pair: "USDC" | "EURC"; status: "climbing" | "graduated"; poolPending?: boolean;
|
|
22
|
+
price: number; marketCap: number; raised: number; threshold: number; progressPct: number;
|
|
23
|
+
holders?: number | null; volume24h?: number | null; change24h?: number | null; tradeCount?: number | null;
|
|
24
|
+
createdAt?: number | null; lastTradeAt?: number | null; graduatedAt?: number | null; poolId?: string | null;
|
|
25
|
+
logo?: string | null; description?: string | null; sample?: boolean;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
type ApiList = { coins: ApiCoin[]; total: number; hasMore?: boolean; meta?: { mode?: string; chainId?: number } };
|
|
29
|
+
|
|
30
|
+
const whole = (n: number, decimals: number): bigint => {
|
|
31
|
+
// The API serves whole units as numbers; raw amounts are reconstructed at the quote's precision.
|
|
32
|
+
const fixed = n.toFixed(Math.min(decimals, 18));
|
|
33
|
+
return parseUnits(fixed as `${number}`, decimals);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export class RestApi {
|
|
37
|
+
constructor(private readonly base: string, private readonly chainId: number, private readonly doFetch: Fetch = globalThis.fetch) {}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Returns undefined rather than throwing whenever this source cannot answer for the configured
|
|
41
|
+
* chain, so the caller can fall through to the log scan instead of failing the tool.
|
|
42
|
+
*/
|
|
43
|
+
async coins(status: StatusKey | undefined, limit: number): Promise<CoinSummary[] | undefined> {
|
|
44
|
+
const url = new URL(`${this.base.replace(/\/$/, "")}/coins`);
|
|
45
|
+
url.searchParams.set("limit", String(Math.min(100, Math.max(1, limit))));
|
|
46
|
+
if (status) url.searchParams.set("status", status);
|
|
47
|
+
let body: ApiList;
|
|
48
|
+
try {
|
|
49
|
+
const res = await this.doFetch(url, { headers: { accept: "application/json", "user-agent": "parabolic-mcp" }, signal: AbortSignal.timeout(8_000) });
|
|
50
|
+
if (!res.ok) return undefined;
|
|
51
|
+
body = (await res.json()) as ApiList;
|
|
52
|
+
} catch {
|
|
53
|
+
return undefined;
|
|
54
|
+
}
|
|
55
|
+
// Never present another chain's coins as this one's, and never serve the site's demo set.
|
|
56
|
+
if (body.meta?.chainId !== undefined && body.meta.chainId !== this.chainId) return undefined;
|
|
57
|
+
if (body.meta?.mode === "sample") return undefined;
|
|
58
|
+
if (!Array.isArray(body.coins)) return undefined;
|
|
59
|
+
return body.coins.filter((c) => c.sample !== true && c.curve).map((c) => this.toSummary(c));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
private toSummary(c: ApiCoin): CoinSummary {
|
|
63
|
+
const pairToken = (c.pair === "USDC" ? NATIVE_QUOTE : "0x0000000000000000000000000000000000000001") as Address;
|
|
64
|
+
const quoteDecimals = isNative(pairToken) ? 18 : quoteDecimalsOf(pairToken);
|
|
65
|
+
const status: StatusKey = c.status === "graduated" ? "graduated" : "climbing";
|
|
66
|
+
return {
|
|
67
|
+
address: getAddress(c.address), curve: getAddress(c.curve as string), name: c.name, ticker: c.ticker,
|
|
68
|
+
creator: getAddress(c.creator), pair: c.pair, pairToken, quoteDecimals, status,
|
|
69
|
+
raised: String(c.raised), raisedRaw: whole(c.raised, quoteDecimals),
|
|
70
|
+
threshold: String(c.threshold), thresholdRaw: whole(c.threshold, quoteDecimals),
|
|
71
|
+
progressPct: c.progressPct, price: c.price, marketCap: c.marketCap,
|
|
72
|
+
holders: c.holders ?? undefined, volume24h: c.volume24h ?? undefined, change24h: c.change24h ?? undefined,
|
|
73
|
+
tradeCount: c.tradeCount ?? undefined, createdAt: c.createdAt ?? undefined, lastTradeAt: c.lastTradeAt ?? undefined,
|
|
74
|
+
graduatedAt: c.graduatedAt ?? undefined, poolId: c.poolId ?? undefined,
|
|
75
|
+
logo: c.logo ?? undefined, description: c.description ?? undefined,
|
|
76
|
+
source: "subgraph",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
}
|