NORNDOCS
MCP Server / Available tools

Available tools

Norn's MCP server exposes 20+ tools scoped to your organization, workspaces, and connected accounts. Tools are grouped below by what they do. Every tool respects your subscription tier — Pro-only tools return

code
Permission denied
on a BASIC organization.

Identity & scoping

Use these first to figure out what the assistant has access to.

  • code
    list_organizations
    — organizations you're a member of, with your role (
    code
    OWNER
    /
    code
    STANDARD
    ) and subscription tier.
  • code
    list_workspaces
    — workspaces under an organization. Every account and saved portfolio lives inside a workspace.
  • code
    list_accounts
    — connected brokerage accounts under a workspace.
NOTE

Most tools require you to pass an

code
organization_id
and a
code
workspace_id
. If you don't, the assistant will pick your default or ask you to choose.

Brokerage data

Read-only access to whatever you've connected. Requires Pro.

  • code
    get_account_positions
    — current positions with market value, weight, unrealized P&L.
  • code
    get_account_performance
    — 1M / 3M / 6M / 1Y / YTD returns joined with Norn's quant metrics (Sharpe, expected return, volatility).
  • code
    get_account_transactions
    — buys, sells, dividends, transfers, fees. Paginated at 100 rows.

Asset discovery

Search Norn's asset database.

  • code
    check_tickers_tracked
    — verify Norn has quant data for a set of tickers before running deeper analysis on them.
  • code
    screen_assets
    — filter Norn's universe by asset type (
    code
    EQUITY
    ,
    code
    ETF
    ,
    code
    CRYPTO
    ), subtype (large-cap, mid-cap, etc.), and any quant filter (Sharpe > 1.5, volatility < 20%, etc.). Returns a ranked list.

Single-ticker analytics

Deep dive on one ticker. Requires Pro.

  • code
    get_stock_details
    — 252-day return, volatility, Sharpe, expected return, plus identity metadata (sector, industry, exchange).
  • code
    get_stock_price
    — OHLCV price history. Daily bars for ranges ≤30 days, weekly bars for anything longer.

Multi-ticker analytics

Compare or correlate multiple tickers at once.

  • code
    get_quant_summary_for_tickers
    — one row per ticker, ranked by Sharpe. Fastest way to compare a candidate list.
  • code
    get_ticker_correlations
    — pairwise weekly-returns correlation matrix. Great for spotting concentration risk.

Portfolio optimization

  • code
    optimize_portfolio
    — run mean-variance (historical) or Black-Litterman optimization on any list of tickers.
    • Mean-variance: uses 252-day empirical means.
    • Black-Litterman: combines the market-implied prior with your own forward "views" (e.g. "AAPL will outperform SPY by 5%"). Supports min/max weight bounds; the assistant validates feasibility before returning.
json
{
  "tickers": ["AAPL", "MSFT", "NVDA", "GOOG"],
  "method": "black_litterman",
  "views": [
    { "ticker": "NVDA", "vs": "SPY", "expected_bp": 500 }
  ],
  "constraints": { "min_weight": 0.05, "max_weight": 0.5 }
}

Saved portfolios

Persistent, optimizable watchlists. Requires Pro for reads;

code
mcp:write
scope for edits.

  • code
    list_portfolios
    — portfolios in the current workspace.
  • code
    get_portfolio
    — allocations, computed weights, projections, constraint set.
  • code
    create_portfolio
    — new portfolio with a set of starting tickers.
  • code
    add_tickers_to_portfolio
    /
    code
    remove_tickers_from_portfolio
    — edit constituents.
  • code
    update_portfolio_projections
    — set Black-Litterman views on the portfolio.
  • code
    delete_portfolio
    — permanent. Owner-only.

Error semantics

All tools return structured errors so the assistant can react intelligently.

  • code
    NO_ACCOUNT_SELECTED
    — you haven't told the assistant which account to work with. Call
    code
    list_accounts
    and pass one.
  • code
    PERMISSION_DENIED (Pro required)
    — the caller's org is on BASIC. Upgrade or switch orgs.
  • code
    INFEASIBLE_CONSTRAINTS
    — the optimization can't satisfy your min/max weights. Relax them.
  • code
    NOT_TRACKED
    — Norn doesn't have quant data for that ticker. Call
    code
    check_tickers_tracked
    first.

What Norn cannot do

The MCP server is strictly read + saved-portfolio-write. It has no tools for:

  • Placing trades or transferring funds
  • Modifying your brokerage credentials or account settings
  • Reading anything from your AI client's memory, chat, or files

See Security for the full trust model.