1. Ask Muse to create the NexusTrade custom connector
Open a Muse personal-agent conversation and send the connection request below. Meta documents creating a Custom Connector by asking Muse in chat. Follow its authentication handoff and sign in to the intended NexusTrade account; review access before consent. Use the secure credential flow if requested, and keep passwords and tokens out of chat.
Discover the actual NexusTrade tools after authentication. Keep approval for portfolio changes and paid tests in Muse Settings; manage or disconnect the connection under Settings → Connectors. After Muse creates the connector, run the account read below before asking it to work with your portfolio.
Create a Custom Connector named NexusTrade using the Streamable HTTP MCP URL https://nexustrade.io/api/mcp. Use server OAuth discovery and guide me through sign-in. List the tools after authentication. Start with read-only owned portfolio access; do not run research jobs, backtests, edit portfolios, deploy or place orders.2. Check the account with an owned portfolio read
Ask the agent to call fetch_portfolios with the arguments below. Compare the returned portfolio names, IDs and types with your NexusTrade account. fetch_portfolios returns portfolioId; pass that exact value as portfolio_id to get_portfolio. Inspect the structured portfolio.portfolioId, portfolio.type, portfolio.isActive, portfolio.strategies, portfolio.initialValue and portfolio.deployment. For a new account, an authenticated empty list is a valid result. Public stock commentary does not establish account access.
This request excludes live books and positions, includes chat drafts and inactive paper books, and returns up to 50 records per page. Follow subsequent pages before concluding a named book is absent. If OAuth expired, reconnect and repeat this read. For a missing tool, inspect the included app, environment and action permissions. An account mismatch must be fixed before a write.
{
"include_live": false,
"include_paper": true,
"include_chat_portfolios": true,
"include_inactive": true,
"include_positions": false,
"limit": 50,
"page": 1
}3. Freeze one SPY candidate
Proposed mechanics example: one long-only SPY stock strategy pair, $10,000 starting simulated capital and a 50-trading-day simple moving average. The historical example uses interval Day. Enter only while flat when price is above that average; buy 20% of portfolio value. Exit the entire SPY holding when price is at or below the same average. Keep the remainder in cash; use no leverage, options or parameter search.
Have the agent show the complete condition and action objects, then call build_portfolio with that full JSON to validate and canonicalize without saving. Review valid, issues and the returned portfolio. Correct each reported issue before approving create_portfolio with the same accepted JSON. The flat-position guard prevents another purchase on every evaluation while the condition stays true. Record how the configuration handles missing prices, warmup and evaluation timing. These are proposed inputs, not a recommended allocation or a tested trading edge.
Draft exactly one new chat portfolio named "Meta Muse SPY SMA50 review" with initialValue 10000. Use daily SPY prices and a SimpleMovingAverage window of 50 Day bars. Entry: price > SMA50 AND held PositionValue = 0; buy 20% of portfolio value. Exit: price <= SMA50 AND held PositionValue > 0; sell 100% of that holding. No options, leverage or repeated purchases while held. Show the full condition/action configuration and the dividend policy. Call build_portfolio with the full JSON; inspect valid, issues and the canonicalized portfolio without saving. After I approve saving, call create_portfolio with the same accepted JSON, preserve portfolios[0].portfolioId and read that exact ID with get_portfolio. Do not backtest or deploy yet.4. Review the fixed historical request before submitting
Use January 1, 2021 through December 31, 2023 as the initial inspection window and SPY buy-and-hold as the baseline. The explicit stock fee is 0.1% of transaction notional. That fee is not a promise that spreads, slippage or live fills are reproduced. Inspect the result warnings and execution assumptions; this example adds no invented slippage parameter.
Use dividend_policy=reinvest and record that choice for both runs. For SPY, reinvest makes the candidate dividend treatment comparable with the total-return baseline. For a single stock, check the baseline dividend conventions before treating excess return as an identical dividend comparison.
Replace the placeholder with the exact saved chat ID, then approve one backtest_portfolio call. MCP submits the operation when called; it has no separate NexusTrade approval screen. Client approval must happen before the call.
{
"portfolio_id": "<RETURNED_CHAT_PORTFOLIO_ID>",
"start_date": "2021-01-01",
"end_date": "2023-12-31",
"baseline_symbol": "SPY",
"interval": "Day",
"initial_value": 10000,
"generate_events": false,
"fee_config": {
"Stock": {
"amount": 0.1,
"type": "percent"
}
},
"dividend_policy": "reinvest"
}The tool sequence
Inspect the discovered inputs before submitting a call. For a new candidate, validate and save it first; for a saved candidate, start with get_portfolio. Record the portfolio and backtest identifiers returned by the account tools.
| Validate a new candidate | build_portfolio | Canonical configuration and component issues; nothing is saved |
| Save the validated draft | create_portfolio | Use the reviewed configuration and retain the returned chat portfolio ID |
| Read the saved book | get_portfolio | Exact strategies, action sizing, and portfolio identity |
| Submit the historical test | backtest_portfolio | Explicit dates, interval, capital and benchmark |
| Poll the same operation | query_backtest_status | Terminal state and warnings; do not resubmit while running |
| Inspect the curve | query_backtest_history | Historical values for the returned backtest_id |
| Compare candidates | compare_backtests | Identical period and assumptions, with activity and risk |
No matching rows. Clear the filter to see all records.
5. Read the accepted backtest and its warnings
Save the accepted ID from the backtest response and use backtest_id in query_backtest_status. PENDING or RUNNING means keep polling that ID. ERROR needs its error and configuration reviewed. Only after the completed status should query_backtest_history supply historical time, value, cash, positionValue and comparisonValue points.
Read the result for the saved configuration and dates. Use status and analysis to inspect return, drawdown, activity and warnings. Inspect a no-trade run before calling it successful: warmup, missing data or conditions may explain it. Missing reservedCollateral on an older run means not recorded, not zero. History retention is limited; keep the report while it is available.
If submission returns no visible ID, inspect the task transcript and the existing backtest record before repeating the call. A polling failure does not establish that submission failed. Preserve the accepted operation identity across connection repair.
Poll query_backtest_status with backtest_id equal to the accepted ID. If it is completed, call query_backtest_history with the same backtest_id, page 1 and page_size 500; follow pagination for the full requested period. Return configuration, cost assumptions, benchmark, drawdown, trades and every warning. Label the output historical simulation. Do not infer missing values or launch a replacement run.6. Reserve a separate evaluation window without revising the rule
Keep the exact saved rule and cost settings. A proposed second window is January 1, 2024 through December 31, 2025, with the same capital, interval, baseline and dividend policy. Submit that second run only after separate approval and retain its own backtest ID. Compare both records, including activity and drawdown.
Those dates are already public history. They count as a held-out evaluation only if the decision-maker has not inspected that rule on them before freezing it. If the agent or reviewer already saw those results, call it retrospective validation and reserve future paper observation instead. One candidate means a budget of one; any revised threshold is a new candidate that must be disclosed.
The 2026 AAPL filing brief is useful current research, but none of its later facts may enter these earlier price-only tests. Historical returns cannot establish whether the earnings thesis will predict future prices.
Have Muse return the one-candidate record
Ask for the SPY configuration, the two accepted operation IDs and the result comparison in the same conversation. Muse should stop for your review before any new strategy or paper activation. A different period or a changed average length needs a new recorded decision, not an unexplained rerun.