MangroveAI
Server Details
Guardrails for trading agents. Built-in risk management, 100+ tools for strategy R&D, 12+ venues.
- Status
- Healthy
- Uptime
- 100.0% over the last 24 hours
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- MangroveTechnologies/mangrove-agent
- GitHub Stars
- 5
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 84 tools
The descriptions go to unusual lengths to route callers (e.g. get_smart_money_flows vs get_token_flows, get_market_regime vs classify_market_segment, get_backtest vs get_backtest_trades), which keeps most of the set usable. Still, with 84 tools there are dense clusters of near-neighbours — evaluate_signal / evaluate_multiple_signals_series / evaluate_strategy, get_market_data / get_ohlcv / get_playground_data, list_trades vs get_trades_for_strategy, five KB tools plus query_knowledge — where an agent must read long prose to choose correctly.
Overwhelmingly a consistent snake_case verb_noun convention: get_*, list_*, create_*, launch_*/pause_*/size_*, evaluate_*, query_*, screen_*, verify_*/validate_*, kb_*. Minor deviations exist (the kb_ noun-prefix family, find_sweep_runs vs get_sweep_run, size_sweep/build_strategy_for_regime as bare verbs) but nothing that breaks readability.
84 tools is far beyond what a single agent can hold in working attention, and the surface sprawls across distinct domains — strategy lifecycle, sweep orchestration, backtesting, market data, on-chain analytics, social/X sentiment, and a knowledge base. Many could be consolidated (e.g. the smart-money family, the KB family, the sweep read tools) without losing capability.
Coverage is genuinely deep: full strategy lifecycle (save/update/delete/verify/backtest/evaluate), complete sweep orchestration (size/create/launch/pause/get/find_runs/limits), and rich market, on-chain and knowledge surfaces. The notable dead end is delete_strategy, whose description promises recovery 'via unarchive' but no unarchive tool is exposed; backtest cancellation is also absent.
Available Tools
84 toolsbuild_strategy_for_regimeAInspect
Run the Strategy Engine route in one call. Use it FIRST whenever someone asks to build or make a strategy and names no signals -- 'build me a strategy', 'build me a BTC strategy on 1h', 'make me something for ETH'. Give the asset, and the candle size only when they named one. The server reads the 180-day regime, searches the engine's completed runs once with the agreed floors (more than 10 trades, Sharpe at least 1, IRR at least 10%, beats benchmarks) in that regime, keeps the runs whose entry the regime admits, picks one at random, saves it from its own run and backtests it on recent data ending today, over a window its candle size sets: 5m 1 month, 15m 2 months, 30m 3 months, 1h 4 months, 4h 12 months, 1d 12 months (a month is 30 days). Returns as soon as the backtest is submitted; when running, show the saved strategy and invite the person to check results shortly using get_backtest with the returned backtest_id. Do not submit another backtest. Do not pass filters, a regime or dates: they are fixed. When nothing fits it answers with outcome no_match and saves and spends nothing. A fresh build selects its market automatically; do not ask for a venue or quote. It does not search the marketplace.
[Access: pay 0.10 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset (required), candle_size.
classify_market_segmentARead-onlyIdempotentInspect
Classify one stretch of market: a date range, or a catalog window by file name. Explicit date ranges require daily (1d) candles; catalog windows retain their stored interval. Returns its direction band, volatility band, trend character and the three features behind them, using the same labels the sweep catalog carries. Use it for a period the person names, or to see what a window a sweep selected contains. For an asset's current conditions use get_market_regime instead. Volatility reads unscored when no fitted band covers the stretch's length; the bands come back with it. For an exact crypto market, supply quote_token and market_data_venue together. A date range covers crypto and the stocks, ETFs, commodities and bonds in Oracle's regime catalog: SPY, QQQ, DIA, IWM, AAPL, AMD, AMZN, COST, GOOGL, HD, JNJ, JPM, META, MSFT, NFLX, NVDA, PG, TSLA, UNH, WMT, XOM, GLD, SLV, USO, GOLD (gold futures), CRUDE (crude oil futures) and TLT. Without explicit source arguments, those tickers are read from their exchange-session daily series, even where a crypto token shares one (DIA and META are the ETF and the stock here); any other ticker is read as crypto, so a stock not named here cannot be read. Explicit market or provider arguments select the crypto history path. venue says which feed was read. A listed ticker needs at least 15 sessions with a close, about three weeks; anything shorter is refused as too little history.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset, end_date, provider, start_date, +4 more.
create_sweepAInspect
Create the search, once the person has agreed to its size. The engine builds every candidate strategy itself out of the pool you give it -- the whole signal library unless narrowed by class or by naming signals -- and draws the parameters too. USE size_sweep FIRST and say the run count it reports: this call creates a draft and validates it, and a person who has not heard a total has not agreed to one. Still free; only launch_sweep spends. If valid comes back false, errors says why in Oracle's words, nothing was kept, and the fix is another attempt. Nothing runs until launch_sweep.
Inputs: sweep_name (required), assets, regimes, windows, +15 more.
delete_strategyAIdempotentInspect
Delete a strategy by its id. Strategies are NEVER hard-deleted: the service soft-archives the row, so the strategy and its history stay recoverable via unarchive. Use only when the person explicitly asks to delete or remove a strategy, and say plainly that it has been archived rather than implying it is gone.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: strategy_id (required).
discover_toolsARead-onlyIdempotentInspect
Discover Mangrove managed tools without executing them. Free, public read. Use detail=areas for the functional area index; summary (default) returns only names and descriptions; schema returns full live tool definitions. Select any areas and/or tool names; combined selectors form a union.
Inputs: areas, names, detail.
evaluate_multiple_signals_seriesBRead-onlyIdempotentInspect
Evaluate chart data and optional signal triggers over a specific range.
[Access: pay 0.05 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol, signals, end_date, provider, +6 more.
evaluate_signalCRead-onlyIdempotentInspect
Evaluate a signal against provided market data and parameters.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: market_data (required), signal_name (required), parameters.
evaluate_strategyAInspect
Evaluate a saved strategy against current live market data to check if entry or exit signals are firing right now. Returns the current asset price and any order intents the signals would produce. It places no orders and opens no positions, but each call records the evaluation: it updates the strategy's last_evaluated_at and evaluation_count and adds an agent_evaluations audit row. Use it when the user asks whether a strategy should be entering or exiting at this moment, or wants the live signal state for a specific strategy. Over x402, a wallet that proves its identity (Sign-In-With-X) gets 30 evaluations free per UTC day, then 0.05 USDC each; an API key is covered by its plan.
[Access: pay 0.05 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: strategy_id (required).
find_sweep_runsARead-onlyIdempotentInspect
Runs from one sweep, or from every sweep this person has, filtered and sorted by the engine. LEAVE experiment_id OUT to search them all, which is how a person asking whether they have already found something like this gets an answer without spending a new search on a question that already has one. A SWEEP HAS NO WINNER: which run matters depends entirely on what was being asked, so you choose sort_by for the question in front of you -- return, risk-adjusted return, drawdown, trade count -- and say which one you sorted by whenever you report an order. Never call the top row 'the best strategy'; it is the top row by the measure you picked. Filter before you sort: a run with a handful of trades has metrics that mean nothing, so min_trades is usually the first thing to set. Every numeric filter has BOTH bounds, so a band is one question: a delta against the benchmark between 3 and 8 is min and max together, not a page fetched and thinned by hand. Readable while the sweep is still running. At most 50 runs per call (default 20); pass offset to read on.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: sort_by (required), asset, limit, order, +35 more.
get_assetARead-onlyIdempotentInspect
Full metadata and risk profile for one crypto asset on the Mangrove platform: approval status, risk score breakdown, regulatory status and identifiers. Use it when the user asks about a specific asset's approval or risk detail rather than a live price.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required).
get_backtestARead-onlyIdempotentInspect
Fetch a backtest that already ran, by id, with the execution config it used. Use it instead of run_backtest whenever the user refers to a previous result, or to compare two runs -- re-running costs them a unit of their allowance and a stored run is the record of what actually happened.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: backtest_id (required).
get_backtest_tradesARead-onlyIdempotentInspect
The individual trades a backtest made -- entry and exit prices and times, profit or loss, and why each one closed. Use it when the user asks what a backtest actually traded; get_backtest has the summary metrics. THESE ARE SIMULATED TRADES from a backtest, not real ones -- list_trades has those. A long run is paged: at most 100 trades per call (default 25); pass offset to read on.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: backtest_id (required), limit, offset.
get_benchmarkARead-onlyIdempotentInspect
Buy-and-hold return for an asset between two dates, as a percentage. Use it whenever you state what a strategy returned: a return with nothing to compare it against does not answer whether the strategy was worth running. run_backtest already includes this for its own window, so call this for a different asset or a different period. A YYYY-MM-DD end date covers that whole UTC day, as run_backtest reads it; an end date of today stops at the end of yesterday, the last complete day; an exact end timestamp is passed through without adding a day.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset (required), end_date (required), start_date (required), base_token, +2 more.
get_chain_tvlARead-onlyIdempotentInspect
Total Value Locked for a whole blockchain such as Ethereum, Base or Solana. Returns USD TVL and the top protocols on that chain. Use it when the user asks about a chain's overall DeFi footprint.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: chain (required).
get_etf_flowsARead-onlyIdempotentInspect
Crypto spot ETF net flows per day (BTC, ETH, SOL, HYPE) over the last lookback_days (default 30, up to 3650), newest first, with per-asset totals for the whole window. Persistent net inflows are a bullish tape signal; heavy outflows bearish. Pass symbol to narrow it to one asset. Days are paged: limit 1-100 (default 25), offset 0-10000; the totals always cover every day in the window. Use it when the user asks about ETF flows, institutional demand or spot ETF activity.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, offset, symbol, lookback_days.
get_execution_config_schemaARead-onlyIdempotentInspect
Every execution-config parameter a strategy can carry: the platform default, what it does, the effect of raising or lowering it, its legal bounds, and whether it is a strategy-character knob, an account guardrail, gated behind another flag, or retained but unused. Call it before discussing or overriding any risk parameter, so you describe the knob that exists rather than one you remember.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: no named parameters.
get_global_marketARead-onlyIdempotentInspect
Global crypto market snapshot -- total market cap, BTC dominance, total 24h volume and the 24h change. Use it when the user asks about overall market conditions or wants a macro view rather than a per-asset reading.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: no named parameters.
get_influence_scoreARead-onlyIdempotentInspect
Influence score for a single X/Twitter account: a 0-100 score and follower count. Use it when the user asks about a specific influencer or KOL, or wants to know how much weight an account carries in crypto conversation. It is a per-account snapshot, not a topic aggregate.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: username (required).
get_lending_ratesARead-onlyIdempotentInspect
Per-pool supply and borrow rates across DeFi lending protocols such as Aave, Compound and Morpho, largest pool (TVL) first. Pass symbol (the pool asset, e.g. USDC), protocol (e.g. aave-v3), chain and/or min_tvl_usd to narrow it. Results are one page: limit 1-100 (default 25), offset 0-10000; pass next_offset to get the next page. Useful for rate-spread screens and stablecoin yield analysis. Use it when the user asks about lending rates, borrow costs or DeFi yield.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: chain, limit, offset, symbol, +2 more.
get_market_dataARead-onlyIdempotentInspect
Latest trade price for a selected market, plus aggregate market cap and 24h volume. Pass quote_token and market_data_venue together to honor a requested exchange. When omitted, selects a supported market and returns its quote and venue. Report the returned venue and quote; disclose price_as_of and price_stale. Use it when the user asks what an asset is doing now, or when a live price is needed to ground a recommendation. It is a spot reading from an external API and is rate limited, so call it once per asset and reuse the answer.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), provider, quote_token, market_data_venue.
get_market_regimeARead-onlyIdempotentInspect
Classify an asset's regime using a lookback of 1-365 days of daily closes (default 180, the window strategy builds use): the return and a bull/neutral/bear band over 90, 180 and, for a 365-day lookback, 365 days, plus annualised volatility as a percentage, a bucket, and a z-score against the asset's own baseline; and the whole lookback in the sweep catalog's labels (direction, low/medium/high volatility for its asset class and length, and a clean/mixed/choppy trend). Use it before recommending a strategy style, because a mean-reversion design and a trend-following design suit opposite regimes. Covers crypto and the stocks, ETFs, commodities and bonds in Oracle's regime catalog: SPY, QQQ, DIA, IWM, AAPL, AMD, AMZN, COST, GOOGL, HD, JNJ, JPM, META, MSFT, NFLX, NVDA, PG, TSLA, UNH, WMT, XOM, GLD, SLV, USO, GOLD (gold futures), CRUDE (crude oil futures) and TLT. Without explicit source arguments, those tickers are read from their exchange-session daily series, even where a crypto token shares one (DIA and META are the ETF and the stock here); any other ticker is read as crypto, so a stock not named here cannot be read. Explicit market or provider arguments select the crypto history path. venue says which feed was read. A listed ticker needs at least 15 sessions with a close, about three weeks; anything shorter is refused as too little history. For a listed ticker the lookback is calendar days, so 365 reads about 250 sessions. For an exact crypto market, supply quote_token and market_data_venue together.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset (required), provider, quote_token, lookback_days, +1 more.
get_ohlcvARead-onlyIdempotentInspect
Daily OHLCV (open, high, low, close, volume) history for one crypto asset over the requested lookback (1-3650 days, default 30). More than 1,000 daily bars come back as weekly bars instead (interval says which; daily_bars says how many days were rolled up). Use it when the user asks for price history, chart data, or wants to reason about past price movement rather than the current spot. Supply quote_token and market_data_venue together to select an exact market, or provider for an external source; omit these overrides to select a Mangrove market.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), provider, quote_token, lookback_days, +1 more.
get_onchain_seriesARead-onlyIdempotentInspect
Per-bar on-chain metric time series for a token. One request returns a bar-indexed series with any combination of SmartMoneyNetflow, SmartMoneyHoldings, ExchangeNetflow, WhaleNetInflow and HolderConcentration. Interval is 1h, 4h, 1d or 1w; top_n is how many top holders HolderConcentration sums; the only provider is nansen. Native ETH is read as WETH, and the token must be deployed on the chain asked for. The window defaults to the last 10 days and is at most 366 days; a window that would exceed 1,000 bars is read at the next coarser interval instead (1h, 4h, 1d, 1w), and interval says which was used. Prefer this over firing many point queries when the user wants a historical or trailing-window view.
[Access: pay 0.05 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), metrics (required), chain, top_n, +4 more.
get_perp_funding_ratesARead-onlyIdempotentInspect
Perpetual funding rates by venue and market (Binance, OKX), largest open interest in USD first. Positive funding means longs are paying to hold; negative means shorts are. Pass symbol (the base asset, e.g. BTC) and/or venue to narrow it. Results are one page: limit 1-100 (default 25), offset 0-10000; pass next_offset to get the next page. Use it when the user asks about perp funding, crowded positioning or leverage bias.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, venue, offset, symbol.
get_playground_dataARead-onlyIdempotentInspect
Return one page of OHLCV bars from a playground dataset, newest page first.
Inputs: dataset_key (required), limit, offset, end_date, +1 more.
get_protocol_tvlARead-onlyIdempotentInspect
Total Value Locked for a single DeFi protocol such as Aave, Uniswap or Curve. Returns USD TVL and a per-chain breakdown. Use it when the user asks how much capital is locked in a specific protocol.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: protocol_name (required).
get_signalARead-onlyIdempotentInspect
Get complete metadata for an exact registered signal name.
Inputs: signal_name (required).
get_smart_money_dex_tradesARead-onlyIdempotentInspect
Recent DEX trades from smart-money wallets across chains. Returns a paginated list of executed trades with token, side, size and wallet metadata. Use it when the user asks what smart money is trading on DEXs, or wants a raw feed of smart-money swap activity.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: page, chains, filters, order_by, +1 more.
get_smart_money_flowsARead-onlyIdempotentInspect
One-token flow intelligence snapshot: returns net USD flows and wallet counts for smart traders, whales, exchanges, fresh wallets and public figures together in ONE response. Use for a trailing-window category summary, including the past 24 hours (timeframe=1d). Do not fetch a separate token-flows page for each category to construct this summary. Timeframe is 5m, 1h, 6h, 12h, 1d or 7d. For explicit start/end dates or paginated flow records use get_token_flows. Native ETH is read as WETH; the token must exist on the requested chain.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), chain, timeframe.
get_smart_money_historical_holdingsARead-onlyIdempotentInspect
Historical snapshots of what smart-money wallets held on specific dates. Returns per-wallet-category holdings with USD values. Use it when the user wants to see how smart-money positioning has changed over time, or wants historical on-chain portfolio data for a date range.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: page, chains, date_to, filters, +3 more.
get_smart_money_holdingsARead-onlyIdempotentInspect
Current smart-money holdings: what funds and smart traders are holding right now, sorted by USD value. Use it when the user asks what smart money currently owns or has positions in.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, chains, min_value_usd, include_labels.
get_smart_money_netflowsARead-onlyIdempotentInspect
Aggregated smart-money netflows across all tokens market-wide: which tokens funds and smart traders are accumulating or distributing. Use it when the user asks what smart money is buying or selling, or wants to see market-wide on-chain trends.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, chains, timeframe, include_labels.
get_smart_money_perp_tradesARead-onlyIdempotentInspect
Perpetual futures trades from smart-money wallets on Hyperliquid. Shows leveraged directional bets by sophisticated traders. Use it when the user asks about smart-money perp positions, what high-conviction traders are doing with leverage, or wants to see Hyperliquid smart-money activity.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: page, filters, order_by, per_page.
get_smart_money_sentimentARead-onlyIdempotentInspect
On-chain sentiment read for a token derived from smart-money wallet net flows. Returns a sentiment label (bullish, bearish or neutral) and net USD flow direction. Use it when the user asks what smart-money sentiment is for an asset, or wants a quick bullish or bearish read from on-chain flow data. For X or Twitter social sentiment use get_social_sentiment instead.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), chain.
get_social_mentionsARead-onlyIdempotentInspect
Recent X/Twitter posts about a crypto asset or topic: post text, id and time, at most 10 posts, plus how many posts the search matched. Use it when the user wants to see what is actually being said, or wants raw posts rather than an aggregated sentiment score.
[Access: pay 1.00 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: topic (required), limit, hours_back.
get_social_sentimentARead-onlyIdempotentInspect
Keyword-polarity sentiment for a crypto cashtag on X/Twitter. It fetches recent posts for $TOPIC and counts how many contain a positive and how many a negative keyword; the 0-100 score is the positive share of those polar posts. Returns the score, a bullish (70 or more), neutral or bearish (30 or less) label, and the number of posts read. When no post carried a sentiment keyword the score is null and the label is insufficient_signal: report that, not a neutral reading. Always state how many posts the reading was built from. Use it when the user asks about market mood or social sentiment for a token. The call is metered, so ask once per topic and reuse.
[Access: pay 1.00 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: topic (required), hours_back.
get_stablecoin_metricsARead-onlyIdempotentInspect
Global stablecoin metrics -- total supply, per-chain breakdown and the top stablecoins by market cap. Use it when the user asks about stablecoin supply, USDC or USDT dominance, or overall market liquidity.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: no named parameters.
get_strategyARead-onlyIdempotentInspect
Read a strategy definition saved in MangroveAI, including its entry and exit signals and execution settings. Use an ID returned by list_strategies; IDs from other stores are not interchangeable.
Inputs: name, strategy_id.
get_sweepARead-onlyIdempotentInspect
Where one sweep has got to: its status and how many of its runs have finished. This is how you answer 'is it done yet' -- read it when the person asks, not on a loop, because the engine works for minutes or hours and a second look a moment later says the same thing. Results can be read while it is still running; the rows that exist are real.
Inputs: experiment_id (required).
get_sweep_limitsARead-onlyIdempotentInspect
The sweep limits this person's plan actually enforces: the most backtests one sweep may run, the most history it may read, and how many sweeps may be in flight at once. Read these rather than guessing, and say the size in plan terms when a search is over one. Zero means no limit is enforced for this caller and -1 means unlimited; neither is a number to report as a cap.
Inputs: no named parameters.
get_sweep_runARead-onlyIdempotentInspect
One run rebuilt as the strategy it was, entry and exit rules with the parameter values the engine drew. This is the way OUT of a sweep: a row worth acting on becomes a saved strategy and then a real backtest over a window the person chose. Reach for it once a row is interesting, not for every row in a ranking.
Inputs: run_index (required), experiment_id (required), config_hash.
get_symbol_exchangesARead-onlyIdempotentInspect
The exchanges that list one specific token, with per-venue metadata. Use it when the user asks where a token trades or which venues carry it, rather than for a price on any one of them.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required).
get_token_dex_tradesARead-onlyIdempotentInspect
DEX trades for a specific token across all participants in a date window. Returns raw swap events with wallet, size and pool metadata; useful for post-hoc flow analysis on a single token. Native ETH is read as WETH, and the token must be deployed on the chain asked for.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), page, chain, date_to, +4 more.
get_token_flowsARead-onlyIdempotentInspect
Paginated historical flow records for one non-stablecoin token between explicit start and end dates, optionally filtered by one wallet label. Use for date-range records or pagination. For a trailing-window summary of net USD flows AND wallet counts across categories, use get_smart_money_flows, which returns the categories together in one call. Not available for stablecoins. Native ETH is read as WETH; the token must exist on the requested chain.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), page, chain, label, +5 more.
get_token_holdersARead-onlyIdempotentInspect
On-chain token holder distribution for a token: total on-chain holder count, top-10 concentration percentage and a concentration score. Nansen aggregates across chains, so pass the symbol only and do not pass a chain argument. Use it when the user asks how many wallets hold a token, about holder count, holder concentration, whale ownership or distribution risk.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required).
get_token_unlocksARead-onlyIdempotentInspect
Upcoming token unlocks and supply metrics -- which tokens release supply in the next days_ahead days, when, and how much (cliff amounts and USD value). Heavy near-term unlocks are a supply-shock signal. Pass symbol (the token ticker, case-insensitive) or protocol (also for tokens without a ticker) to ask about specific tokens; a matched token is returned even when its next unlock is outside the window. Results are one page of tokens: limit 1-100 (default 25), offset 0-10000; pass next_offset from a response to get the next page. Use it when the user asks about unlocks, vesting or supply overhang.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, offset, symbol, rank_by, +2 more.
get_trades_for_strategyARead-onlyIdempotentInspect
Read closed trades from MangroveAI for one strategy belonging to the authenticated user and organization. Uses the same MangroveAI record as list_trades; these are execution records, not backtest fills.
Inputs: strategy_id (required), limit, offset.
get_treasuriesARead-onlyIdempotentInspect
DeFi protocol treasury holdings -- how much a protocol holds in its own treasury, split into its own token, stablecoins, majors and others, largest treasury first. Pass protocol (name, slug or CoinGecko id; the '(treasury)' suffix is optional) or symbol to look one up. Results are one page: limit 1-100 (default 25), offset 0-10000; pass next_offset to get the next page. Use it when the user asks about protocol treasuries, DAO holdings or protocol-owned liquidity.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, offset, symbol, protocol.
get_trendingARead-onlyIdempotentInspect
The crypto assets trending right now by 24h search volume. Use it when the user asks what is popular, what the market is paying attention to, or wants a discovery view rather than a specific asset lookup.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: no named parameters.
get_x_post_countsARead-onlyIdempotentInspect
How many X posts mentioned a crypto asset's cashtag, per hour or per day, over the last 1 to 31 days. This is the XPostCount series the x_attention signals (x_post_count_spike, x_attention_elevated, x_attention_price_divergence) read. Counts exclude reposts and promoted posts; x_query=en_original also drops replies and keeps English only. The series ends at the last settled bucket (closed at least five minutes ago). Use it to show a token's attention trend, to explain why an X signal fired, or to pick a z_threshold. Counts are post volume, not sentiment. Repeat reads are served from cache.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: symbol (required), x_query, days_back, granularity.
kb_get_documentARead-onlyIdempotentInspect
Read a requested KB guide or a known source section by slug. Use directly when the user requests the document itself; no preliminary graph call is required. For a general explanation use query_knowledge op=ask, not a document-reading sequence. If a needed slug is unknown, locate it with kb_search or kb_list_documents. Use view=overview for a guide summary; view=section with a returned section_anchor for a specific passage. Content defaults to 6000 characters; offset and next_offset count characters within the selected body. Continue only when the requested material is missing, not merely because has_more is true. full=True is for explicit full-document requests. A document excerpt is educational material; executable signal identities and parameters come from the runtime registry.
Inputs: slug (required), full, view, offset, +2 more.
kb_get_signal_quick_referenceARead-onlyIdempotentInspect
Read the Signals Quick Reference guide when the user asks for that guide or its documented entries. This is the document-reading shortcut for kb_get_document slug=10-signals-quick-reference, not an additional validation step. Use view=overview for its outline or view=section with a known anchor for a passage. Content defaults to 6000 characters; offset and next_offset count characters within the selected body. Continue only for requested missing text. Reserve full=True for explicit downloads. For conceptual signal combinations use query_knowledge op=ask. For executable signal names and parameters needed to construct a strategy use the runtime catalogue, not this educational guide.
Inputs: full, view, offset, max_chars, +1 more.
kb_glossary_getARead-onlyIdempotentInspect
Return the KB glossary entry for an explicitly requested glossary definition or exact glossary term. No preliminary graph call is required for a glossary request. For a general question such as what RSI means, why it behaves that way, or which indicators complement it, start with query_knowledge op=ask. Exact lookup is case-insensitive and may return partial matches. Answer from the returned definition when sufficient; do not routinely follow it with graph or document searches.
Inputs: term (required).
kb_list_documentsARead-onlyIdempotentInspect
Reads the Mangrove Knowledge Base package: every document's slug, title and summary. For a keyword search instead of browsing use kb_search. Use this when the user wants to browse the KB or you need a slug before calling kb_get_document.
Inputs: no named parameters.
kb_searchARead-onlyIdempotentInspect
Locate KB articles or source sections using short topic keywords. Use when the user asks to find written material, or an explanation is missing a specific fact that requires a source passage. For general definitions, explanations, comparisons and combination/caution questions, start with query_knowledge op=ask instead. This returns snippets and section anchors, not full articles. All query terms must match; do not send a full question or split it into speculative keyword searches. A tag restricts the category and disables synonym expansion. If the snippets or attached graph evidence answer the request, answer directly. Read one returned section with kb_get_document only if a required fact is still missing. Do not automatically search again or read every result.
Inputs: q (required), tag, tags, limit, +1 more.
launch_sweepAIdempotentInspect
Start a validated sweep. THIS IS THE ONE CALL THAT SPENDS: it puts the engine to work on every run the search describes, for minutes or hours, and there is no undoing it -- pause_sweep stops further work but does not give back what already ran. So say the run count out loud and get the person's agreement before calling it; a number they never saw is not one they agreed to. It returns immediately with the sweep queued or preparing, NOT with results: the runs land over time and get_sweep says how far along it is. A status of queued means it starts when the account's current sweep finishes, which is the sweep beginning and not a refusal.
[Access: pay 0.25 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: experiment_id (required).
list_approved_assetsARead-onlyIdempotentInspect
List assets supported by platform ref-data, enriched with market data and risk scores. Approval is independent of risk assessment. Unassessed risk scores are null; do not interpret them as zero or infer regulatory approval. Returns available market metadata and risk scores.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: top_n.
list_backtest_marketsARead-onlyIdempotentInspect
List available execution venue and quote-token choices for a backtest. Use when the user asks for alternatives. Missing market details are selected automatically in backend ranking order, retaining supplied dimensions. Do not ask for a market choice unless the user requests one. Availability here does not guarantee historical coverage; submission checks the chosen window.
Inputs: asset (required).
list_backtestsARead-onlyIdempotentInspect
The user's recent backtest runs, newest first, optionally just the ones for one strategy. Use it when they ask what they have run, or refer to an earlier result without giving an id -- then fetch the one you need with get_backtest. It is how you avoid re-running something that already has an answer. Results are newest first; pass strategy_id to see only one strategy's runs.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, strategy_id.
list_evaluationsARead-onlyIdempotentInspect
Read the MangroveAI agent evaluation decision log for a strategy belonging to the authenticated user and organization. No audit record means unknown activity, not proof it never evaluated. This does not read platform evaluation records.
Inputs: strategy_id (required), limit, offset, include_details.
list_exchangesARead-onlyIdempotentInspect
Every exchange the Mangrove platform tracks, with per-exchange tier and 24h volume. Use it when the user asks what exchanges are supported or wants to browse the exchange universe rather than a single venue.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: no named parameters.
list_playground_datasetsARead-onlyIdempotentInspect
Return metadata for all available playground CSV datasets.
Inputs: no named parameters.
list_positionsARead-onlyIdempotentInspect
Read positions recorded in MangroveAI for the authenticated user and organization. This does not read platform trading positions.
Inputs: asset, limit, offset, open_only, +1 more.
list_run_filtersARead-onlyIdempotentInspect
The values a sweep's runs actually carry: which assets, which candle sizes, and which entry triggers the engine drew. Read this before filtering by one of them, because a value nothing carries comes back as an empty page that reads exactly like a search with nothing good in it.
Inputs: experiment_id (required).
list_signal_labelsARead-onlyIdempotentInspect
Every signal's friendly name, display name and short description, keyed by code name.
Inputs: no named parameters.
list_signalsARead-onlyIdempotentInspect
List available trading signals: names, types (TRIGGER or FILTER) and short descriptions. Use it to browse the catalogue, or narrow it by regime band, role or library category.
Inputs: role, limit, offset, category, +1 more.
list_strategiesARead-onlyIdempotentInspect
List strategy definitions saved in MangroveAI for the authenticated user and organization. Use get_strategy with a returned strategy_id for entry/exit rules. This reads server definitions, not local agent execution records. An empty result means no matching saved definitions.
Inputs: limit, offset.
list_sweep_marketsARead-onlyIdempotentInspect
What history a sweep could run over, as the choices to offer and how many windows each one would add. Oracle keeps MANY separate windows per asset -- different date spans of the same market, each labelled with the character of the market inside it -- and a sweep runs over every one that matches, which is what stops a result that only held in one period from looking general. CALL THIS BEFORE ANYTHING ELSE, and again after each answer: the counts are conditioned on what has been chosen already, so they say what picking an option would ADD. Offer only what comes back. An option the catalog cannot cover is not returned at all, and an asset Oracle holds no data for cannot be swept however well known it is. Windows with missing bars are left out unless asked for.
Inputs: assets, regimes, windows, candle_sizes, +1 more.
list_sweepsARead-onlyIdempotentInspect
The sweeps this account can see, newest first. Call it whenever the person refers to a search rather than asking for a new one -- 'how did that one go', 'what have I run' -- so you read an existing sweep instead of paying to repeat it. Live progress is not in this list; get_sweep has it for the one that matters. Returns at most 100 sweeps per call (default 20).
Inputs: limit.
list_tradesARead-onlyIdempotentInspect
Read trade history recorded in MangroveAI for the authenticated user and organization. This does not read platform trades.
Inputs: asset, limit, offset, outcome, +1 more.
load_skillARead-onlyIdempotentInspect
Load one of your skills: the full instructions for doing something, which the turn only announced by name. Do it BEFORE working in a skill's area rather than after -- the announcement says what a skill is for, and the skill itself says how, including which calls to make and what not to do. Pass a section name to load only part of it. A skill may also carry FILES it tells you to read -- a lookup table, a mapping -- and resources names them; pass one as resource to be given it. Asking for a skill, a section or a resource that does not exist returns the ones that do.
Inputs: skill (required), section, resource.
match_signalsBRead-onlyIdempotentInspect
Match a trading description to ranked signals.
[Access: pay 0.01 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: description (required), role, top_k, user_intent, +2 more.
pause_sweepAIdempotentInspect
Stop a running sweep from doing any more work, keeping every result it has already written. Use it when the person has seen enough, or when a search turned out far larger than they wanted. It does not undo what already ran, and the results stay readable afterwards -- so it is a way to stop spending, not a way to take it back. Say how many runs finished, which is what they keep. A sweep that was only QUEUED had not started, so stopping it returns it to validated rather than paused and it can be launched again later.
Inputs: experiment_id (required).
query_knowledgeARead-onlyIdempotentInspect
Explain trading concepts, definitions, relationships, comparisons and when signals work or fail using Michael's knowledge graph. This is the first tool for a general knowledge question, including which indicators complement RSI and when to avoid combining them. Start with op=ask, the complete question in q, hops=1 and limit=5. Keep related clauses together; do not run a search for each clause. Read the summaries and edge reasons before deciding on another call. Answer once the requested explanation and cautions are supported. A follow-up must address a specific missing fact: get an already-returned node for its details, or read one relevant KB section. Do not gather extra context, enumerate neighbors, check the signal catalogue or measure signals merely to expand a conceptual answer. If evidence remains insufficient, say what is unknown instead of repeatedly rephrasing searches. This guidance does not replace validation required for an actual strategy or a requested graph exploration. Explicit glossary, document and browsing requests go directly to the corresponding KB tool without a preliminary graph call. Runtime signal selection belongs to the signal catalogue; measured firing rates and durations belong to query_signal_behavior; current market regime belongs to get_market_regime. These are separate user intents, not mandatory steps for an explanation. Mangrove product policy belongs to query_product_facts. Reuse evidence and node IDs already returned in this conversation. Ops: stats (the counts and the complete vocabulary every filter accepts -- call it when you do not already know the filter values), find (search BY WORDS, optionally by kind/role/status/requires/param -- param finds every signal taking a parameter of that name), ask (search BY MEANING -- give it the question in ordinary words; use this when you would otherwise answer from memory, e.g. 'how far should the stop go', 'what works in a sideways market'; hops is capped at 3), get (one node in full: formula, inputs, params, outputs, warmup), neighbors (one hop: what reads this, or what this depends on; filter by relation, relation_category, primitive or why), walk (the whole neighbourhood out to a radius, as nodes plus edges -- for 'everything around X' rather than one hop at a time), outputs (search the VALUES: which are bounded, which are in given units, what produces an output called X), path (the one shortest route between two nodes), paths (every simple route between two nodes -- use when the shortest route is not the explanatory one), ancestors (the classes a node belongs to, transitively), descendants (everything under a class, transitively), under (everything contained in a node by subject, whatever primitive it is -- e.g. a whole knowledge-base chapter). NEVER GUESS a node id or name for get/neighbors/outputs/path/walk/paths/ancestors/descendants/under: call find (or ask) only if you do not already have an ID from a tool result -- ids look like 'procedure:signal-rsi-bullish-divergence', not 'rsi_divergence'. A get that misses returns candidates; fetch one only if it is relevant to a fact still needed for the answer. Signal rows carry signal_type from the catalog: TRIGGER is an occurrence, FILTER is a condition that can remain true across bars. A boolean output does not make a signal a TRIGGER; read its signal_type rather than infer its role from its name or output. Class and role are different questions: kind='momentum' is what a computation measures, role='trigger' is the part it plays.
Inputs: op (required), q, to, why, +19 more.
query_signal_behaviorBRead-onlyIdempotentInspect
Query measured signal behaviour: describe, pick, find or gap_probability.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: lookup (required), limit, signal, category, +10 more.
run_backtestAInspect
Start a backtest of one saved strategy over a window of history. Takes a strategy_id -- it reads the stored strategy's own rules, asset, timeframe and risk parameters. The recorded market is the default; pass quote_token and/or market_data_venue when the person chooses another quote or execution venue. An omitted choice keeps its recorded value. Check and report the selected market; never silently substitute a feed. IT RETURNS A SUBMISSION, NOT A RESULT: a real backtest takes minutes, so this hands back the run's id and the config it will use, and the metrics arrive on their own once the engine finishes. Tell the person it is running; do not call this again for the same question, and do not wait. It consumes a unit of the user's monthly backtest allowance at submission -- so it CHECKS THE STRATEGY FIRST, and a refusal costs nothing: a problem (verify_strategy's problems) always refuses, and a signal parameter still at its library default refuses until you either save chosen values or pass acknowledge_defaults=true to stand by the defaults deliberately. One (strategy, window) is ONE measurement: submitting the same strategy over the same dates again is refused and the existing run named -- read that with get_backtest instead. Both start_date and end_date are required: name the days, so the same question asked next week gives the same answer. Every message carries the current time, so work them out from that. A YYYY-MM-DD end date covers that whole UTC day; an end date of today stops at the end of yesterday, the last complete day; a later date is refused. get_benchmark reads the same dates the same way. When the person names no window, its length is set by the candle size: 5m 1 month, 15m 2 months, 30m 3 months, 1h 4 months, 4h 12 months, 1d 12 months (a month is 30 days). Pass end_date = today and start_date = today minus 30 days per month (1h: today minus 120 days); today is not complete, so the window covers exactly that many days, through the end of yesterday.
[Access: pay 0.10 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: end_date (required), start_date (required), strategy_id (required), quote_token, +3 more.
save_strategyAInspect
To promote a sweep pick, pass source_experiment_id and source_run_index; the service loads its authorized configuration and checks coverage before saving. Its recorded venue and quote token are defaults: pass market_data_venue and/or quote_token only when the person chooses a different market. Otherwise compose and save a trading strategy from signals in the library. Give it a strategy_name, an asset, and the entry and exit signals you chose -- each one {name, params?, timeframe?}, with params defaulting from the library when omitted. DO NOT pass a signal's role: TRIGGER and FILTER are read from the library, and an entry must resolve to exactly one TRIGGER plus any number of FILTERs. Find real signal names with query_knowledge first; never invent one. The server checks the entry against the current market regime itself -- a strategy composed against the wrong regime is refused, and telling the person why is a better answer than saving it anyway. Pass constraints for supported execution settings requested by the person or justified by the composition workflow after reading the execution-config contract. Preserve explicit user choices; explain agent-selected adjustments as recommendations, not as values the person requested. Supplied values are kept exactly, while omitted values use server defaults or the selected source run. Saving the same strategy twice returns the first one rather than making a duplicate, and says so in created. What you save is a DRAFT: not tradeable until a backtest of it meets the platform's threshold spec, and it leaves draft on its own when one does.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset (required), strategy_name (required), constraints, quote_token, +8 more.
screen_candidatesARead-onlyIdempotentInspect
Rank several candidate strategies by how likely each is to trade at all, before spending backtests on them. Give it one asset and up to 99 candidates, each {entry: [...], exit: [...]} with signals from the library -- the roles come from the library, so do not pass signal_type. IT PREDICTS WHETHER A STRATEGY WILL PLACE TRADES, AND NOTHING ABOUT WHETHER IT WILL MAKE MONEY: only a backtest answers that. Use it to choose which of many candidates to backtest first, never as a verdict on a single strategy -- a probability on its own says little, and the ranking is the answer. A HIGH score is real support for spending a backtest. A LOW score is weak evidence and is NOT a finding that the strategy will not trade: measured against runs that did trade, a 0.5 cutoff recovers under half of them. Never tell someone their strategy will not trade because this scored it low; back it and find out.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: asset (required), candidates (required).
screen_smart_moneyARead-onlyIdempotentInspect
Screen the market for tokens that smart-money wallets are currently accumulating or distributing. Returns a ranked list of tokens with high smart-money activity across the specified chains. Use it when the user asks what smart money is currently buying, which tokens are being accumulated, or wants to discover high-conviction smart-money plays.
[Access: pay 0.02 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: limit, chains, timeframe.
search_signalsCRead-onlyIdempotentInspect
Search signal names, parameters or description keywords.
Inputs: query (required), role, limit, offset, +3 more.
size_sweepARead-onlyIdempotentInspect
How big a search would be, without creating anything. THIS IS THE NUMBER YOU SAY OUT LOUD, and it is almost never the number the person named: the draw count is PER WINDOW and Oracle keeps many windows per asset. Oracle counts it by walking exactly what the plan would walk, so nothing else can be trusted to work it out. Free, and repeatable -- call it after every change while the size is being settled, and only create the sweep once the person has agreed to a total. If it comes back capped, their plan scaled the search down and cap_applied says by how much.
Inputs: assets, regimes, windows, categories, +14 more.
update_strategyADestructiveIdempotentInspect
Change a DRAFT strategy in place: its signals, their parameters, or a supported execution setting. Preserve explicit user choices; explain agent-selected adjustments and follow the composition workflow and execution-config contract. Pass the COMPLETE entry and exit signal lists when changing signals -- what you pass replaces what was stored, it is not merged, while constraints merge onto the stored execution config. Only a draft that has never been backtested can change: once a backtest has measured it, its rules are frozen so the results stay attached to the rules they ran, and a change means saving a NEW strategy with save_strategy. Use this to act on verify_strategy's warnings without creating a duplicate.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: strategy_id (required), constraints, exit_signals, entry_signals, +3 more.
validate_signal_paramsCRead-onlyIdempotentInspect
Validate parameters for a signal.
[Access: pay 0.001 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: signal_name (required), parameters.
verify_strategyARead-onlyIdempotentInspect
Check a saved strategy against everything that has to be true for it to run: the signal names and their parameter keys, the roles composing, a timeframe on every signal, and a timeframe on the strategy. Call it after saving and BEFORE backtesting -- a backtest spends the person's allowance the moment it is submitted, whether or not it runs, and these are the faults that make it fail at setup with nothing measured. It reads what is STORED, so it answers for the strategy as it exists rather than as it was described. warnings are judgements it cannot make for you -- a parameter still at its library default -- and do not stop a run.
[Access: pay 0.005 USDC via x402 (PAYMENT-SIGNATURE header) OR authenticate with an API key. An x402-capable client will auto-pay; API-key clients pay nothing per call.]
Inputs: strategy_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
Related MCP Connectors
Build, backtest, and deploy quantitative trading strategies from your AI agent.
Unified financial infrastructure connecting AI agents directly to trade live/demo brokerage accounts, Web3 non-custodial wallets, real-time market data across equities, ETFs, crypto, forex, options, DeFi swaps, and prediction markets, institutional research feeds, and algorithmic strategy backtesters.
AI agents backtest, paper trade and live trade via your broker. Free to connect; OAuth.
Polymarket + Hyperliquid + macro for AI agents. 38 tools, signal backtest, SSE streaming. Free tier.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables quant research, strategy development, backtesting, and paper trading through natural language prompts, integrated with 20+ AI agents.134-
- AlicenseBqualityCmaintenanceProvides a safe trading toolkit for AI agents with market data, indicators, paper trading, and guarded broker integration.63MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to execute stock trading operations with built-in risk controls and human approval workflows. Supports paper trading simulation, real brokerage integration (Alpaca, Tradier), backtesting, sentiment analysis, and portfolio management while maintaining strict separation between AI intelligence and trade execution.MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to mine, validate, and paper-trade quantitative trading strategies via chat, with the engine running locally on the user's own machine.1-
Glama MCP Gateway
Add one secure layer between your agents and this server.