@candledottv/mcp 0.10.15 → 0.10.16
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 +6 -0
- package/dist/index.js +9 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,6 +55,12 @@ Both take decimal amounts, never raw base units, and resolve the scale themselve
|
|
|
55
55
|
there the caller genuinely picks the new token's quote pair: `quoteAsset` if given, otherwise
|
|
56
56
|
SOL on Solana and ETH on Hood.
|
|
57
57
|
|
|
58
|
+
Both launch tools also take `mode: "exp-custom"` with `curve: { virtualQuote, threshold }`: a
|
|
59
|
+
Solana curve with your own V and G, in whole SOL or CNDL as decimal strings, inside limits the
|
|
60
|
+
API enforces and each tool's description states. Dry-run first: the dry run returns the curve's
|
|
61
|
+
terms. It works only where the deployment has switched it on. See
|
|
62
|
+
[Custom curves](https://docs.candle.tv/developers/headless-launch#custom-curves-choose-v-and-g-switched-off).
|
|
63
|
+
|
|
58
64
|
For a full walkthrough of `candle_launch_and_seed` and `candle_trade`, including the keyless read
|
|
59
65
|
tools, getting a key, funding the embedded wallet, and idempotent retries, see
|
|
60
66
|
[Candle MCP server](https://docs.candle.tv/developers/mcp-server).
|
package/dist/index.js
CHANGED
|
@@ -112,7 +112,7 @@ import { lstat, open, realpath } from "node:fs/promises";
|
|
|
112
112
|
import { dirname, isAbsolute, relative, sep } from "node:path";
|
|
113
113
|
|
|
114
114
|
// src/version.ts
|
|
115
|
-
var SERVER_VERSION = "0.10.
|
|
115
|
+
var SERVER_VERSION = "0.10.16";
|
|
116
116
|
|
|
117
117
|
// src/update-notice.ts
|
|
118
118
|
var PLAIN_VERSION = /^\d+\.\d+\.\d+$/;
|
|
@@ -1653,6 +1653,7 @@ function planTableMarkdown(table) {
|
|
|
1653
1653
|
|
|
1654
1654
|
// src/tools.ts
|
|
1655
1655
|
var VAMP_CANDIDATES_DESCRIPTION = "Lists Solana tokens that are close to graduating or graduated in the last 6 hours whose ticker other tokens " + "are copying, most-copied in the last 24 hours first. Each entry carries a launch draft (name, ticker, image URL) " + "for `candle_launch_token` or `candle_launch_and_seed`; draft notes identify fields you must supply or adjust. " + "Upload your own image through the agent image upload when the image is unavailable. Use `dryRun: true` first. " + "Counts exclude the candidate itself and cover both Solana and Hood launches at the venues returned in " + "`coverage`, not Candle's own. `coverage.since` is the returned Solana coverage date; Hood history may differ.";
|
|
1656
|
+
var CUSTOM_CURVE_RULE = 'mode "exp-custom" with curve { virtualQuote, threshold } launches a Solana curve with your own V (the virtual ' + "quote it starts with) and G (the quote it raises before graduating), in whole SOL or CNDL as decimal strings, " + "accepted when V is 1 to 100 SOL and G 1 to 250 SOL (66,000 to 6,600,000 and 66,000 to 16,500,000 CNDL), when " + "every price up to 20 x G stays under the ceiling (V + 20G)^2 < V x X at this stakerAllocationBps, when neither " + "is finer than the quote's decimals, and when the dev buy is at most 10% of G; a curve past a limit is " + "CURVE_OUT_OF_RANGE, and at the ceiling it carries maxThresholdRaw, the largest G that fits. " + "Dry-run it first (dryRun: true): the dry run spends nothing and returns curveTerms, the market cap at start and " + "at graduation and the supply sold by graduation. Only where the API has EXP_CURVES and EXP_CUSTOM_CURVES on; " + "elsewhere exp-custom is refused as an unknown mode.";
|
|
1656
1657
|
var localProfileTools = new WeakMap;
|
|
1657
1658
|
var STAKING_DISCLOSURE = "No instant unstake. Read pool.withdrawalTimelockSeconds for the wait. Solana rewards accrue to the holding wallet. Outside the account's main wallet, sCNDL earns no Hood staking rewards; Pro eligibility follows the deployment's tier mode (main-wallet mode excludes it). CNDL in a pending withdrawal counts toward nothing for Pro.";
|
|
1658
1659
|
var stakingWriteShape = {
|
|
@@ -2072,7 +2073,11 @@ var launchTokenShape = {
|
|
|
2072
2073
|
bannerUrl: z2.string().optional().describe("Optional https URL to WIDE artwork for the token page's banner strip (wider than 1.5:1, " + "e.g. 1200x630). This is where a share card or OG image belongs. A square image here is " + "rejected with BANNER_WRONG_SHAPE. Omit it and the strip falls back to imageUrl"),
|
|
2073
2074
|
chain: z2.string().optional().describe('"solana" or "hood"; defaults to solana'),
|
|
2074
2075
|
quoteAsset: z2.string().optional().describe("Quote asset symbol; defaults per chain"),
|
|
2075
|
-
mode: z2.string().optional().describe('"open" or "exclusive"; defaults to open. "test-open" / "test-exclusive" launch the ' + "low-threshold test curves (~1/80 economics) where the API has ENABLE_TEST_CURVES on"),
|
|
2076
|
+
mode: z2.string().optional().describe('"open" or "exclusive"; defaults to open. "test-open" / "test-exclusive" launch the ' + "low-threshold test curves (~1/80 economics) where the API has ENABLE_TEST_CURVES on. " + '"exp-custom" launches a Solana curve with your own V and G, given in curve, where the API has it ' + "switched on"),
|
|
2077
|
+
curve: z2.object({
|
|
2078
|
+
virtualQuote: z2.string().describe('V: the virtual quote the curve starts with, in whole quote units, e.g. "12" SOL'),
|
|
2079
|
+
threshold: z2.string().describe('G: the quote the curve raises before it graduates, in whole quote units, e.g. "40" SOL')
|
|
2080
|
+
}).strict().optional().describe('mode "exp-custom" only, and required there. Decimal strings in whole units of the quote asset (sol or ' + "cndl), never raw units. Dry-run first: the API checks the limits and returns the curve's terms"),
|
|
2076
2081
|
stakerAllocationBps: z2.number().optional().describe("Staker allocation in basis points"),
|
|
2077
2082
|
dexVersion: z2.string().nullable().optional().describe('"v3" or "v4"; required for hood launches'),
|
|
2078
2083
|
buyAmount: z2.union([z2.string(), z2.number()]).optional().describe("Initial buy, in quote base units (string or number)"),
|
|
@@ -2243,7 +2248,7 @@ function registerToolSubset(server, options) {
|
|
|
2243
2248
|
const imageDir = configuredImageDir(env);
|
|
2244
2249
|
register("candle_launch_token", {
|
|
2245
2250
|
title: "Launch a token on Candle",
|
|
2246
|
-
description: "Launch a new token via the Candle headless launch API, from the account's embedded wallet. Works on every plan, Free included. Set dryRun: true to validate without spending anything." + (imageDir ? IMAGE_PATH_DISCLOSURE : ""),
|
|
2251
|
+
description: "Launch a new token via the Candle headless launch API, from the account's embedded wallet. Works on every plan, Free included. Set dryRun: true to validate without spending anything. " + CUSTOM_CURVE_RULE + (imageDir ? IMAGE_PATH_DISCLOSURE : ""),
|
|
2247
2252
|
inputSchema: imageDir ? localLaunchTokenShape : launchTokenShape
|
|
2248
2253
|
}, async (args) => {
|
|
2249
2254
|
const image = await resolveLaunchImage(args, imageDir, getConfig(), doFetch);
|
|
@@ -2494,7 +2499,7 @@ MARKET_NOT_FOUND means Candle has no market for that token and this could not ru
|
|
|
2494
2499
|
});
|
|
2495
2500
|
register("candle_launch_and_seed", {
|
|
2496
2501
|
title: "Launch a token and seed it",
|
|
2497
|
-
description: "Launch a new token from the account's embedded wallet, with an optional dev-buy seed (in the " + "launch transaction on solana, a best-effort follow-up on hood). Works on every plan, Free included (this is not the atomic launch). Then " + "return the fresh market state and token links in one result. MOVES REAL FUNDS unless " + "dryRun. Seeds above the platform dev-buy ceiling are rejected (DEV_BUY_TOO_HIGH); " + "launch, then top up with candle_trade." + (imageDir ? IMAGE_PATH_DISCLOSURE : ""),
|
|
2502
|
+
description: "Launch a new token from the account's embedded wallet, with an optional dev-buy seed (in the " + "launch transaction on solana, a best-effort follow-up on hood). Works on every plan, Free included (this is not the atomic launch). Then " + "return the fresh market state and token links in one result. MOVES REAL FUNDS unless " + "dryRun. Seeds above the platform dev-buy ceiling are rejected (DEV_BUY_TOO_HIGH); " + "launch, then top up with candle_trade. " + CUSTOM_CURVE_RULE + (imageDir ? IMAGE_PATH_DISCLOSURE : ""),
|
|
2498
2503
|
inputSchema: imageDir ? localLaunchAndSeedShape : launchAndSeedShape
|
|
2499
2504
|
}, async (args) => {
|
|
2500
2505
|
const result = await executeLaunchAndSeed(args, getConfig(), doFetch, imageDir);
|