@candledottv/mcp 0.10.6 → 0.10.7

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.
Files changed (2) hide show
  1. package/dist/index.js +8 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -106,7 +106,7 @@ function percentOfBalance(balanceRaw, percent) {
106
106
  import { randomUUID } from "node:crypto";
107
107
 
108
108
  // src/version.ts
109
- var SERVER_VERSION = "0.10.6";
109
+ var SERVER_VERSION = "0.10.7";
110
110
 
111
111
  // src/update-notice.ts
112
112
  var PLAIN_VERSION = /^\d+\.\d+\.\d+$/;
@@ -1351,7 +1351,7 @@ async function executePerpsDeposit(args, cfg, env, fetch2) {
1351
1351
  }
1352
1352
 
1353
1353
  // src/plans.ts
1354
- var PLAN_CAPABILITY_NOTE = "A capability marked yes is what the plan allows. It is subject to the deployment's own switches (perps and own-wallet bridges each have one) and to the wallet, scopes and setup the feature needs.";
1354
+ var PLAN_CAPABILITY_NOTE = "A capability marked yes is what the plan allows. It is subject to the deployment's own switches (perps and own-wallet bridges each have one) and to the wallet, scopes and setup the feature needs. Every plan can launch a token from its embedded wallet, with an optional dev buy (same transaction on Solana; best-effort follow-up on Hood), through the headless launch; the two launch rows are additional routes, not the only ones.";
1355
1355
  var PLAN_CAPABILITY_LABELS = {
1356
1356
  tradeCandleTokens: "Trade Candle-launched tokens",
1357
1357
  tradeBaseAssets: "Trade base assets",
@@ -1359,8 +1359,8 @@ var PLAN_CAPABILITY_LABELS = {
1359
1359
  sellExternalTokens: "Sell tokens not launched on Candle",
1360
1360
  buyExternalTokens: "Buy tokens not launched on Candle",
1361
1361
  hyperliquidPerps: "Hyperliquid perps (when enabled)",
1362
- selfLaunch: "Self-launch from a linked wallet",
1363
- atomicLaunch: "Atomic launch with first buys",
1362
+ selfLaunch: "Launch from a linked or TEE wallet (self-signed)",
1363
+ atomicLaunch: "Atomic launch: launch + 1–4 first buys in one bundle",
1364
1364
  createLinkedWallets: "Create linked wallets",
1365
1365
  importLinkedWallets: "Import linked wallets",
1366
1366
  limitOrders: "Limit orders",
@@ -1734,7 +1734,7 @@ var { buyAmount: _rawBuyAmount, ...seedableLaunchShape } = launchTokenShape;
1734
1734
  var launchAndSeedShape = {
1735
1735
  ...seedableLaunchShape,
1736
1736
  clientLaunchId: z2.string().optional().describe("Idempotency key. Auto-generated when omitted and echoed in the result."),
1737
- devBuy: z2.string().optional().describe('Seed buy in DECIMAL units of the quote asset this launch selects (e.g. "0.25" SOL, or ' + "ETH on hood), bundled into the launch transaction itself. Follows quoteAsset, which " + "defaults to sol on solana and eth on hood. Capped by the platform dev-buy ceiling; for " + "a larger seed, launch then follow with candle_trade.")
1737
+ devBuy: z2.string().optional().describe('Seed buy in DECIMAL units of the quote asset this launch selects (e.g. "0.25" SOL, or ' + "ETH on hood), bundled into the launch transaction itself on solana and sent as a follow-up " + "transaction on hood. Paid from the account's embedded wallet. Follows quoteAsset, which " + "defaults to sol on solana and eth on hood. Capped by the platform dev-buy ceiling; for " + "a larger seed, launch then follow with candle_trade.")
1738
1738
  };
1739
1739
  var transferShape = {
1740
1740
  chain: z2.enum(["solana", "hood"]).describe("Which chain the transfer executes on"),
@@ -1759,7 +1759,7 @@ function registerTools(server, env = process.env) {
1759
1759
  };
1760
1760
  register("candle_launch_token", {
1761
1761
  title: "Launch a token on Candle",
1762
- description: "Launch a new token via the Candle headless launch API. Set dryRun: true to validate without spending anything.",
1762
+ 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.",
1763
1763
  inputSchema: launchTokenShape
1764
1764
  }, async (args) => callAndRelay("candle_launch_token", args, cfg));
1765
1765
  register("candle_get_market", {
@@ -1851,7 +1851,7 @@ MARKET_NOT_FOUND means Candle has no market for that token and this could not ru
1851
1851
  }, async (args) => callAndRelay("candle_get_profile_trades", args, cfg));
1852
1852
  register("candle_get_portfolio", {
1853
1853
  title: "Read what the account holds, on Solana and Hood",
1854
- description: "Balances and prices for the wallets Candle already knows on this account, on both chains: the " + "embedded wallet and every TEE wallet. Solana wallets are in `embedded` and `tee` (SOL as raw " + "`lamports`, tokens as raw `amountRaw` with `decimals`). Hood wallets are in `hood.embedded` and " + "`hood.tee` (ETH as raw `wei`, ERC-20s including USDG), never in the top-level arrays. Every " + "wallet and holding carries `chain`. Prices are in `prices`: a Solana mint under its own " + "address, Hood ETH under `hood:native`, and a Hood token under `hood:<contract lowercased>`, so " + "lowercase the address before looking it up. An unpriced entry is `priceUsd: null`, never zero; " + "a Hood one says why in `unpricedReason` (no-market-row, unusable-price, stale-mark, " + "source-unavailable), and `hood.unpriced` / `hood.unpricedByReason` count them. A Hood token " + "mark older than six hours is not used, so many Hood tokens read unpriced. A wallet whose read " + "failed has null balances, never zero, and is listed in `unavailable` (Solana) or " + "`hood.unavailable`; check `complete` before quoting a total. Vault and external wallets are " + "not included: Candle does not know their addresses (the Candle CLI's `candle portfolio` reads " + "them over your own RPC). Needs a key with the account:read scope; without it the answer is " + "SCOPE_MISSING. A server that predates Hood in the portfolio omits `hood` and `chain`. Reads " + "only; moves nothing.",
1854
+ description: "Balances and prices for the wallets Candle already knows on this account, on both chains: the " + "embedded wallet and every TEE wallet. Solana wallets are in `embedded` and `tee` (SOL as raw " + "`lamports`, tokens as raw `amountRaw` with `decimals`). Hood wallets are in `hood.embedded` and " + "`hood.tee` (ETH as raw `wei`, ERC-20s including USDG), never in the top-level arrays. Every " + "wallet and holding carries `chain`. Prices are in `prices`: a Solana mint under its own " + "address, Hood ETH under `hood:native`, and a Hood token under `hood:<contract lowercased>`, so " + "lowercase the address before looking it up. An unpriced entry is `priceUsd: null`, never zero; " + "a Hood one says why in `unpricedReason` (no-market-row, unusable-price, stale-mark, " + "source-unavailable), and `hood.unpriced` / `hood.unpricedByReason` count them. A Hood token " + "mark older than six hours is not used, so many Hood tokens read unpriced. A wallet whose read " + "failed has null balances, never zero, and is listed in `unavailable` (Solana) or " + "`hood.unavailable`; check `complete` before quoting a total. `walletsComplete` is false only " + "when the wallet list itself was cut off, and is absent on a server that predates it: then " + "`complete: false` may be a cut-off list or a failed read. Vault and external wallets are " + "not included: Candle does not know their addresses (the Candle CLI's `candle portfolio` reads " + "them over your own RPC). Needs a key with the account:read scope; without it the answer is " + "SCOPE_MISSING. A server that predates Hood in the portfolio omits `hood` and `chain`. Reads " + "only; moves nothing.",
1855
1855
  inputSchema: {}
1856
1856
  }, async () => callAndRelay("candle_get_portfolio", {}, cfg));
1857
1857
  register("candle_resolve_token", {
@@ -1925,7 +1925,7 @@ MARKET_NOT_FOUND means Candle has no market for that token and this could not ru
1925
1925
  });
1926
1926
  register("candle_launch_and_seed", {
1927
1927
  title: "Launch a token and seed it",
1928
- description: "Launch a new token with an optional dev-buy seed bundled into the launch itself, 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.",
1928
+ 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.",
1929
1929
  inputSchema: launchAndSeedShape
1930
1930
  }, async (args) => {
1931
1931
  const result = await executeLaunchAndSeed(args, cfg, fetch);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@candledottv/mcp",
3
- "version": "0.10.6",
3
+ "version": "0.10.7",
4
4
  "description": "MCP server for the Candle agent rail: launch tokens, read markets, report activity",
5
5
  "type": "module",
6
6
  "license": "MIT",