{"data":{"name":"io.github.MangroveTechnologies/mangroveai","title":"MangroveAI","description":"Guardrails for trading agents. Built-in risk management, 100+ tools for strategy R&D, 12+ venues.","version":"1.0.2","websiteUrl":"https://mangrove.ai/agents/","repositoryUrl":"https://github.com/MangroveTechnologies/mangrove-agent","remotes":[{"type":"streamable-http","url":"https://api.mangrovedeveloper.ai/mcp/"}],"packages":[],"status":"active","isLatest":true,"publishedAt":"2026-11-02T16:59:57.929Z","updatedAt":"2026-11-02T16:59:57.929Z","source":"official-registry","verification":"official","confidence":100,"stars":null,"sources":[{"source":"official-registry","sourceId":"io.github.MangroveTechnologies/mangroveai","verification":"official","confidence":100,"stars":null,"updatedAt":"2026-11-02T16:59:57.929Z","title":"MangroveAI","description":"Guardrails for trading agents. Built-in risk management, 100+ tools for strategy R&D, 12+ venues.","websiteUrl":"https://mangrove.ai/agents/","repositoryUrl":"https://github.com/MangroveTechnologies/mangrove-agent"}],"toolIndex":{"tools":[{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"build_strategy_for_regime","title":null,"description":"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 the last 90 days (30 for 5m). Do not pass filters, a regime or dates: they are fixed. When nothing fits it saves and spends nothing, and you move straight to a fresh build. It does not search the marketplace.\n\n[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.]","inputSchema":{"type":"object","properties":{"asset":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"candle_size":{"description":"Duration of one candle, e.g. 1h or 1d.","type":"string"}},"required":["asset"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"afb16cedf4779f46f86e22797093119687350cc21dd855982384d8e98a0978fc","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"classify_market_segment","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"asset":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"candle_size":{"default":"1d","description":"Duration of one candle, e.g. 1h or 1d.","type":"string"},"end_date":{"description":"ISO end of the window.","type":"string"},"market_data_venue":{"description":"Exact venue of the requested market.","type":"string"},"provider":{"description":"Optional upstream override; omitted uses the existing server default.","type":"string"},"quote_token":{"description":"Quote currency of the requested market.","type":"string"},"start_date":{"description":"ISO start of the window, e.g. 2026-01-01.","type":"string"},"window_file":{"description":"A catalog window's file name, classified as it stands. Supply this or the asset with both dates, not both.","type":"string"}},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"1b2bbb34820cb98115deddf7972601af5044dcb55f67488b3859a44a08645a7b","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"create_sweep","title":null,"description":"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.","inputSchema":{"type":"object","properties":{"assets":{"description":"Asset symbols, e.g. [\"BTC\", \"ETH\"].","items":{"type":"string"},"type":"array"},"candidate_shape":{"description":"How many parts a drawn strategy gets, any of n_entry_triggers, min_entry_filters, max_entry_filters, min_exit_triggers, max_exit_triggers, min_exit_filters, max_exit_filters. Omitted, the platform default shape.","type":"object"},"candle_sizes":{"description":"Candle sizes, e.g. [\"1h\"]. Omitted, every size Oracle holds for those assets, which multiplies the windows.","items":{"type":"string"},"type":"array"},"categories":{"description":"Draw only from these signal classes, e.g. [\"momentum\"]. The classes are averaging, flow, momentum, oscillator, pattern and volatility. Omitted, the whole library.","items":{"type":"string"},"type":"array"},"draws_per_dataset":{"default":100,"description":"How many candidate strategies to draw PER WINDOW. The runs that execute are this multiplied by the number of windows.","type":"integer"},"entry_filters":{"description":"Draw entry filters only from these. Omitted, every filter.","items":{"type":"string"},"type":"array"},"entry_triggers":{"description":"Draw the entry trigger only from these signals, named as the knowledge graph registers them. Omitted, every trigger.","items":{"type":"string"},"type":"array"},"execution_base":{"description":"Risk settings every run shares, from the execution config schema. Omitted, platform canon.","type":"object"},"execution_sweeps":{"description":"Execution parameters to search too, each {param: {min, max, n}}. Every one of these multiplies the run count.","type":"object"},"exit_filters":{"description":"Draw exit filters only from these.","items":{"type":"string"},"type":"array"},"exit_triggers":{"description":"Draw an exit trigger only from these. Omitted, no exit signal is drawn at all and runs exit on the risk settings.","items":{"type":"string"},"type":"array"},"include_gapped":{"default":false,"description":"Include windows missing bars. Off by default, because a metric over a half-covered window is not comparable to one over a whole window.","type":"boolean"},"max_total_runs":{"description":"A ceiling on the executed runs, applied by Oracle.","type":"integer"},"param_samples":{"default":3,"description":"How many values each signal parameter contributes. The space is their product, so this is the dial that decides whether the search explores parameters at all; at 1 every candidate runs at a single setting.","type":"integer"},"pre_filter_threshold":{"description":"Skip a drawn candidate the SIEVE model predicts will not trade at all, above this confidence. A will-it-trade gate and nothing about whether it will make money. Omitted, no skipping.","type":"number"},"regimes":{"description":"Market conditions to keep: current, bear, neutral, bull. current means data within the last 30 days, which is recency and not direction. Omitted, every condition.","items":{"type":"string"},"type":"array"},"signal_groups":{"description":"Keep kinds of signal apart. A candidate draws ALL of its signals from ONE group, so two signals in different groups never appear on the same strategy. Runs are split across the groups.","items":{"additionalProperties":false,"properties":{"categories":{"description":"Signal classes whose members belong to it.","items":{"type":"string"},"type":"array"},"exclude":{"description":"Signal names removed from it.","items":{"type":"string"},"type":"array"},"filters":{"additionalProperties":false,"description":"Select which group members may serve as filters. Role selections only narrow the parent membership; they cannot reassign a signal's role.","properties":{"categories":{"items":{"type":"string"},"type":"array"},"exclude":{"items":{"type":"string"},"type":"array"},"include":{"items":{"type":"string"},"type":"array"}},"required":[],"type":"object"},"include":{"description":"Signal names forced in even when their class is not listed.","items":{"type":"string"},"type":"array"},"name":{"description":"What to call the group.","type":"string"},"triggers":{"additionalProperties":false,"description":"Select which group members may serve as triggers.","properties":{"categories":{"items":{"type":"string"},"type":"array"},"exclude":{"items":{"type":"string"},"type":"array"},"include":{"items":{"type":"string"},"type":"array"}},"required":[],"type":"object"},"weight":{"description":"Its share of the strategies drawn. Omitted on every group is an even split.","type":"number"}},"required":[],"type":"object"},"type":"array"},"sweep_name":{"description":"What to call it.","type":"string"},"windows":{"description":"Specific window files to include whatever else is chosen.","items":{"type":"string"},"type":"array"}},"required":["sweep_name"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false},"definitionHash":"23819c024343f12be56a6f53b784b8604db0f1e822670962fe171fd6634f2f65","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"delete_strategy","title":null,"description":"Archive a stopped strategy that has no open positions. Strategies are never hard-deleted: this hides the strategy from the default lists and keeps the strategy and its backtests, and it can be restored with POST /strategies/{id}/unarchive. Use this only when the user explicitly asks to delete or remove a strategy, and say that it was archived, not erased. Always confirm the strategy name and ID first.","inputSchema":{"type":"object","properties":{"strategy_id":{"type":"string"}},"required":["strategy_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"be9702b3b250c1d9fd07c9b681efaf3d40e45aa58168a46709a0642e843527ca","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"evaluate_multiple_signals_series","title":null,"description":"Evaluate chart data and optional signal triggers over a specific range.\n\n[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.]","inputSchema":{"type":"object","properties":{"chart_timeframe":{"default":"1h","description":"Live chart timeframe; dataset mode uses its bundled timeframe","type":"string"},"dataset_key":{"description":"Bundled dataset key; replaces symbol and date range","type":"string"},"end_date":{"description":"Live-mode chart end timestamp; required unless dataset_key is provided","type":"string"},"market_data_venue":{"description":"Live-data exchange; supply with quote_token","type":"string"},"provider":{"description":"Explicit external history provider","type":"string"},"quote_token":{"description":"Live-data quote; supply with market_data_venue","type":"string"},"signals":{"default":[],"description":"Up to 20 registered signals to evaluate","items":{"$ref":"#/definitions/EvaluateMultipleSeriesSignal"},"type":"array"},"start_date":{"description":"Live-mode chart start timestamp; required unless dataset_key is provided","type":"string"},"symbol":{"description":"Live-mode asset symbol; required unless dataset_key is provided","type":"string"}},"definitions":{"EvaluateMultipleSeriesSignal":{"properties":{"name":{"description":"Signal type/name","type":"string"},"params":{"default":{},"description":"Signal parameters; omitted values use registered defaults","type":"object"},"timeframe":{"description":"Timeframe for this signal (5m, 15m, 30m, 1h, 4h, 1D)","type":"string"}},"required":["name"],"type":"object"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"ad18cc6c13d627513620030fba9a36e8242c0a561df29c5f61fab737a982d90b","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"evaluate_signal","title":null,"description":"Evaluate a signal against provided market data and parameters.\n\n[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.]","inputSchema":{"type":"object","properties":{"market_data":{"items":{"$ref":"#/definitions/MarketDataBar"},"type":"array"},"parameters":{"default":{},"type":"object"},"signal_name":{"description":"Signal name","type":"string"}},"required":["market_data","signal_name"],"definitions":{"MarketDataBar":{"properties":{},"type":"object"}}},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"39e9c64fc47484c41e671d44caf6de2469afb5b1ffd2bd29bcc992002a006f31","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"evaluate_strategy","title":null,"description":"Evaluate a strategy against current live market data to check if entry or exit signals are active. 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. Returns the current asset price and any order intents the signals would produce. Use this when the user asks whether a strategy should be entering or exiting right now, or wants to know the live signal state for a specific strategy.","inputSchema":{"type":"object","properties":{"strategy_id":{"type":"string"}},"required":["strategy_id"]},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true},"definitionHash":"fe00025d1456bc51c95138a6e1338b2aee865b23f7ef3d3344d43ab863a6917f","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"find_sweep_runs","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"asset":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"atr_period":{"description":"Only runs that used this ATR period. Needs experiment_id.","type":"integer"},"beats_benchmarks":{"default":false,"description":"Only runs that beat all three benchmarks over the same","type":"boolean"},"beats_crypto_benchmarks":{"default":false,"description":"Only runs that beat the crypto benchmarks rather than only their own asset.","type":"boolean"},"candle_size":{"description":"Duration of one candle, e.g. 1h or 1d.","type":"string"},"cooldown_bars":{"description":"Only runs that used this cooldown. Needs experiment_id.","type":"integer"},"covering":{"description":"Only runs over windows covering this single date, as YYYY-MM-DD. A different question from a span.","type":"string"},"covering_from":{"description":"Only runs whose window OVERLAPS this date onwards. A run is relevant to 2024 if any of it happened in 2024.","type":"string"},"covering_to":{"description":"Only runs whose window overlaps up to this date.","type":"string"},"experiment_id":{"description":"The sweep, as create_sweep returned it.","type":"string"},"generation":{"description":"Only runs from this engine generation, so runs made under different engine behaviour are not compared as though alike.","type":"string"},"limit":{"default":20,"description":"Maximum results.","type":"integer"},"market_direction":{"description":"Only runs from windows of this market character, e.g. bear or mega_bull. Several are one comma-separated string, e.g. \"bull,super_bull\", and a run matching any of them counts. What a run did in one kind of market says little about another.","type":"string"},"max_delta_vs_asset":{"description":"Only runs beating their own asset by at most this much.","type":"number"},"max_delta_vs_benchmark":{"description":"Only runs beating their benchmark by at most this much, so \"between 3 and 8\" is one question rather than a page fetched and thrown away.","type":"number"},"max_irr":{"description":"Only runs at or below this annualised IRR.","type":"number"},"max_return":{"description":"Only runs at or below this total return.","type":"number"},"max_risk_per_trade":{"description":"Only runs that risked this fraction per trade. Needs experiment_id.","type":"number"},"max_sharpe":{"description":"Only runs at or below this Sharpe ratio.","type":"number"},"max_trades":{"description":"Only runs at or below this trade count. Pairs with min_trades to ask for a band rather than a floor.","type":"integer"},"max_win_rate":{"description":"Only runs at or below this win rate.","type":"number"},"min_delta_vs_asset":{"description":"Only runs beating buy-and-hold on their own asset by at least this much.","type":"number"},"min_delta_vs_benchmark":{"description":"Only runs that beat their benchmark by at least this much. A return in a rising market is not skill.","type":"number"},"min_irr":{"description":"Only runs at or above this annualised IRR.","type":"number"},"min_return":{"description":"Only runs at or above this total return.","type":"number"},"min_sharpe":{"description":"Only runs at or above this Sharpe ratio.","type":"number"},"min_trades":{"default":0,"description":"Drop runs with fewer trades than this. Metrics from a handful of trades are noise.","type":"integer"},"min_win_rate":{"description":"Only runs at or above this win rate.","type":"number"},"offset":{"default":0,"description":"Pagination offset in the result units documented by the tool; zero starts the first page.","type":"integer"},"order":{"default":"desc","description":"desc for best-first on that metric, asc for worst-first.","type":"string"},"regime_composite":{"description":"Only runs from windows with this full regime label, e.g. mega_bull_high_clean, when the three parts together matter; several comma-separated, any of them counts. Across different regime filters every one must hold.","type":"string"},"regime_direction":{"description":"The direction band from get_market_regime, e.g. bear. The signal searches filter by it and find_sweep_runs marks each row's regime_fit with it; save_strategy and update_strategy read the current band themselves, so their check runs without it.","type":"string"},"reward_factor":{"description":"Only runs that used this reward-to-risk setting. Execution filters need experiment_id; the cross-sweep surface does not serve them.","type":"number"},"run_index":{"description":"Which run, as find_sweep_runs reported it.","type":"integer"},"run_status":{"description":"Only runs with this outcome, e.g. no_trades for the ones that never opened a position.","type":"string"},"sort_by":{"description":"The metric to order by, e.g. sharpe_ratio, sortino_ratio, irr_annualized, total_return, max_drawdown, total_trades. Required, because the choice IS the question being asked.","type":"string"},"trend":{"description":"Only runs from windows of this trend character, e.g. clean or choppy; several comma-separated, any of them counts.","type":"string"},"trigger_name":{"description":"Only runs whose entry trigger is this signal.","type":"string"},"volatility":{"description":"Only runs from windows of this volatility band, e.g. low; several comma-separated, any of them counts.","type":"string"}},"required":["sort_by"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"4262f21780d736b8ac80011c8d410e2ca868de1378901fcedaa1abce1b46ee57","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_asset","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"symbol":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"}},"required":["symbol"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"7142cf0b2cfbd5830c9ac3258866e4c09064d7cd3485d7f9833eea9aa02b87a1","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_backtest","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"backtest_id":{"description":"The run's UUID, as run_backtest returned it.","type":"string"}},"required":["backtest_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"ff9f1903f84c0bb26faebddff5774d725e887bb0c6cce6200ebbaff3cc55cb5c","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_backtest_trades","title":null,"description":"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: pass offset to read on.\n\n[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.]","inputSchema":{"type":"object","properties":{"backtest_id":{"description":"The run's UUID, as run_backtest returned it.","type":"string"},"limit":{"default":100,"description":"Maximum results.","type":"integer"},"offset":{"default":0,"description":"Pagination offset in the result units documented by the tool; zero starts the first page.","type":"integer"}},"required":["backtest_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"10d57667211d83c638a3866a7aac1eaf15265a9634b9288816a31fc7ae4b82c2","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_benchmark","title":null,"description":"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 includes that completed UTC day; an exact end timestamp is passed through without adding a day.\n\n[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.]","inputSchema":{"type":"object","properties":{"asset":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"base_token":{"description":"Canonical base token; supply with quote_token and market_data_venue.","type":"string"},"end_date":{"description":"ISO end of the window.","type":"string"},"market_data_venue":{"description":"Exact venue of the requested market.","type":"string"},"quote_token":{"description":"Quote currency of the requested market.","type":"string"},"start_date":{"description":"ISO start of the window, e.g. 2026-01-01.","type":"string"}},"required":["asset","end_date","start_date"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"14fe0f58d216645fee4f9169f6e3882607850d925c97e807b9ab3a3fc4b640d7","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_chain_tvl","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"chain":{"description":"Chain name or slug, e.g. ethereum or base.","type":"string"}},"required":["chain"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"a43e7232af13012a635f3890a247ba6a2a009dd3563b3dbe4423e3aa935dffb5","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_etf_flows","title":null,"description":"Crypto ETF net flows -- institutional inflows and outflows for spot BTC and ETH ETFs. Persistent net inflows are a bullish tape signal; heavy outflows bearish. Use it when the user asks about ETF flows, institutional demand or spot ETF activity.\n\n[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.]","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"900919de70a22622a4c0350ff1efdf96bdcafb4b6ed12e1a3959c7448268978e","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_execution_config_schema","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"f840f92a310bef9c4e82d533baae0e072a29ad0b10d2fc1260ba53dc1d5ee73b","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_global_market","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"d315480f71a7409ce252ac2600c9f96ebc2b6457488fe4814a50a3099f77d1b0","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_influence_score","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"username":{"description":"X/Twitter handle, with or without the leading @.","type":"string"}},"required":["username"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"f43c6036f9b09a286728872d0c4bc412d6e2793df7cbc9b5d45bfc37e2bfc13d","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_lending_rates","title":null,"description":"Per-pool borrow rates across DeFi lending protocols such as Aave, Compound and Morpho. Useful for rate-spread arbitrage screens and stablecoin yield analysis. Use it when the user asks about lending rates, borrow costs or DeFi yield.\n\n[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.]","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"a0f2bd899a2bc4cd232a6b3aa85751e9e22cd759b99fafeec371ca114f77eabe","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_market_data","title":null,"description":"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.\n\n[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.]","inputSchema":{"type":"object","properties":{"market_data_venue":{"description":"Exact venue of the requested market.","type":"string"},"provider":{"description":"Optional upstream override; omitted uses the existing server default.","type":"string"},"quote_token":{"description":"Quote currency of the requested market.","type":"string"},"symbol":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"}},"required":["symbol"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"a2817f23cc0cc55cfe7764c9a37b2927b23403f6b6e8e2294feeddcd5af89fcd","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_market_regime","title":null,"description":"Classify an asset's regime using a lookback of 1-365 days of daily closes: the return and a bull/neutral/bear band over 90, 180 and 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.\n\n[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.]","inputSchema":{"type":"object","properties":{"asset":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"lookback_days":{"default":365,"description":"Number of days of history to request.","type":"integer"},"market_data_venue":{"description":"Exact venue of the requested market.","type":"string"},"provider":{"description":"Optional upstream override; omitted uses the existing server default.","type":"string"},"quote_token":{"description":"Quote currency of the requested market.","type":"string"}},"required":["asset"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"6e376391ee4fc1355cbfba0bdba4856ab04630eefcd8aa1b0f483db2779ab1ee","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_marketplace_strategy","title":null,"description":"One marketplace listing in full: its metrics, the signals it is built from (names only; the creator's tuning is never exposed), its backtest summary, and whether it is already in this account. Use it before describing or offering a specific listing, so what you say is what the marketplace holds.\n\n[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.]","inputSchema":{"type":"object","properties":{"strategy_id":{"description":"The strategy's UUID.","type":"string"}},"required":["strategy_id"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"f6e9e7c8c630d916ffd11e5a351ad78cd93e73ca9f80c93119d0cb4c11e2e596","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_ohlcv","title":null,"description":"Daily OHLCV (open, high, low, close, volume) history for one crypto asset over the requested lookback (1-3650 days). 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.\n\n[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.]","inputSchema":{"type":"object","properties":{"lookback_days":{"default":30,"description":"Number of days of history to request.","type":"integer"},"market_data_venue":{"description":"Exact venue of the requested market.","type":"string"},"provider":{"description":"Optional upstream override; omitted uses the existing server default.","type":"string"},"quote_token":{"description":"Quote currency of the requested market.","type":"string"},"symbol":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"}},"required":["symbol"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"ce7a09386d53c623c887edfa20baf3cc94ec2a5709a1979d004c19c00019c8c5","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_onchain_series","title":null,"description":"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. Prefer this over firing many point queries when the user wants a historical or trailing-window view.\n\n[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.]","inputSchema":{"type":"object","properties":{"chain":{"default":"ethereum","description":"Chain name or slug, e.g. ethereum or base.","type":"string"},"date_from":{"description":"ISO date string for the start of the window.","type":"string"},"date_to":{"description":"ISO date string for the end of the window.","type":"string"},"interval":{"default":"1h","description":"Candle size, e.g. 15m, 1h, 4h, 1d.","type":"string"},"metrics":{"description":"Metric names to include in the series.","items":{"type":"string"},"type":"array"},"provider":{"description":"Optional upstream override; omitted uses the existing server default.","type":"string"},"symbol":{"description":"Asset symbol, e.g. BTC or ETH.","type":"string"},"top_n":{"default":10,"description":"Return only the first this many.","type":"integer"}},"required":["metrics","symbol"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"b249658b1924bdcc787f643b7edcd94530aeb30b9ed851e18b2957c8291e4982","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_perp_funding_rates","title":null,"description":"Aggregated DeFi perpetual funding rates across venues. Positive funding means longs are paying to hold; negative means shorts are. Use it when the user asks about perp funding, crowded positioning or leverage bias.\n\n[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.]","inputSchema":{"type":"object","properties":{},"required":[]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true},"definitionHash":"76f9b365536c51afa0c2620069edca46b57f36e8e58641bdaf077a2b5f562dab","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"},{"serverName":"io.github.MangroveTechnologies/mangroveai","endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","name":"get_playground_data","title":null,"description":"Return OHLCV chart data for a specific playground dataset.","inputSchema":{"type":"object","properties":{"dataset_key":{"type":"string"}},"required":["dataset_key"]},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false},"definitionHash":"8d55966a58683a9d807fee96f962b908b90820acde38bcdcf058e2dfaa762faa","schemaStatus":"valid","origin":"official-registry","observedAt":"2026-11-01T17:46:12.455Z","metadataTrust":"untrusted"}],"endpoints":[{"endpointFingerprint":"cae2e9753c160da2b5e3457888059817df0f91cec098382e5e5fa1759b15d554","protocol":"streamable-http","status":"indexed","toolCount":50,"observedAt":"2026-11-01T17:46:12.455Z"}],"authentication":"unknown"},"connectionConfigurations":{"status":"ready","authentication":"not embedded","clients":{"Claude Desktop":{"mcpServers":{"io.github.MangroveTechnologies/mangroveai":{"url":"https://api.mangrovedeveloper.ai/mcp/"}}},"Cursor":{"mcpServers":{"io.github.MangroveTechnologies/mangroveai":{"url":"https://api.mangrovedeveloper.ai/mcp/"}}},"VS Code":{"servers":{"io.github.MangroveTechnologies/mangroveai":{"type":"http","url":"https://api.mangrovedeveloper.ai/mcp/"}}}}},"resourceType":"mcp-server","callable":true,"runtime":{"callable":true,"protocols":["mcp"]},"interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://api.mangrovedeveloper.ai/mcp/"}],"profile":{"apiVersion":"1","schemaVersion":"1","id":"mcp-server:io.github.MangroveTechnologies%2Fmangroveai","resourceType":"mcp-server","canonicalUrl":"https://www.agentsjunction.com/api/v1/servers/io.github.MangroveTechnologies%2Fmangroveai","name":"io.github.MangroveTechnologies/mangroveai","description":"Guardrails for trading agents. Built-in risk management, 100+ tools for strategy R&D, 12+ venues.","interfaces":[{"protocol":"mcp","transport":"streamable-http","url":"https://api.mangrovedeveloper.ai/mcp/"}],"capabilities":[],"identity":{"source":"official-registry","websiteUrl":"https://mangrove.ai/agents/","repositoryUrl":"https://github.com/MangroveTechnologies/mangrove-agent","version":"1.0.2"},"verification":{"state":"official","confidence":100},"operations":{"resourceType":"mcp-server","name":"io.github.MangroveTechnologies/mangroveai","status":"online","lastCheckedAt":"2026-11-03T18:18:16.121Z","lastSuccessfulCheck":"2026-11-03T18:18:16.121Z","latencyMs":80,"consecutiveFailures":0,"isStale":false,"checks":{"endpointReachable":true,"protocolValid":true,"agentCardValid":null,"mcpHandshakeValid":true},"lastSeen":null,"lastSuccessfulInteraction":null,"lastHealthCheck":"2026-11-03T18:18:16.121Z","source":{"type":"health-check","url":null},"observedAt":"2026-11-03T18:18:16.121Z"},"security":null,"timestamps":{"createdAt":"2026-11-02T16:59:57.929Z","updatedAt":"2026-11-02T16:59:57.929Z","observedAt":"2026-11-03T18:18:16.121Z"},"compatibility":{"serverVersion":"1.0.2","protocolVersions":[{"protocol":"mcp","version":null}]}}}}