io.gainium/gainium-mcp
NPM · GAINIUM-MCP · 2 COMPONENTS · SCANNED SEP 21
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 95 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability77
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6187 tokens (~309/item across 20 items; 19 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
- Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (47% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.gainium/gainium-mcp server?
io.gainium/gainium-mcp runs locally as an npm package, launched with npx -y gainium-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · gainium-mcp
claude mcp add io-gainium-gainium-mcp -- npx -y gainium-mcp
{
"mcpServers": {
"io-gainium-gainium-mcp": {
"command": "npx",
"args": [
"-y",
"gainium-mcp"
]
}
}
} {
"servers": {
"io-gainium-gainium-mcp": {
"command": "npx",
"args": [
"-y",
"gainium-mcp"
]
}
}
} codex mcp add io-gainium-gainium-mcp -- npx -y gainium-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"io-gainium-gainium-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"gainium-mcp"
],
"enabled": true
}
}
} openclaw mcp add io-gainium-gainium-mcp --command npx --arg -y --arg gainium-mcp
mcp_servers:
io-gainium-gainium-mcp:
command: "npx"
args: ["-y", "gainium-mcp"] {
"McpServers": {
"io-gainium-gainium-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"gainium-mcp"
]
}
}
} assistant mcp add io-gainium-gainium-mcp -t stdio -c npx -a -y gainium-mcp
{
"mcpServers": {
"io-gainium-gainium-mcp": {
"command": "npx",
"args": [
"-y",
"gainium-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 −2
- Stability: pass → 0.83 functional
- 16 Sept 26 0
- Stability: 0.97 → pass security
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.
- 10 Sept 26 −3
- Stability: pass → 0.80 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed npm/gainium-mcp@3.3.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 96 packages
| Packages resolved | 96 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
apply_preset ~322
Create a real bot from a curated preset in a single call — equivalent to `list_presets` → pick row → `create_bot` collapsed into one step. Identifies the preset by `botType` + `coin` + `exchange` + `tier` + `strategy`, then creates a bot from its `settings`. Optional overrides: `pair` (override the default pair), `name` (custom bot name), and `baseOrderSize` / `orderSize` (override sizing without touching the rest of the strategy). Returns the new bot id. Same destructive effect as `create_bot`. Use this when you trust the preset and want to start fast; use `list_presets` first if you want to compare before committing.
| Name | Type | Req | Description |
|---|---|---|---|
| botType | string | yes | Bot type |
| coin | string | yes | Base asset, e.g. "BTC" |
| exchange | string | yes | Preset exchange, e.g. "binance" |
| exchangeUUID | string | yes | UUID of YOUR connected exchange to create the bot on (from get_account info:"exchanges") |
| name | string | – | Override the bot name (optional) |
| pair | array | – | Override the preset pair(s), underscore format e.g. ["BTC_USDT"] (optional) |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| strategy | string | – | Direction (default "long") |
| tier | string | yes | Risk tier: short (tight), mid (balanced), long (wide) |
No output schema declared.
No examples provided.
backtest_info ~269
Read-only access to backtest metadata, results, and templates. Four targets by `target`: `requests` (list the user's past backtest requests with status), `request` (fetch a single request — needs `requestId` — returns full results when complete, progress when pending), `schema` (return the JSON shape of a backtest payload for a given `botType` — start here before composing a payload), `template` (return a ready-to-edit payload template). Use this to poll an async backtest started with `run_backtest`, or to learn the payload shape before submitting one.
| Name | Type | Req | Description |
|---|---|---|---|
| botType | string | yes | Bot type |
| exchange | string | – | Exchange code for template (optional, default: binance) |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| id | string | – | Request ID (required for target="request") |
| page | integer | – | Page number for pagination (1-based). Default: 1 |
| target | string | yes | Information target. requests: list all. request: fetch one. schema: operation schema. template: payload template. |
Structured output declared, but exposes no named fields.
No examples provided.
clone_bot ~282
Duplicate an existing bot — copies all configured settings into a new bot and returns the new bot id. Open deals on the source are NOT copied; the clone starts empty. Pass `overrides` (object of changed fields) to tweak the clone in the same call — e.g. change `pair` or `name` without a follow-up `update_bot`. Use this over `create_bot` when you want an exact replica of a working config (faster, less error-prone); use `create_bot` when starting from scratch or from `discover`-derived defaults.
| Name | Type | Req | Description |
|---|---|---|---|
| botId | string | yes | Bot identifier. Accepts EITHER the bot's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the bot's UUID (e.g. "550e8400-e29b-41d4-a716-446655440000"). Either form resolves to t… |
| botType | string | yes | Bot type |
| overrides | object | – | Optional settings to override in the cloned bot. Pass an object with fields to change. |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
No output schema declared.
No examples provided.
create_bot ~747
Create a new bot in a single step — no follow-up update needed. The top-level properties cover the most common fields. For any field from discover(target: "bot") that is NOT listed here (e.g. startOrderType, useMoveTP, moveTPTrigger, moveTPValue, stopLossTimeout, takeProfitTimeout, dcaOrdersMultiplier, dcaStepMultiplier, trailingTP, trailingTPPerc, indicators, timers, and any other discovery field), pass them inside the 'settings' object — it is transparently merged into the request body at creation time. This avoids a create→update two-step. Use discover(target: 'bot', botType) to discover all available fields and defaults. The 'futures' and 'coinm' fields are auto-detected from the exchange — do not provide them. Requires write API key permission.
| Name | Type | Req | Description |
|---|---|---|---|
| baseOrderSize | string | – | Size of the initial base order, e.g. "100" |
| botType | string | yes | Bot type |
| budget | number | – | Total budget for grid (Grid only) |
| exchangeUUID | string | yes | UUID of the exchange connection to use |
| gridLevel | string | – | Grid level count (Combo only) |
| gridType | string | – | Grid distribution type (Grid only) |
| levels | integer | – | Number of grid levels (Grid only) |
| lowPrice | number | – | Low price for grid range (Grid only) |
| maxNumberOfOpenDeals | string | – | Maximum concurrent open deals, e.g. "1" |
| moveSL | boolean | – | Enable trailing stop-loss (move SL as price moves in your favour). |
| moveSLTrigger | string | – | Profit % at which trailing SL is activated, e.g. "1.0" |
| moveSLValue | string | – | Trail distance % for the moving SL, e.g. "0.5" |
| name | string | – | Bot name |
| orderSize | string | – | Size of each DCA/grid order, e.g. "100" |
| orderSizeType | string | – | Order size reference currency. Default: quote |
| ordersCount | integer | – | Maximum number of orders (DCA/Combo) |
| pair | array | yes | Trading pairs as array of {base}_{quote} strings, e.g. ["BTC_USDT"]. For Grid bots pass a single-element array — the server unwraps it automatically. |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| settings | object | – | Transparent passthrough for any bot settings field from discover(target: "bot") that is not listed as a top-level property above. All keys are merged flat into the request body — use this to create a… |
| slPerc | string | – | Stop loss percentage, e.g. "-10" |
| startCondition | string | – | Condition to start a new deal. Default: ASAP |
| startOrderType | string | – | Order type for the base (start) order. Default: market |
| step | string | – | Price deviation % for next DCA/grid order, e.g. "1.5" |
| strategy | string | – | Trading direction. Default: LONG |
| topPrice | number | – | Top price for grid range (Grid only) |
| tpPerc | string | – | Take profit percentage, e.g. "1.5" |
| useDca | boolean | – | Enable DCA orders. Set false for a single base-order bot. |
| useSl | boolean | – | Enable stop-loss. When true, slPerc is used. |
No output schema declared.
No examples provided.
create_deal ~355
Open a new deal — places real entry orders immediately. Two modes by `dealType`: `dca` or `combo` opens a new deal under an existing bot (`botId` required, `symbol` optional override); `terminal` opens a standalone terminal deal not tied to a bot (`exchangeUUID`, `terminalDealType`, `pair`, `strategy`, sizing, TP/SL required — any extra config goes inside `settings`, which is merged into the request body). Returns the new deal record. Use this to *start* a position; once open, modify with `update_deal` and act on it with `manage_deal`. To configure a bot without opening a deal, use `create_bot` / `update_bot`.
| Name | Type | Req | Description |
|---|---|---|---|
| baseOrderSize | string | – | Base order size for terminal |
| botId | string | – | Bot ID (required for dca/combo) |
| dealType | string | yes | Deal type |
| exchangeUUID | string | – | Exchange UUID (required for terminal) |
| orderSize | string | – | Order size for terminal |
| pair | string | – | Trading pair for terminal (optional) |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| settings | object | – | Transparent passthrough for any additional terminal deal settings. Merged flat into request body. |
| slPerc | string | – | Stop loss percentage for terminal |
| strategy | string | – | Trading strategy for terminal |
| symbol | string | – | Optional symbol override (dca/combo) |
| terminalDealType | string | – | Terminal deal type (required for terminal) |
| tpPerc | string | – | Take profit percentage for terminal |
No output schema declared.
No examples provided.
discover ~275
Read-only catalog of available bot types, fields, defaults, and indicators — the source of truth for what `create_bot` / `update_bot` accept. Six targets by `target`: `bots` (list bot-type names), `bot` (full field schema + defaults for one `botType` — call before `create_bot` to learn what every field means), `botSections` (section grouping for a `botType`), `indicators` (list available indicators), `indicator` (details for one), `supportedExchanges` (catalog of exchanges Gainium can connect). Use this for *catalog/schema* questions; for the user's own connected exchanges and balances use `get_account`.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | – | Action filter for indicators (optional: "add", "close", "update") |
| botType | string | – | Bot type (required for bot/botSections) |
| exchange | string | – | Exchange code for indicators (optional) |
| section | string | – | Section name for bot discovery (optional) |
| target | string | yes | Discovery target. bots: list all. bot: details for one. botSections: list sections. indicators: list all. indicator: details for one. supportedExchanges: list all. |
| type | string | – | Indicator type (required for target="indicator") |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Discovery metadata for the requested target: bot schemas, bot sections, indicator schemas (object), or lists of bots/indicators/exchanges (array). |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
get_account ~308
Read-only account information selected via `info`: `balances` (per-exchange holdings — `exchangeId`, `asset`/`assets` filters apply), `exchanges` (connected exchange accounts and their UUIDs — needed as `exchangeUUID` when creating bots), `globalVariables` (user-defined constants accessible in strategies), or `supportedExchanges` (catalog of exchanges Gainium can connect). `exchangeId`/`asset`/`assets` are ignored unless `info=balances`. Authenticated with the configured API key/secret. For mutating global variables use `manage_global_variable`; this tool only reads them.
| Name | Type | Req | Description |
|---|---|---|---|
| asset | string | – | Filter by single asset (balances only) |
| assets | array | – | Filter by multiple assets (balances only). Use asset OR assets, not both. |
| exchangeId | string | – | Filter by exchange ID (balances only) |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| info | string | yes | Information type. balances: account balances. exchanges: connected exchanges. globalVariables: user variables. supportedExchanges: API supports. |
| page | integer | – | Page number for pagination (1-based). Default: 1 |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | Account information for the requested type: balances, connected exchanges, global variables, or supported exchanges (array or object depending on `info`). |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
get_bot ~270
Read a single bot by its MongoDB ObjectId or UUID. Returns the full bot record (fields controlled by the same `fields` preset/csv as `list_bots`). Use when you already have the bot id and need its current config or recent stats. To browse without an id use `list_bots`; to modify config use `update_bot`; to start/stop/archive use `manage_bot`.
| Name | Type | Req | Description |
|---|---|---|---|
| botId | string | yes | Bot identifier. Accepts EITHER the bot's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the bot's UUID (e.g. "550e8400-e29b-41d4-a716-446655440000"). Either form resolves to t… |
| botType | string | yes | Bot type |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | – | The bot record; fields present depend on the `fields` preset. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
get_deal ~249
Read a single deal by its MongoDB ObjectId — returns the full record (entries, exits, current PnL, settings). `fields` uses the same preset/csv shape as `list_deals`. Use when you already have the `dealId`; to browse without one use `list_deals`, to change settings use `update_deal`, to act on the position use `manage_deal`.
| Name | Type | Req | Description |
|---|---|---|---|
| dealId | string | yes | Deal identifier. Accepts EITHER the deal's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the deal's UUID. Either form resolves to the same deal — use whichever the deal recor… |
| dealType | string | yes | Deal type |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| Name | Type | Req | Description |
|---|---|---|---|
| data | object | – | The deal record; fields present depend on the `fields` preset. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
get_screener ~409
Read-only cryptocurrency screener — browse live price, 24h % change, volume, and market-cap data across hundreds of pairs. Pagination is 1-based (10 coins per page). Sorting is applied client-side AFTER fetching, so `maxPages` (≤30, default 10) controls how many pages the server fetches before ranking — raise it for "most volatile across the market" queries, lower it to save API calls when an unsorted page is enough. The `fields` parameter accepts either a preset (minimal | standard | extended | full) or a comma-separated list of specific field names. Use for live market discovery; for already-tuned bot strategies use `list_presets`, for your own running bots use `list_bots`.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter by category (optional) |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| maxMarketCap | number | – | Maximum market cap (optional) |
| maxPages | number | – | When sorting, how many pages (10 coins each, ≤30, default 10) to fetch and rank across. Higher = wider pool for "most volatile" but more requests. |
| minMarketCap | number | – | Minimum market cap (optional) |
| minVolume | number | – | Minimum volume (optional) |
| order | string | – | Sort order (optional, default desc when sorting) |
| page | integer | – | Page number for pagination (1-based). Default: 1 |
| sort | string | – | Sort field (applied client-side; the API does not sort). One of: "volatility" (largest absolute 24h % change), "priceChange"/"change", "volume"/"totalVolume", "marketCap", "price". Use "volatility" t… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | – | Screener rows (coins) with market data. When `sort` is used, ranked client-side and `meta` records the sort details. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
list_bots ~215
List the authenticated user's bots of one type (DCA, Combo, or Grid), with status/pagination/paper-context filters. Returns one page (controlled by `page`) of bot records; `fields` accepts a preset (minimal | standard | extended | full) or a comma-separated list of specific fields. Use this when you don't know the bot id yet or want to filter/browse — once you have an id, use `get_bot` for the single full record.
| Name | Type | Req | Description |
|---|---|---|---|
| botType | string | yes | Bot type |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| page | integer | – | Page number for pagination (1-based). Default: 1 |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| status | string | – | Filter by bot status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | – | Matching bot records; fields present depend on the `fields` preset. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
list_deals ~234
List the user's deals of one type (DCA, Combo, or Terminal) with status, `botId`, and paper-context filters. Returns one page; `fields` accepts a preset or comma-separated list. Use this to find active/closed deals across bots or filter by status — once you have a `dealId`, switch to `get_deal` for full detail, `update_deal` for config edits, or `manage_deal` for lifecycle actions (close/add/reduce funds).
| Name | Type | Req | Description |
|---|---|---|---|
| botId | string | – | Filter by bot ID (optional) |
| dealType | string | yes | Deal type |
| fields | string | – | Field selection: preset ("minimal", "standard", "extended", "full") or comma-separated fields (e.g. "_id,uuid,settings.name,profit.total"). Default: "standard" |
| page | integer | – | Page number for pagination (1-based). Default: 1 |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| status | string | – | Filter by deal status |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | – | Matching deal records; fields present depend on the `fields` preset. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
list_presets ~314
Read-only curated bot-strategy presets ranked by backtested performance. Each coin returns tiers (short/mid/long) × strategy (long/short) with ROI, drawdown, and the full strategy `settings`. Filters: `botType` (required), `coin`+`exchange` (narrow to one pair — skips the closed-deals floor), `strategy` (long/short), `limit` (1–50, default 10). Set `summary: true` to drop the per-tier settings blob for a lightweight ranked list; `includeNoDeals: true` keeps coins with too few closed deals to meet the default floor. Use this to *browse* working strategies; pass any chosen row's tier/strategy to `apply_preset` to spin up a bot from it in one call.
| Name | Type | Req | Description |
|---|---|---|---|
| botType | string | yes | Bot type to list presets for |
| coin | string | – | Filter to a single base asset, e.g. "BTC" (skips the closed-deals floor) |
| exchange | string | – | Canonical exchange, e.g. "binance" (use with coin) |
| includeNoDeals | boolean | – | Include coins with fewer than the minimum closed deals (default false) |
| limit | number | – | Max coins to return (default 10, max 50) |
| strategy | string | – | Filter by direction (optional) |
| summary | boolean | – | Omit the per-tier settings blob for a lightweight ranked list (default false) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | array | – | Curated preset rows (one per coin), each with tiers × strategy, ROI, drawdown, and (unless summary) the full settings blob. |
| meta | object | – | Pagination / result metadata, present on list-style responses. |
| reason | string|null | – | Error reason when status is NOTOK; null otherwise. |
| status | string | – | OK on success, NOTOK on a handled API error. |
No examples provided.
manage_bot ~417
Bot lifecycle actions: `start`, `stop` (requires `closeType` for DCA/Combo or `closeGridType` for Grid — controls how open deals are unwound), `archive`, `restore`, or `changePairs` (DCA only — requires `pair` array). Effects are immediate: `stop` cancels new entries and may close positions per the chosen `closeType`, `archive` hides a stopped bot from default lists, and `changePairs` mutates the bot in-place. Use this for run-state changes; use `update_bot` for config edits and `manage_deal` for actions on a specific open deal.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform on the bot |
| botId | string | yes | Bot identifier. Accepts EITHER the bot's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the bot's UUID (e.g. "550e8400-e29b-41d4-a716-446655440000"). Either form resolves to t… |
| botType | string | yes | Bot type |
| cancelPartiallyFilled | boolean | – | Whether to cancel partially filled orders when stopping (optional) |
| closeGridType | string | – | Close type for stop action (grid only) |
| closeType | string | – | Close type for stop action (dca/combo). "closeByMarket" closes all positions, "leave" pauses the bot. |
| pair | array | – | Full replacement set of trading pairs for changePairs action (DCA, multi-pair bots only). Underscore format, e.g. ["BTC_USDT","ETH_USDT"]. Replaces all existing pairs. Single-coin bots reject pair ch… |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
No output schema declared.
No examples provided.
manage_deal ~420
Lifecycle actions on a single open deal: `close` (terminal — requires `closeType`), `addFunds`, or `reduceFunds` (both require `qty`, `type`, and — when type="fixed" — `asset`). Returns the updated deal record on success. Effects are immediate and not reversible — a market close fills at the current price, an `addFunds` opens a new entry order. Use this for *running* deals; create new deals with `create_deal`, edit deal *config* (TP, SL, settings) with `update_deal`, and start/stop the parent bot with `manage_bot`.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform on the deal |
| asset | string | – | Denomination for a fixed add/reduce — "quote" (e.g. USDT) or "base" (the coin). Required when type="fixed"; this is NOT a ticker symbol. Ignored when type="perc". |
| botId | string | – | Bot ID for addFunds/reduceFunds (alternative to dealId for dca/combo) |
| closeType | string | – | Close type for close action |
| dealId | string | yes | Deal identifier. Accepts EITHER the deal's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the deal's UUID. Either form resolves to the same deal — use whichever the deal recor… |
| dealType | string | yes | Deal type |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| qty | string | – | Amount to add/reduce. With type="fixed" it is an amount in the chosen asset denomination; with type="perc" it is a percentage of the position. |
| symbol | string | – | Symbol override (optional) |
| type | string | – | Type: fixed amount or percentage |
No output schema declared.
No examples provided.
manage_global_variable ~206
Create, update, or delete a global variable. Variables are user-defined constants referenced by name inside bot strategy expressions. `action` controls which: `create` needs `name`/`type`/`value`; `update` needs `id` plus any of `name`/`type`/`value`; `delete` needs `id` only. Delete is irreversible — any strategy that references the deleted variable will fall back to its inline default at next evaluation. To *read* existing variables, use `get_account` with `info="globalVariables"`; this tool only mutates.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Action to perform |
| id | string | – | Variable ID (required for update/delete) |
| name | string | – | Variable name (required for create, optional for update) |
| type | string | – | Variable type (required for create, optional for update) |
| value | string | – | Variable value (required for create, optional for update) |
No output schema declared.
No examples provided.
run_backtest ~317
Submit a backtest of a candidate bot configuration. Four modes by `mode`: `validate` (server-side schema/sanity check, no run), `estimate` (return credit cost without running), `request` (enqueue an async job — returns a request id you poll via `backtest_info`), `requestSync` (block until done and return the result inline — only viable for small payloads). `request`/`requestSync` consume backtest credits per the `estimate` figure. Required payload: `exchange`, `exchangeUUID`, and bot `settings` — use `backtest_info` with `target="schema"` for the field shape per bot type. Use this to *try* a strategy; use `backtest_info` to retrieve results, list past runs, or fetch a payload template.
| Name | Type | Req | Description |
|---|---|---|---|
| botType | string | yes | Bot type for the backtest |
| fields | string | – | Field selection for requestSync mode (optional) |
| mode | string | yes | Backtest mode. validate: confirm payload. estimate: check credit cost. request: async backtest. requestSync: wait for result. |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| payload | object | yes | Backtest request wrapper. Required nesting: payload.data.exchange (string), payload.data.exchangeUUID (UUID string), payload.data.settings (inner bot settings object). Optional: from, to (Unix ms tim… |
No output schema declared.
No examples provided.
update_bot ~314
Patch the settings of an existing DCA or Combo bot (Grid has no update endpoint — clone-and-recreate it instead). Pass only the fields you want to change inside `settings`; an empty `settings` object is rejected. Boolean gate enforcement: feature value fields (e.g. `slPerc`, `moveTPTrigger`) are silently ignored unless their toggle (`enableSL`, `useMoveTP`, etc.) is also set to `true` — to turn a feature on, send both the toggle and its value in the same call. Changes apply to new orders; open positions are not retroactively adjusted. Use `manage_bot` for lifecycle (start/stop/archive) and `manage_deal` for per-deal actions.
| Name | Type | Req | Description |
|---|---|---|---|
| botId | string | yes | Bot identifier. Accepts EITHER the bot's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the bot's UUID (e.g. "550e8400-e29b-41d4-a716-446655440000"). Either form resolves to t… |
| botType | string | yes | Bot type (Grid does not support updates) |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| settings | object | yes | Settings object with fields to update. Only include changed fields. |
No output schema declared.
No examples provided.
update_deal ~219
Patch the settings of an existing open deal (e.g. take-profit %, stop-loss, trailing TP). Pass only the fields you want to change inside `settings`; empty `settings` is rejected. Changes apply to the deal's pending/future orders; already-filled entries are not re-priced. For close/add/reduce funds use `manage_deal`; for bot-wide config changes use `update_bot`.
| Name | Type | Req | Description |
|---|---|---|---|
| dealId | string | yes | Deal identifier. Accepts EITHER the deal's 24-character hex MongoDB ObjectId (e.g. "65f000000000000000000001") OR the deal's UUID. Either form resolves to the same deal — use whichever the deal recor… |
| dealType | string | yes | Deal type |
| paperContext | boolean | – | Paper trading context (true = paper, false = real). Default: false |
| settings | object | yes | Settings object with fields to update. Only include changed fields. |
No output schema declared.
No examples provided.
What is the io.gainium/gainium-mcp server?
io.gainium/gainium-mcp is listed in the public MCP registry as io.gainium/gainium-mcp. MCP server for Gainium, manage trading bots, deals, and balances via AI assistants. This page covers its npm package (gainium-mcp).
Is the io.gainium/gainium-mcp server safe to use?
io.gainium/gainium-mcp scores 84 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.gainium/gainium-mcp server expose?
io.gainium/gainium-mcp exposes 19 tools: list_bots, get_bot, create_bot, update_bot, clone_bot, and 14 more. Their descriptions and schemas cost roughly 6,142 tokens of context every time the server is loaded.
Is the io.gainium/gainium-mcp server still maintained?
io.gainium/gainium-mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.gainium/gainium-mcp server under?
io.gainium/gainium-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.