Using Minto
Strategy reference
Every rule your bot follows lives in one structured strategy object. The Settings form, the chat and the trading engine all use the exact same schema.

You can set all of this by chatting
Say “never more than 0.5 SOL per trade, take profit at 2x, stop loss 30%” and your bot proposes a diff of these fields. Nothing changes until you hit Apply. Every change is versioned.
Presets
Start from one of these, then tweak anything.

Conservative
Older tokens, deep liquidity, small bags. Sleeps well.

Balanced
Recent launches with real communities. Takes profit on the way up.

Degen
Fresh pump.fun launches, fast exits. Snakes everywhere. You were warned.
| Setting | Conservative | Balanced | Degen |
|---|---|---|---|
entry.sources | trending, graduated | trending | pump_new, pump_graduating, trending |
entry.minMcapUsd | 250000 | 10000 | 5000 |
entry.minLiquidityUsd | 75000 | 10000 | 3000 |
entry.minHolders | 1000 | 100 | 30 |
entry.maxTop10Pct | 25 | 35 | 45 |
entry.minRiskScore | 75 | 60 | 45 |
sizing.amountSol | 0.1 | 0.1 | 0.2 |
sizing.maxOpenPositions | 3 | 5 | 8 |
exits.takeProfit | {"atMultiple":1.5,"sellPct":50}, {"atMultiple":2,"sellPct":50} | {"atMultiple":2,"sellPct":50}, {"atMultiple":4,"sellPct":25} | {"atMultiple":2,"sellPct":50}, {"atMultiple":5,"sellPct":30} |
exits.stopLossPct | 15 | 30 | 35 |
exits.trailingStopPct | 10 | 0 | 25 |
execution.buySlippageBps | 100 | 300 | 1000 |
risk.dailyLossLimitSol | 0.3 | 1 | 2 |
Sources
| Value | Meaning |
|---|---|
pump_new | pump.fun new launches |
pump_graduating | pump.fun about to graduate |
graduated | Recently graduated |
launchpads | Other launchpads (bonk.fun, LaunchLab…) |
trending | Trending (Jupiter / DexScreener) |
copy_wallets | Copy-trade wallets |
entry
| Field | Default | What it does |
|---|---|---|
sources | trending | Where the bot looks for tokens. See the source list below. |
minMcapUsd | 10000 | Minimum market cap in USD. |
maxMcapUsd | 2000000 | Maximum market cap in USD. |
minLiquidityUsd | 10000 | Minimum pool liquidity in USD. |
minAgeMin | 2 | Token must be at least this many minutes old. |
maxAgeMin | 10080 | Token must be at most this many minutes old. |
minBondingPct | 0 | For tokens still on a bonding curve: minimum progress to graduation (%). |
maxBondingPct | 100 | For tokens still on a bonding curve: maximum progress (%). |
minHolders | 100 | Minimum holder count. |
maxTop10Pct | 35 | Maximum % held by the top 10 wallets. |
maxDevPct | 10 | Maximum % held by the dev wallet. |
requireMintRevoked | true | Skip tokens whose mint authority is still active. |
requireFreezeRevoked | true | Skip tokens whose freeze authority is still active. |
blockRiskyToken2022 | true | Skip Token-2022 mints with risky extensions (transfer fee, transfer hook, permanent delegate, pausable…). |
requireSocial | true | Require at least one social link (X, website or Telegram). |
requireX | false | Require an X account. |
requireWebsite | false | Require a website. |
rejectReusedSocials | true | Skip tokens whose X account or website was used by another token. |
minRiskScore | 60 | Minimum Minto safety score (0-100, higher is safer). |
minSentiment | -100 | Minimum X sentiment (-100 to 100). At -100 sentiment isn't fetched, which saves cost. |
minOrganicScore | 0 | Minimum organic activity score (0-100). Filters bot and wash volume. |
maxDevRugs | 1 | Dev history tolerance. Below 2, any dev with a danger-level history is skipped. |
tokenBlacklist | [] | Mint addresses the bot will never buy. |
tokenWhitelist | [] | If not empty, the bot only buys these mints. |
devBlacklist | [] | Dev wallets whose tokens the bot will never buy. |
copyWallets | [] | Wallets a Copy Trader mirrors (up to 10). |
sizing
| Field | Default | What it does |
|---|---|---|
mode | fixed | fixed: spend amountSol per trade. percent: spend percent of (balance − reserve). |
amountSol | 0.1 | SOL per trade in fixed mode. |
percent | 5 | % of wallet per trade in percent mode. |
maxSolPerToken | 0.5 | Maximum total SOL in any one token. |
maxOpenPositions | 5 | Maximum open positions for this bot. |
maxExposurePct | 50 | Maximum % of the bot's funds sitting in open positions. |
reserveSol | 0.05 | SOL that is never traded, kept for fees. |
exits
| Field | Default | What it does |
|---|---|---|
takeProfit | {"atMultiple":2,"sellPct":50}, {"atMultiple":4,"sellPct":25} | Take profit ladder: sell sellPct % of the position when price hits atMultiple × your average entry. |
stopLossPct | 30 | Sell everything if the position is down this %. 0 turns it off. |
trailingStopPct | 0 | Sell if price falls this % from its peak. 0 turns it off. |
trailingActivateMultiple | 1.5 | The trailing stop only arms after the peak reaches this multiple. |
timeExitMin | 0 | Sell if the position is still flat (±10%) after this many minutes. 0 turns it off. |
rugExit | true | Sell automatically on rug signals (otherwise just alert). |
liquidityDropPct | 40 | Liquidity drop (%) that counts as a rug signal. |
moonbag | false | After the first take profit recovers your cost, leave the rest to ride. |
execution
| Field | Default | What it does |
|---|---|---|
buySlippageBps | 300 | Max slippage on buys, in basis points (100 = 1%). |
sellSlippageBps | 500 | Max slippage on sells, in basis points. |
priority | medium | Priority fee level: low, medium, high or custom. |
customPriorityLamports | 300000 | Max priority fee in lamports when priority is custom. |
jitoTipSol | 0 | Jito tip in SOL (reserved for Jito routing). |
mevProtection | true | Prefer MEV-protected routing. |
retries | 2 | Retries for failures that happen before a transaction is broadcast. A broadcast is never retried, so you can't double buy. |
risk
| Field | Default | What it does |
|---|---|---|
dailyLossLimitSol | 1 | Once realized losses in the last 24h reach this, new buys are blocked. |
maxTradesPerHour | 6 | Trade cap per rolling hour. |
maxTradesPerDay | 30 | Trade cap per rolling 24 hours. |
cooldownAfterLosses | 3 | After this many losing sells in a row, the bot rests. |
cooldownMin | 60 | How long the rest lasts, in minutes. |
activeHours | {"enabled":false,"start":8,"end":23,"tz":"UTC"} | Optional trading window: enabled, start hour, end hour, time zone. |
notifications
| Field | Default | What it does |
|---|---|---|
trades | true | Notify on every trade. |
tpsl | true | Notify when take profit or stop loss hits. |
paused | true | Notify when the bot pauses. |
dailySummary | true | Send a daily summary. |
Example object
{
"sizing": {
"mode": "fixed",
"amountSol": 0.5,
"maxSolPerToken": 0.5
},
"exits": {
"takeProfit": [
{
"atMultiple": 2,
"sellPct": 100
}
],
"stopLossPct": 30
},
"entry": {
"sources": [
"pump_new",
"pump_graduating"
],
"requireSocial": true,
"requireX": true
}
}That's what a strategy diff looks like when you tell your bot: “I like early pump.fun launches with real communities, never more than 0.5 SOL per trade, take profit at 2x, stop loss 30%.”


