NexusTrade Financial MCP
REMOTE · NEXUSTRADE.IO
Quant research, backtesting, marketplace subscriptions, editable forks, copy trading, and execution.
Available components
Last scanned (10 hours ago)
Scores higher than 19% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
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 Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
Checks we ran (5)
- TLS certificate
- Authorization
- HTTPS
- HSTS header
- DNSSEC
Checks we could not complete (6)
These are gaps on our side, not findings about this hosted endpoint. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Transport in Transport & Reachability (scores 0 for this)Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http.
- Schema quality in Schema Quality & AI Usability (scores 0 for this)Schema blocked by authentication: the endpoint requires auth we don't have to read it.
- Stability in Stability & Change Management (scores 0 for this)Stability not yet verified: not enough scan history yet (needs a 30-day window).
- Tool coverage in Tool Coverage (scores 0 for this)Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.
- Tool safety in Tool Safety (scores 0 for this)Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.
- Capabilities in Capabilities (scores 0 for this)Capabilities blocked by authentication: the endpoint requires auth we don't have to read them.
Does not apply to this hosted endpoint (2)
- Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
- Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
The score does not measure everything. What the score does not measure →
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.
- 29 Sept 26 0
- Endpoint reachability: reachable → behind authorisation ▼ security
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 0
- Tool “create_portfolio_variant” rewrote its description, which is the text the model reads security
- “create_portfolio_variant” reworded the description of “dry_run” cosmetic
- “create_portfolio_variant” reworded the description of “patches” cosmetic
- 26 Sept 26 0
- Injection markers: unverified → pass ▲ security
- Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 25 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. security
- Tool “create_portfolio” rewrote its description, which is the text the model reads security
- Tool “create_portfolio_variant” rewrote its description, which is the text the model reads security
- Tool “update_portfolio” rewrote its description, which is the text the model reads security
- Stability: unverified → 0.47 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- “build_portfolio” added an optional parameter “policy” cosmetic
- “create_portfolio” added an optional parameter “policy” cosmetic
- “create_portfolio_variant” reworded the description of “dry_run” cosmetic
- “create_portfolio_variant” reworded the description of “patches” cosmetic
- “update_portfolio” reworded the description of “operations” cosmetic
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 0
- Tool “create_agent” rewrote its description, which is the text the model reads security
- Tool “create_portfolio_variant” rewrote its description, which is the text the model reads security
- “create_portfolio_variant” reworded the description of “dry_run” cosmetic
- “create_portfolio_variant” reworded the description of “patches” cosmetic
- 23 Sept 26 0
- Injection markers: unverified → pass ▲ security
- Authorization: Authorisation not fully verified: no authorisation is required to call this server, and 25 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. security
- Tool “create_agent” rewrote its description, which is the text the model reads security
- Tool “create_portfolio_variant” rewrote its description, which is the text the model reads security
- Endpoint reachability: behind authorisation → reachable ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.37 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- “create_portfolio_variant” reworded the description of “dry_run” cosmetic
- “create_portfolio_variant” reworded the description of “patches” cosmetic
- 22 Sept 26 0
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: 0.30 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the whole tool list to see what that exposes. security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://nexustrade.io/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=nexustrade.io | CN=WE1,O=Google Trust Services,C=US | 28 Sept 2026 | 27 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 81133fe8006c33340efada275e598670 |
| SANs: nexustrade.io, *.nexustrade.io | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of nexustrade.io. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | Trust anchor | 20326, 38696 | 8, 8 | Verified |
| io. | DS published | 38690 | 8 | Verified |
| nexustrade.io. | No DS | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer realm="mcp", resource_metadata="https://nexustrade.io/.well-known/oauth-protected-resource/api/mcp"
Bearer realm="mcp", resource_metadata="https://nexustrade.io/.well-known/oauth-protected-resource/api/mcp" | Header | Value |
|---|---|
| www-authenticate | Bearer realm="mcp", resource_metadata="https://nexustrade.io/.well-known/oauth-protected-resource/api/mcp" |
Protected resource metadata
| Document | https://nexustrade.io/.well-known/oauth-protected-resource/api/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://nexustrade.io/api/mcp |
| Authorisation server | https://nexustrade.io |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://nexustrade.io/api/mcp | Auth required | 401 | |
| http (plaintext) | http://nexustrade.io/api/mcp | HTTPS enforced | 301 | https://nexustrade.io/api/mcp |
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 →
approve_agent_plan ~133
⚠ INDIRECTLY COSTS LLM CREDITS — approving the plan unfreezes the agent which then runs more planning + execution LLM calls. Manual approval required; do NOT call unless the user explicitly told you to advance their Aurora agent. Approve a semi-automated agent that is waiting in pending_plan_approval or pending_action_approval. Auto-detects which approval the agent needs and emits the matching state-machine event so the agent resumes execution. Returns 400 if the agent is not in a pending-approval state.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | yes | MongoDB agent _id to approve |
No output schema declared.
No examples provided.
archive_agent ~100
Aurora agent surface (no LLM cost — pure DB write). Only relevant when managing Aurora agents. Archive an agent (soft-delete). The agent remains in the database but is hidden from default listings. Address by agentId OR exact title (XOR).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id to archive (XOR with title) |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId) |
No output schema declared.
No examples provided.
backtest_portfolio ~683
Submit an asynchronous historical backtest for a portfolio over a date range. Minute interval: first-look default is the last 90 inclusive calendar days; the selected range plus minute-indicator warmup cannot exceed 730 days of minute data, so a multi-year Minute window up to that span is allowed — do not emit 2010, and never split a longer span into yearly Minute jobs. Daily equity may use a long window. Set baseline_symbol to match the book — underlying ticker for single-name options (AAPL→AAPL), per-underlying baselines or equal-weight universe B&H for multi-name options; SPY only for broad equity. Returns a backtest ID immediately; poll query_backtest_status, then query_backtest_history (zero-LLM). Aurora may also use Read Backtest for an LLM narrative once complete.
| Name | Type | Req | Description |
|---|---|---|---|
| baseline_symbol | string | – | Benchmark for comparisonValue (buy-and-hold of this ticker). Defaults to SPY if omitted — use SPY only for broad equity/market strategies. For single-name options, set to that underlying (AAPL option… |
| end_date | string | yes | Backtest end date (ISO format, e.g. 2024-12-31). Minute allows up to 730 days of minute data from start_date, counting minute-indicator warmup; never split a longer span into yearly Minute jobs. |
| fee_config | object | – | Optional fee contract keyed by AssetTypeEnum (Stock/Cryptocurrency/Option) with {amount, type: percent|dollars}. Omit for shared defaults (Option $0.65/contract). For replay of an optimizer/walk-forw… |
| generate_events | boolean | – | Generate detailed event data (signals, orders, audits) during backtest. Costs 5x research tokens. Events are Mongo hot-store traces retained for 3 days. Use query_backtest_events to explore them whil… |
| initial_value | number | – | Starting portfolio value (default 10000) |
| interval | string | – | Time interval: Day or Minute (default Day). Minute is a daytrade tape. 730 days of minute data (selected range plus warmup) is the HARD CAP; 90 days is only the DEFAULT when you name no dates. Name t… |
| portfolio_id | string | – | Portfolio ID (live, paper, or chat — from fetch_portfolios or create_portfolio). Server resolves the collection automatically. |
| start_date | string | yes | Backtest start date (ISO format, e.g. 2024-01-01). For interval=Minute, default first-look is the last 90 inclusive calendar days and the selected range plus minute-indicator warmup cannot exceed 730… |
No output schema declared.
No examples provided.
build_portfolio ~606
Preview/builder twin of create_portfolio. Runs the SAME construction + per-strategy validation (Portfolio/Strategy/Condition/Indicator) as create_portfolio but PERSISTS NOTHING. Accepts the same IPortfolio JSON (all fields optional so partial drafts can be checked). Returns the canonicalized portfolio plus a per-component issue list (path + component + message) so you can see exactly which strategy/condition/indicator is wrong before committing. A draft that previews clean cannot fail on create_portfolio. Zero research token cost. Custom data sources: none yet. Create one with run_compute (pass name and point_kind to promote its signal output directly), or use dataset_to_indicator with a saved dataset; then reference customIndicatorId in create_portfolio.
| Name | Type | Req | Description |
|---|---|---|---|
| alertsEnabled | boolean | – | – |
| initialValue | number | – | Starting cash (default 10000). Use 0 for agent-only / LaunchAgent portfolios that never trade capital. |
| main | boolean | – | Mark as main portfolio (optional). |
| message | string | – | OPTIONAL natural-language fallback. If provided WITHOUT name/strategies, the server runs a paid LLM to translate NL→portfolio. Prefer the structured fields (no LLM cost). |
| name | string | – | Portfolio name (required). |
| policy | object | – | OPTIONAL. Which stocks the portfolio's dynamic universes may select. Only stockEligibility is accepted; omitted fields take the defaults. Automated trading can never be set here: it starts off and on… |
| strategies | array | – | Array of strategies. Each strategy is { name, condition, action, orderExecution? }. RebalanceOption actions may include action.positionScope (portfolio | strategy). Optional strategy-level `orderExec… |
| supportsCrypto | boolean | – | – |
| supportsFractionalShares | boolean | – | – |
No output schema declared.
No examples provided.
clone_strategies_to_portfolio ~297
Replace a deployed (paper/live) portfolio's entire strategy set with deep copies of a source portfolio's strategy objects (by reference, not YAML). Source is a chat or deployed portfolio; the target MUST be a real deployed portfolio (chat portfolios are immutable and cannot be a target). Use this to deploy a chat portfolio's strategies onto a live/paper portfolio without re-describing them. Do NOT automatically backtest after clone — only backtest when the user asked for research validation. The source's prior backtest does not validate the target (different objects), but deploy-only asks should stop at clone/deploy.
| Name | Type | Req | Description |
|---|---|---|---|
| preserve_existing | boolean | – | When true, APPEND the source strategies to the target's existing strategy set instead of replacing it. Existing strategies (and their open system orders) are kept untouched — useful when the target h… |
| source_portfolio_id | string | – | Source portfolio ID (live, paper, or chat) to copy strategies FROM. |
| target_portfolio_id | string | yes | Deployed portfolio ID (from fetch_portfolios — paper or live) whose strategy set will be REPLACED by default. Keeps its identity, brokerage, deployment, and history. Must be a real portfolio; chat po… |
No output schema declared.
No examples provided.
create_agent ~502
⚠ COSTS LLM CREDITS on the NexusTrade account — spins up an Aurora agent via Router V5 classification + ReAct execution loops, billed per token. **Manual approval required**: do NOT call unless the user explicitly asked to launch an Aurora agent. For strategy creation/backtesting/analysis prefer no-LLM tools: structured create_portfolio (pass full IPortfolio JSON), backtest_portfolio, query_backtest_history, query_*, fetch_portfolios. Create a new autonomous Aurora agent using the same body shape as POST /api/agent. When maxIterations or automationMode are omitted, applies the user's saved ChatSettings. Agent models are product-locked (openai/gpt-5.6-luna planner, openai/gpt-6-luna executor, and the platform tool-role defaults) and cannot be overridden. Pass attachment_ids from upload_chat_attachment (READY) to bind files onto the last user message — same as the web FILES tab. Use this for a method-brief PDF plus a short analyze/report request.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_ids | array | – | READY chat-attachment ids from upload_chat_attachment. Bound onto the last user message as fileAttachments (same refs as the web FILES tab). |
| automationMode | string | – | automated | semi-automated. When omitted, uses ChatSettings.agentAutomationMode. |
| conversationId | string | – | Optional NexusGenAI conversation id |
| idempotencyKey | string | – | Caller-chosen token that makes this create retry-safe. Creation runs the router and the planner and regularly takes longer than the transport will wait, so a call that times out has usually SUCCEEDED… |
| maxIterations | number | – | Max agent iterations. When omitted, uses the user's saved ChatSettings.agentIterations (same as the web UI). |
| messages | array | – | ChatMessage array, e.g. [{"sender":"User","content":"..."}] |
| session_depth | string | – | Deprecated compatibility field. Both values use Aurora's adaptive routing policy. |
| title | string | – | Optional user-assigned display name for the new agent (max 100 chars). Enables later lookup via title on get_agent / send_agent_message / etc. |
No output schema declared.
No examples provided.
create_portfolio ~726
Create an algorithmic trading portfolio. **PREFERRED PATH (no LLM cost): pass a fully-structured IPortfolio JSON payload** — see inputSchema for name + strategies[] with nested condition/action/indicator objects and optional strategy-owned orderExecution. DynamicRebalance.deploymentPercent and RebalanceOption.totalBudget.amount are indicator objects: use Value for a constant or PoliticalPurchaseShare with a Bioguide memberId, instrument Equity/Option, and amountBasis Midpoint for a dynamic purchase mix. RebalanceOption.sizingMode proportionalToWeight sizes names by positive weightIndicator values. Omit orderExecution for the explicit Market default; true waiting Limits use UnitPrice for shares/crypto or MinimumNetCredit/MaximumNetDebit for options, whose amount may be an indicator (such as OptionSpreadEntryPrice plus a Value) evaluated when the strategy fires. CustomIndicator nodes MUST include customIndicatorId from list_custom_indicators. Validate without saving by calling build_portfolio with the same JSON first. Fallback NL path `{ message: "..." }` costs LLM credits and should only be used when structured JSON is impractical. Custom data sources: none yet. Create one with run_compute (pass name and point_kind to promote its signal output directly), or use dataset_to_indicator with a saved dataset; then reference customIndicatorId in create_portfolio.
| Name | Type | Req | Description |
|---|---|---|---|
| alertsEnabled | boolean | – | – |
| initialValue | number | – | Starting cash (default 10000). Use 0 for agent-only / LaunchAgent portfolios that never trade capital. |
| main | boolean | – | Mark as main portfolio (optional). |
| message | string | – | OPTIONAL natural-language fallback. If provided WITHOUT name/strategies, the server runs a paid LLM to translate NL→portfolio. Prefer the structured fields (no LLM cost). |
| name | string | yes | Portfolio name (required). |
| policy | object | – | OPTIONAL. Which stocks the portfolio's dynamic universes may select. Only stockEligibility is accepted; omitted fields take the defaults. Automated trading can never be set here: it starts off and on… |
| strategies | array | yes | Array of strategies. Each strategy is { name, condition, action, orderExecution? }. RebalanceOption actions may include action.positionScope (portfolio | strategy). Optional strategy-level `orderExec… |
| supportsCrypto | boolean | – | – |
| supportsFractionalShares | boolean | – | – |
No output schema declared.
No examples provided.
create_portfolio_variant ~242
Deep-copy a source chat or deployed portfolio into a new ChatPortfolio with fresh strategy IDs. Omit patches for a clone-only draft, or apply JSON-Pointer patches (replace/add/remove) for surgical edits. Atomic: unresolved patch paths are hard errors. dry_run validates without persisting. Zero research token cost.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | true → resolve + diff + validate, persist nothing. |
| name | string | yes | Required new portfolio name. |
| patches | array | – | Optional RFC6902-style ops against canonical IPortfolio JSON. Omit or pass [] for an exact semantic clone. Sizing fields are action-type-specific: DynamicRebalance uses /strategies/N/action/deploymen… |
| source_portfolio_id | string | yes | Source portfolio ID (live, paper, or chat) to deep-copy. |
No output schema declared.
No examples provided.
create_portfolio_variant ~310
Deep-copy a source portfolio (chat OR deployed) into a NEW chat portfolio with fresh strategy IDs and no YAML/NL re-authoring. Use this when an existing portfolio must remain the exact semantic baseline. Omit patches (or pass []) for a clone-only control; supply RFC-6902 JSON-Pointer patches (op/path/value) only for deliberate surgical changes. Patch paths target the IPortfolio shape and are action-type-specific: DynamicRebalance cash/deploy → `/strategies/0/action/deploymentPercent` (indicator returning 0–100; use Value for a constant); RebalanceOption book budget → `/strategies/0/action/totalBudget/amount` (indicator). PoliticalPurchaseShare with memberId and instrument Equity or Option gives the dynamic disclosed purchase mix; RebalanceOption sizingMode proportionalToWeight divides its budget by positive weightIndicator values. Never put totalBudget on DynamicRebalance or deploymentPercent on RebalanceOption. Requires source_portfolio_id and name. Pass dry_run:true to validate without persisting. Result is an independent chat portfolio; backtest it to evaluate.
| Name | Type | Req | Description |
|---|---|---|---|
| dry_run | boolean | – | Resolve, diff and validate without persisting. |
| name | string | yes | Required new portfolio name. |
| patches | array | – | RFC6902-style ops against canonical IPortfolio JSON. Omit or pass [] for an exact semantic clone. |
| source_portfolio_id | string | yes | Source portfolio ID (live, paper, or chat) to deep-copy. |
No output schema declared.
No examples provided.
fetch_portfolios ~435
List or search your portfolios with lightweight metadata (strategy id + name). Matches portfolio name, strategy names, and tickers — same workspace search as the dashboard / GET /api/chat-portfolio. include_chat_portfolios returns workspace DRAFTS only (excludes deployedMirror rows). Recover a past chat draft: include_paper=false, include_live=false, include_chat_portfolios=true, search="Delta 0.07" (then get_portfolio for full strategy JSON). Returns an object: { portfolios, page, limit, total, totalPages, scopes }. Deployed and draft rows page as one list (all deployed, then all drafts), so every row is reachable by walking pages. When search is set, include_positions defaults to false. Use analyze_portfolios only when you need LLM-written analysis.
| Name | Type | Req | Description |
|---|---|---|---|
| include_chat_portfolios | boolean | – | Include workspace draft chat portfolios (default false). Excludes deployedMirror. Set true with include_paper=false and include_live=false for draft-only search. |
| include_inactive | boolean | – | Include inactive portfolios (default true) |
| include_live | boolean | – | Include live trading portfolios (default true) |
| include_paper | boolean | – | Include paper portfolios (default true) |
| include_positions | boolean | – | Include positions + spread-grouped holdings (default true when not searching; default false when search is set). cash and buyingPower are always returned for deployed portfolios regardless of this fl… |
| limit | number | – | Max portfolios to return (default 20, max 50) |
| page | number | – | Page number (default 1) |
| portfolio_ids | array | – | Specific portfolio IDs to fetch (omit for all) |
| search | string | – | Free-text search (max 100 chars) over portfolio name, strategy names, and tickers, ranked by relevance. Matches stemmed whole words (Postgres full-text) and case-insensitive substrings of 3+ characte… |
No output schema declared.
No examples provided.
fork_shared_portfolio ~208
⚠ MUTATING — creates or modifies a portfolio. Fork strategies from a shared portfolio into the user's account. target: 'new' creates a chat portfolio; 'existing' patches a deployed portfolio. mode: 'replace' (default) removes old strategies, 'append' keeps them. For monetized portfolios, subscribe first. Returns { forkSharedPortfolioResult: { portfolioId, name, addedCount, removedCount, ... } }. Prefer fork when the user wants to edit/customize strategies.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | Replace existing strategies or append to them. |
| name | string | – | Name for a new portfolio. |
| shared_portfolio_id | string | yes | ID of the accessible marketplace portfolio to fork into a one-time editable copy. This does not keep strategies synchronized; use copy_trade_shared for continuous mirroring. |
| target | string | yes | Create a new chat portfolio or update an existing portfolio. |
| target_portfolio_id | string | – | Required when target is existing. |
No output schema declared.
No examples provided.
get_agent ~230
Aurora agent surface (no LLM cost on this call — pure DB read). Only relevant when the user is actively working with an Aurora agent. Returns status, plan, messages, config. Address by agentId OR by exact title (case-insensitive); provide exactly one. Duplicate titles fail closed with candidate ids. Polling/liveness: use agent.lastProgressAt (advances during sandbox steps, tool cards, LLM rounds, and — while waiting_for_subagents — when children progress) — NOT agent.updatedAt (state transitions only; stays frozen by design while parked on subagents so the waiting-no-wake detector can prefilter). For waiting_for_subagents, a frozen lastProgressAt means children stopped progressing; confirm via child agent statuses. Sandbox step detail: agent.messages[*].data.steps. Poll until status is terminal (complete/stopped/error).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id (XOR with title) |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId). Fails if 0 or >1 matches. |
No output schema declared.
No examples provided.
get_agent_trajectory ~101
Aurora agent surface (no LLM cost on this call — pure DB read). Only relevant when inspecting an Aurora agent run. Raw trace / trajectory events for an agent (for inspection or building evaluator input). Address by agentId OR exact title (XOR).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id (XOR with title) |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId) |
No output schema declared.
No examples provided.
get_portfolio ~141
Fetch one portfolio with full strategy objects (condition, action, indicators), positions, and spread-grouped holdings. Zero LLM cost — same data path as GET /api/portfolio/:portfolioId. Resolves deployed paper/live portfolios first, then chat portfolios. Use fetch_portfolios to discover IDs. Response includes conditionFieldAudit (comparison, value, window.length per base condition) — use that for Gate-7/Gate-8 deploy verification, NOT strategy.name or condition.name (those may be stale after GA mutation).
| Name | Type | Req | Description |
|---|---|---|---|
| portfolio_id | string | yes | Portfolio ID (deployed paper/live or chat portfolio ID from fetch_portfolios / create_portfolio). |
No output schema declared.
No examples provided.
list_agents ~191
Aurora agent surface (no LLM cost on this call itself — pure DB read). Useful only when the user is actively operating an Aurora agent. For strategy creation/backtesting prefer the structured no-LLM tools (create_portfolio with full JSON payload, backtest_portfolio, query_*, fetch_portfolios). List your Aurora agents with pagination using the same query shape as the agent controller.
| Name | Type | Req | Description |
|---|---|---|---|
| includeArchived | boolean | – | Include archived agents. Default false |
| limit | number | – | Page size (default 10, max 100) |
| page | number | – | Page number (default 1) |
| portfolioId | string | – | Optional portfolio id or alias to filter agents |
| search | string | – | Case-insensitive substring match over title and initialPrompt |
| starredOnly | boolean | – | Return only starred top-level agents, sorted by starredOrder asc then starredAt desc. Default false |
No output schema declared.
No examples provided.
query_backtest_history ~369
Return a time series of {time, value, cash, positionValue, comparisonValue, reservedCollateral} per tick for a completed backtest. Reads from the backtesthistories collection (full minute-resolution; 30-day TTL). Use this to find suspicious single-tick portfolio value jumps without needing the codebase — feed the result through your own jump-detection logic. Cash is derived as value minus Σ(position.quantity × lastPrice). `reservedCollateral` is the collateral locked by open positions at that tick, as the engine computed it; it reads `null` for a run made before collateral reporting existed, which is NOT zero. Never re-derive it from cash − buyingPower. Zero research token cost.
| Name | Type | Req | Description |
|---|---|---|---|
| backtest_id | string | yes | Backtest ID (required). Must be owned by the calling MCP user. |
| end_date | string | – | ISO date filter end (e.g. 2024-10-18). Inclusive; T23:59:59.999Z is appended if a bare date is given. |
| jump_bps_threshold | number | – | If set, the response appends a 'Suspicious jumps' section listing every single-tick Δvalue whose magnitude exceeds this many basis points of the FIRST point's value. E.g. 50 = flag any >0.5% move bet… |
| page | number | – | Page number (default 1) |
| page_size | number | – | Rows per page (default 500, max 5000). Larger than events because history is plain numbers — cheap to emit. |
| start_date | string | – | ISO date filter start (e.g. 2024-10-07). Inclusive. |
No output schema declared.
No examples provided.
query_backtest_status ~145
Return the parent backtest document's status, error, interval, timestamps, elapsed time, and completed statistics without reading history/events. Use immediately after backtest_portfolio or before query_backtest_history so ERROR/PENDING/RUNNING states are explicit. Statistics include peakReservedCollateral and medianReservedCollateral — how much capital the book actually had on the line, which a percentage return does not say. Both read "not recorded" for a run made before collateral reporting existed; that is not zero, so do not report it as such. Zero research token cost.
| Name | Type | Req | Description |
|---|---|---|---|
| backtest_id | string | yes | Backtest ID (required). Must be owned by the calling MCP user. |
No output schema declared.
No examples provided.
reject_agent_action ~108
Aurora agent surface (minimal LLM cost — state transition, no re-planning). Only relevant when actively managing an Aurora agent. Reject a semi-automated agent that is waiting in pending_plan_approval or pending_action_approval. Mirrors POST /api/agent/:agentId/reject, marks the latest assistant message as errored, transitions through the state machine, traces the rejection, and publishes a websocket update.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | yes | MongoDB agent _id to reject |
No output schema declared.
No examples provided.
search_public_portfolios ~319
Search and browse publicly shared portfolios from other NexusTrade users, sorted by performance metrics. Optional profileId filters to one creator's public/monetized books (from Search Creators / /p/:profileId).
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Results per page (default 20, max 100) |
| max_drawdown | number | – | Keep listings whose |max drawdown| is at most this percent. Idle books with max drawdown of 0 are excluded. Combine with min_sharpe. |
| min_followers | number | – | Minimum follower count filter (default 0) |
| min_sharpe | number | – | Minimum Sharpe ratio filter. Combine with max_drawdown. |
| page | integer | – | Page number (default 1) |
| profile_id | string | – | Optional public creator profileId (from search_creators / /p/:profileId). When set, returns only that creator's public/monetized shared portfolios. |
| sort_by | string | – | Sort field: week, month, threeMonths, sixMonths, year, ytd, allTime, followerCount, bookmarkCount, maxDrawdown, sharpeRatio. maxDrawdown ranks lowest |drawdown| first and excludes 0 (idle books). sha… |
| sort_order | string | – | Sort order: 1 or -1 (default -1, or 1 when sort_by is maxDrawdown) |
| trading_type | string | – | Trading type: paper-trading or live-trading |
No output schema declared.
No examples provided.
send_agent_message ~190
⚠ COSTS LLM CREDITS — re-runs the Aurora planner LLM after appending the user's follow-up. Manual approval required; do NOT call unless the user explicitly asked to push a message into an active Aurora agent. Address by agentId OR exact title (XOR). Send a follow-up user message to an agent and re-run the planner, matching POST /api/agent/:agentId/message. This can charge planning tokens, rejects actively running/approved states, may recover terminal states, may transition the agent, and publishes websocket updates. It is not an append-only operation.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id to send the message to (XOR with title) |
| content | string | yes | The user message text to append to the conversation |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId) |
No output schema declared.
No examples provided.
send_chat_message ~175
⚠ COSTS LLM CREDITS — same path as POST /api/chat. Router V5 classifies the message: Ask Clarity (persisted), Create Agent (spawns Aurora research), or single-tool fulfill (queued prompt job). Use this for chat turns; use create_agent only when you explicitly want agent spawn without single-tool fulfill. Aurora chooses the complete route adaptively.
| Name | Type | Req | Description |
|---|---|---|---|
| attachment_ids | array | – | READY chat-attachment ids from upload_chat_attachment. Bound onto the last user message as fileAttachments. |
| conversationId | string | – | Optional NexusGenAI conversation id |
| messages | array | yes | Full or partial ChatMessage array, e.g. [{"sender":"User","content":"..."}] |
| session_depth | string | – | Deprecated compatibility field. Both values use Aurora's adaptive routing policy. |
No output schema declared.
No examples provided.
star_agent ~125
Aurora agent surface (no LLM cost — pure DB write). Star or unstar a top-level agent for quick sidebar access. Mirrors PATCH /api/agent/:agentId/star. Address by agentId OR exact title (XOR). Omit starred to toggle.
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id to star or unstar (XOR with title) |
| starred | boolean | – | Optional explicit star state. Omit to toggle the current state. |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId) |
No output schema declared.
No examples provided.
stop_agent ~81
Aurora agent surface (no LLM cost — pure state transition). Only relevant when actively managing an Aurora agent. Stop a running agent. Sends a cancellation request and cascades to all descendant subagents. The agent must be in an active state (running, initializing, pending approval, etc.).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | yes | MongoDB agent _id to stop |
No output schema declared.
No examples provided.
unarchive_agent ~95
Aurora agent surface (no LLM cost — pure DB write). Only relevant when managing Aurora agents. Restore an archived agent so it appears in default agent listings again. Address by agentId OR exact title (XOR).
| Name | Type | Req | Description |
|---|---|---|---|
| agentId | string | – | MongoDB agent _id to unarchive (XOR with title) |
| title | string | – | Exact case-insensitive user-assigned title (XOR with agentId) |
No output schema declared.
No examples provided.
update_portfolio ~1,107
Deploy, undeploy, rename, delete, add/remove/replace strategies, or set deployment frequency on portfolios. **rename** requires a non-empty `name` on the operation. **delete** permanently removes a chat, paper, or live portfolio (archives deployed paper/live books; deleting a chat portfolio also archives linked deployments). Pass confirmLive:true only after explicit user confirmation when deleting an active live portfolio. **Structured path (zero LLM cost):** pass an `operations` array — see inputSchema. Use `replaceStrategy` / `replaceStrategies` with full `{name, condition, action, orderExecution?}` strategyObjects (same shape as create_portfolio). New rebalance budgets should be indicators (Value for constants, PoliticalPurchaseShare for dynamic member purchase mix); RebalanceOption accepts sizingMode proportionalToWeight. `orderExecution` defaults to Market; true waiting Limits use UnitPrice for shares/crypto or MinimumNetCredit/MaximumNetDebit for options, whose amount may be an indicator (such as OptionSpreadEntryPrice plus a Value) evaluated when the strategy fires. QuoteRelative normally executes immediately at the snapshotted quote. RebalanceOption: set `action.positionScope` to `portfolio` (single-book — closes/orphans all option spreads in the portfolio) or `strategy` (multi-strategy book).
| Name | Type | Req | Description |
|---|---|---|---|
| operations | array | yes | Array of edit operations. Each operation needs "portfolioId" (live, paper, or chat — server resolves automatically). Supported types include "rename" (requires non-empty "name"), "delete" (permanentl… |
No output schema declared.
No examples provided.
How do I install the NexusTrade Financial MCP server?
NexusTrade Financial MCP is a hosted endpoint at https://nexustrade.io/api/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 · nexustrade.io
claude mcp add --transport http austin-starks-nexustrade-mcp 'https://nexustrade.io/api/mcp'
What is the NexusTrade Financial MCP server?
NexusTrade Financial MCP is listed in the public MCP registry as io.github.austin-starks/nexustrade-mcp. Quant research, backtesting, marketplace subscriptions, editable forks, copy trading, and execution. This page covers its hosted endpoint (https://nexustrade.io/api/mcp).
Is the NexusTrade Financial MCP server safe to use?
NexusTrade Financial MCP scores 36 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 NexusTrade Financial MCP server expose?
NexusTrade Financial MCP exposes 25 tools: list_agents, create_agent, send_chat_message, get_agent, get_agent_trajectory, and 20 more. Their descriptions and schemas cost roughly 7,619 tokens of context every time the server is loaded.
Does the NexusTrade Financial MCP server require authentication?
Yes. NexusTrade Financial MCP asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the NexusTrade Financial MCP server still maintained?
NexusTrade Financial MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What did VerifyMCP test on the NexusTrade Financial MCP server?
VerifyMCP ran 5 checks on NexusTrade Financial MCP, covering TLS certificate, Authorization, HTTPS, HSTS header and 1 more. 6 items could not be completed, a gap on our side rather than a finding about NexusTrade Financial MCP: Transport, Schema quality, Stability, Tool coverage and 2 more. 6 categories score 0 for that reason, because we only credit what we can confirm. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.