Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MangroveAI

REMOTE · API.MANGROVEDEVELOPER.AI

Backtest and paper-trade crypto strategies. Free API key or pay per call in USDC (x402).

62 Trust /100

Last scanned (19 minutes ago)

Scores higher than 46% of remote servers

Reachable. Last reached 23 Oct 2026.

Category Crypto and Web3

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security63
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 16545 tokens (~217/item across 76 items; 76 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management3
  • Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_strategy" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 76 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 +1
    • Stability: unverified → 0.03 ▲ functional
  • 22 Oct 26 61

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 23 Oct 2026 · Probed https://api.mangrovedeveloper.ai/mcp/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=api.mangrovedeveloper.ai CN=WR3,O=Google Trust Services,C=US 25 Sept 2026 24 Dec 2026 RSA 2048 SHA256-RSA aae04edd20fa9b940ab5455cdb70a4bd
SANs: api.mangrovedeveloper.ai
CN=WR3,O=Google Trust Services,C=US (CA) CN=GTS Root R1,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 RSA 2048 SHA256-RSA 7ff005a91568d63abc22861684aa4b5a
CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 19 Jun 2020 28 Jan 2028 RSA 4096 SHA256-RSA 77bd0d6cdb36f91aea210fc4f058d30d

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.mangrovedeveloper.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 3799 8 Verified
mangrovedeveloper.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff
x-frame-options DENY
referrer-policy same-origin

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.mangrovedeveloper.ai/mcp/ Verified 200
http (plaintext) http://api.mangrovedeveloper.ai/mcp/ HTTPS enforced 301 https://api.mangrovedeveloper.ai:443/mcp/
MCP tools · 76 exposed · ~16,545 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
kb_search ~226

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.

NameTypeReqDescription
expandboolean–Whether to expand synonyms; ignored when tags are set.
limitinteger–Maximum results.
qstringyesThe search text, in ordinary words.
tagstring–Restrict to one tag category; disables synonym expansion.
tagsarray–Restrict to any of these tag categories; cannot combine with tag.

No output schema declared.

No examples provided.

list_approved_assets ~118

List assets approved by Mangrove, including supported stablecoins and tokens. 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.]

NameTypeReqDescription
top_ninteger–Return only the first this many.

No output schema declared.

No examples provided.

list_backtest_markets ~103

List available execution venue and quote-token choices for a backtest. Use when the user wants alternatives or market details are missing. A complete supplied or recorded market is already the default: do not force a selection step. If missing details must be matched, suggest an available match and obtain confirmation before saving or running. Availability here does not guarantee historical coverage; submission checks the chosen window.

NameTypeReqDescription
assetstringyesAsset symbol, e.g. BTC or ETH.

No output schema declared.

No examples provided.

list_backtests ~156

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.]

NameTypeReqDescription
limitinteger–Maximum results.
strategy_idstring–The strategy's UUID.

No output schema declared.

No examples provided.

list_evaluations ~113

Bar-by-bar decision log for a strategy — every time the agent checked signals for this strategy. Returns per-evaluation market snapshot, signal decisions, order intents generated, and whether the evaluation succeeded or errored. Use this when the user asks 'what did the agent decide', 'why did it not trade', 'show me the agent evaluation history', or 'when did the agent last check this strategy'.

NameTypeReqDescription
limitinteger––
offsetinteger––
strategy_idstringyes–

No output schema declared.

No examples provided.

list_exchanges ~97

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.]

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_playground_datasets ~20

Return metadata for all available playground CSV datasets.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_positions ~80

List open (or all) positions for the current user. Optionally filter by strategy ID or asset. Use this when the user asks about their current positions, open trades, or what they are currently holding.

NameTypeReqDescription
assetstring––
limitinteger––
open_onlyboolean––
strategy_idstring––

No output schema declared.

No examples provided.

list_signal_labels ~26

Every signal's friendly name, display name and short description, keyed by code name.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_signals ~214

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. [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.]

NameTypeReqDescription
categorystring–Filter by category (momentum, trend, volume, volatility, patterns, onchain)
limitinteger–Page size: default 30, maximum 30. Larger requests are capped; use next_offset to continue.
offsetinteger–Pagination offset
regime_directionstring–Filter to signals admissible for a regime band (mega_bull, super_bull, bull, neutral, bear, super_bear, mega_bear)
rolestring–Filter by the part a signal plays in a strategy (TRIGGER or FILTER)

No output schema declared.

No examples provided.

list_strategies ~84

List the strategy definitions saved HERE, in this service -- drafts and backtested strategies authored through chat. This store never knows deployment state: for what the user is actually running (live or paper deployments, balances, PnL), use list_platform_strategies instead. Returns id, name, asset and status for each.

NameTypeReqDescription
limitinteger–Maximum results.

No output schema declared.

No examples provided.

list_trades ~270

The trades a person's strategies have closed -- what was made or lost on each, why it exited, and what the fees and slippage cost. For a platform account overview and last-trade times use list_platform_strategies; platform detail requires strategy_id. Use this for what actually happened: 'how am I doing', 'what did it trade', 'why did it sell', 'has it made money'. Pass strategy_id for one strategy's record. THESE ARE REAL TRADES, not a backtest -- never mix them with backtest metrics in one number, and say which you are quoting. Every trade carries fee_cost, slippage_cost and gas_cost; a profit or loss quoted without them reads as though trading were free. Passing strategy_id takes precedence -- asset and outcome are not applied alongside it. [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.]

NameTypeReqDescription
assetstring–Asset symbol, e.g. BTC or ETH.
limitinteger–Maximum results.
outcomestring–Only "win" or only "loss".
strategy_idstring–The strategy's UUID.

No output schema declared.

No examples provided.

load_skill ~197

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.

NameTypeReqDescription
resourcestring–One file the skill carries, by name, as `resources` lists them.
sectionstring–One section of it, by heading. Omit for the whole skill.
skillstringyesWhich skill, by the name the turn announced.

No output schema declared.

No examples provided.

match_signals ~144

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.]

NameTypeReqDescription
descriptionstringyesNatural language description of the desired signal/rule
regime_directionstring–Market regime band
rolestring–Signal role
similarity_thresholdnumber–Minimum similarity score to include
top_kinteger–Number of matches to return
user_intentobject–Optional intent dict (e.g., from intent extractor)

No output schema declared.

No examples provided.

query_knowledge ~1,237

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: f…

NameTypeReqDescription
boundedboolean–outputs: only values with a fixed range.
directionstring–neighbors: in = what reads this, out = what this depends on.
hopsinteger–ask: how far to walk from each match. 0 restricts it to retrieval. Capped at 3; a higher value raises ValueError naming the cap.
kindstring–The class: what a computation measures.
limitinteger–Maximum results.
max_depthinteger–path, paths: how long a route may be. path defaults to 6; paths defaults to 4 and is capped at 4 -- past that almost every extra route is a detour through a hub rather than an explanation.
max_nodesinteger–walk: stop expanding once this many nodes are collected.
opstringyesWhich question you are asking.
paramstring–find: a parameter name -- every signal that takes it.
primitivestring–neighbors: keep only neighbours of this node primitive, e.g. Procedure or Concept.
qstring–The search text, in ordinary words.
radiusinteger–walk: how many hops out the neighbourhood reaches. Capped at 3; for anything wider call neighbors or path instead of a bigger radius.
relationstring–neighbors: follow only this one relation.
relation_categorystring–neighbors: follow only edges of this whole relation category (structural, descriptive, associative, meta) -- see stats for the list.
relationsarray–path, paths, ask: follow only these relations.
requiresstring–An input column it needs.
rolestring–The part a signal plays in a strategy.
seedsinteger–ask: how many top matches to expand from before re-ranking.
sibling_hopsboolean–paths: include routes that pass through a shared parent (both nodes are, say, Signal) rather than a direct connection. Off by default -- those routes are usually not the explanation.
statusstring–Whether the thing is current or withdrawn.
tostring–path, paths: the destination node.
unitsstring–The unit an output is measured in.
whystring–neighbors, walk, ask: keep only edges whose own stated reason matches these words -- the same relation can carry different claims.

No output schema declared.

No examples provided.

query_signal_behavior ~440

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.]

NameTypeReqDescription
categorystring–find: restrict to one family, e.g. oscillator, volatility, momentum
limitinteger–Maximum results, 1-100
lookupstringyesdescribe: one signal -- parameter meanings, measured span, what its default measures. pick: settings of one signal that hit target_rate. find: which signals reach a rate band. gap_probability: share…
max_gap_barsnumber–pick/find, TRIGGER only: median gap at most this many bars
max_gap_range_barsnumber–gap_probability: high end of the gap range, inclusive (required)
max_ratenumber–find: high end of the band, same units (required)
max_run_barsnumber–pick/find, FILTER only: mean run at most this many bars
min_gap_barsnumber–pick/find, TRIGGER only: median gap at least this many bars
min_gap_range_barsnumber–gap_probability: low end of the gap range, inclusive (required)
min_ratenumber–find: low end of the band, same units (required)
min_run_barsnumber–pick/find, FILTER only: mean run at least this many bars
signalstring–Signal name, e.g. rsi_oversold. Required by describe, pick, gap_probability
signal_typestring–FILTER (an ongoing state) or TRIGGER (a one-bar event); measured separately
target_ratenumber–pick: rate to aim for -- FILTER selectivity 0-1, TRIGGER firings per 1,000 bars. Omit to list the span

No output schema declared.

No examples provided.

run_backtest ~487

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. [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.]

NameTypeReqDescription
acknowledge_defaultsboolean–Pass True to submit even though signal parameters are at their library defaults -- an explicit statement that the defaults were considered and stood by, never a way to skip considering them.
end_datestringyesISO end of the window.
engine_generationinteger–Only set when the person specifies an engine generation; omitted uses latest.
market_data_venuestring–Exact venue of the requested market.
quote_tokenstring–Quote currency of the requested market.
start_datestringyesISO start of the window, e.g. 2026-01-01.
strategy_idstringyesThe strategy's UUID.

No output schema declared.

No examples provided.

save_strategy ~772

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 ONLY for values the person actually stated: they are kept exactly as given, while everything else comes from canon. 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.]

NameTypeReqDescription
assetstringyesAsset symbol, e.g. BTC or ETH.
constraintsobject–Execution values the person stated, e.g. {"max_risk_per_trade": 0.01}. Each is kept exactly as given rather than nudged.
entry_signalsarray–The signals that open a position. Exactly one must be a TRIGGER in the knowledge graph; the rest are FILTERs.
exit_signalsarray–The signals that close one, same shape. A strategy may have none, and then it exits on risk rules alone.
market_data_venuestring–Exact venue of the requested market.
quote_tokenstring–Quote currency of the requested market.
regime_directionstring–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…
regime_overrideboolean–Save anyway when the regime check refuses. Only ever on the person's explicit say-so, after they have been told why.
source_config_hashstring–The selected row's config_hash, as find_sweep_runs reported it. Pass it with the other two: a relaunched sweep can give one run_index to several runs, and without it such an index is refused.
source_experiment_idstring–For a sweep pick, its experiment ID. Supply with source_run_index. The stored run supplies the exact signals and execution settings. With no market given, it saves on the run's corpus market, or on t…
source_run_indexinteger–The selected sweep row, including zero.
strategy_namestringyesWhat to call it, in plain words a person reads -- the entry trigger's friendly_name from the knowledge graph, then the asset and timeframe, e.g. "Upside Range Breakout - BTC 1h". Never a code name su…

No output schema declared.

No examples provided.

screen_candidates ~293

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.]

NameTypeReqDescription
assetstringyesAsset symbol, e.g. BTC or ETH.
candidatesarrayyesEach {entry: [{name, params?, timeframe?}], exit: [...]}.

No output schema declared.

No examples provided.

screen_smart_money ~161

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.]

NameTypeReqDescription
chainsarray–Optional list of chains to include.
limitinteger–Maximum results.
timeframestring–Aggregation window, e.g. 24h, 7d.

No output schema declared.

No examples provided.

search_marketplace ~823

Search the public strategy marketplace -- the platform's own listings, which are digital-asset strategies on crypto pairs -- over every dimension the marketplace page filters on: free text, asset, timeframe, risk level, floors on return, IRR, Sharpe, Sortino, Calmar, gain-to-pain, win rate, trade count and trades per week, a drawdown ceiling, free-only, beats-benchmarks, the market regime the listing was backtested in, and any sort key. Every filter is applied by the platform; do not fetch a page and filter it yourself. Counts cover the platform's own listings; the marketplace page also merges NexusTrade partner listings, which are not searchable or adoptable here -- say so plainly when a total is compared with the page, never guess at caching or filters. Use it whenever the person wants strategies to try, compare, or adopt -- 'find me a', 'what is on the marketplace', 'best Sharpe on ETH'. To adopt one, call propose_adopt with its strategy_id; never tell the person a strategy is theirs off the back of a search. [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.]

NameTypeReqDescription
assetstring–Asset symbol, e.g. BTC or ETH.
asset_classarray–Keep listings in these asset classes. Platform listings are all digital_assets; stocks, options and futures exist only as NexusTrade partner listings the chat cannot reach.
backtest_directionstring–Keep listings backtested in this market direction, e.g. bull, neutral or bear -- the band get_market_regime reports; or unclassified.
backtest_trendstring–Keep listings backtested in this trend character, e.g. clean, choppy; or unclassified.
backtest_volatilitystring–Keep listings backtested in this volatility band, e.g. low, medium, high; or unclassified.
beats_all_benchmarksboolean–Keep only listings whose return beat BTC, ETH and the S&P over their own window.
candle_sizestring–Duration of one candle, e.g. 1h or 1d.
free_onlyboolean–Keep only listings with no subscription price.
limitinteger–Maximum results.
max_drawdown_pctnumber–Keep listings whose max drawdown is at or below this, in percent.
min_calmar_rationumber–Keep listings at or above this Calmar ratio.
min_gain_to_pain_rationumber–Keep listings at or above this gain-to-pain ratio.
min_irr_pctnumber–Keep listings at or above this annualised IRR, in percent.
min_sharpe_rationumber–Keep listings at or above this Sharpe ratio.
min_sortino_rationumber–Keep listings at or above this Sortino ratio.
min_total_return_pctnumber–Keep listings at or above this total return, in percent.
min_total_tradesinteger–Keep listings with at least this many trades.
min_trades_per_weeknumber–Keep listings trading at least this often, per week.
min_win_rate_pctnumber–Keep listings at or above this win rate, in percent.
offsetinteger–Pagination offset in the result units documented by the tool; zero starts the first page.
orderstring–desc for best-first on that metric, asc for worst-first.
risk_levelarray–Keep listings at any of these risk levels, e.g. low, medium, high.
searchstring–Free text matched against listing name, description and creator.
sortstring–The column to order by. Omitted, the marketplace's trending order.

No output schema declared.

No examples provided.

search_signals ~133

Search signal names, parameters or description keywords. [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.]

NameTypeReqDescription
categorystring–Signal library module
limitinteger–Maximum results
offsetinteger–Pagination offset
querystringyesSearch query string
regime_directionstring–Market regime band
rolestring–Signal role
search_typestring–Type of search

No output schema declared.

No examples provided.

update_strategy ~439

Change a DRAFT strategy in place: its signals, their parameters, or a stated execution value. 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.]

NameTypeReqDescription
constraintsobject–Execution values the person stated, e.g. {"max_risk_per_trade": 0.01}. Each is kept exactly as given rather than nudged.
entry_signalsarray–The signals that open a position. Exactly one must be a TRIGGER in the knowledge graph; the rest are FILTERs.
exit_signalsarray–The signals that close one, same shape. A strategy may have none, and then it exits on risk rules alone.
regime_directionstring–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…
regime_overrideboolean–Save anyway when the regime check refuses. Only ever on the person's explicit say-so, after they have been told why.
strategy_idstringyesThe strategy's UUID.
strategy_namestring–What to call it, in plain words a person reads -- the entry trigger's friendly_name from the knowledge graph, then the asset and timeframe, e.g. "Upside Range Breakout - BTC 1h". Never a code name su…

No output schema declared.

No examples provided.

update_strategy_status ~79

Update the status of a strategy. Valid statuses: draft, inactive, paper, live, archived. Use this when the user wants to activate, pause, archive, or promote a strategy (e.g. 'pause my BTC strategy', 'archive the old ETH strategy').

NameTypeReqDescription
new_statusstringyes–
strategy_idstringyes–

No output schema declared.

No examples provided.

validate_signal_params ~78

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.]

NameTypeReqDescription
parametersobject––
signal_namestringyesSignal name

No output schema declared.

No examples provided.

verify_strategy ~200

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.]

NameTypeReqDescription
strategy_idstringyesThe strategy's UUID.

No output schema declared.

No examples provided.

Install

How do I install the MangroveAI MCP server?

MangroveAI is a hosted endpoint at https://api.mangrovedeveloper.ai/mcp/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · api.mangrovedeveloper.ai

# add to Claude Code
claude mcp add --transport http mangrovetechnologies-mangroveai 'https://api.mangrovedeveloper.ai/mcp/'
Common questions

What is the MangroveAI MCP server?

MangroveAI is an MCP server listed in the public MCP registry as io.github.MangroveTechnologies/mangroveai. Backtest and paper-trade crypto strategies. Free API key or pay per call in USDC (x402). This page covers its hosted endpoint (https://api.mangrovedeveloper.ai/mcp/).

Is the MangroveAI MCP server safe to use?

MangroveAI scores 62 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MangroveAI MCP server expose?

MangroveAI exposes 76 tools: delete_strategy, update_strategy_status, get_trades_for_strategy, list_positions, evaluate_strategy, and 71 more. Their descriptions and schemas cost roughly 16,545 tokens of context every time the server is loaded.

Does the MangroveAI MCP server require authentication?

No. We connected to MangroveAI without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the MangroveAI MCP server still maintained?

MangroveAI is still listed as active in the MCP registry. We last reached this channel on 23 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.