Koskamo

The Balanced Investor Club MCP

An MCP server providing market data, technical analysis, and behavioral finance tools for self-directed investors. It allows AI agents to access trend signals, trading journals, and educational content, with specific tools requiring OAuth 2.1 authorization to read personal member data like the Trust Score and Stock Tracker.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

The Balanced Investor Club MCP logo, by The Balanced Investor ClubVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by The Balanced Investor Club
MCP endpoint (Streamable HTTP)
https://thebalancedinvestorclub.com/api/mcp/mcp
Vendor documentation

What its tools do

57 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

57 of 57 have a description · 57 of 57 declare behavior hints · 45 of 48 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to thebalancedinvestorclub.com ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Access daily market data for stocks, ETFs, and crypto
  • Analyze technical trends and market mood signals
  • Review personal trading journal entries and behavior
  • Calculate and view the user's Trust Score

Source and maintenance

Vendor evidenceRegistry 0.3.3

Protocol and capabilities

Server
the-balanced-investor-club 0.3.3
MCP protocol negotiated in check
2025-11-25
Tools
57 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

You're connected to The Balanced Investor Club — your thinking companion for the markets. Market tools (mood, fundamentals, comparisons) work without an account. Tools that read your own data — Stock Tracker, Trading Journal, Trust Score — need you to sign in: authorize the connector to add them. These tools are educational and don't make buy or sell recommendations.

Tools

57 advertised

start_here
Advertised by the server during the last successful anonymous check.
Advertised read-only

Start exploring The Balanced Investor Club. A calm orientation — what we are, what the community is watching right now, and what to try next. Recommended as your first call.

start_here input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
start_here annotations
{
  "title": "Start here",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_market_moods
Advertised by the server during the last successful anonymous check.
Advertised read-only

Browse Market Mood across instruments — The Balanced Investor Club's behavioural read on how short and long-term moving averages align. Educational, never predictive. Filter by sector, asset type, or mood label.

list_market_moods input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "mood": {
      "enum": [
        "Strong Bullish",
        "Bullish",
        "Neutral",
        "Bearish",
        "Strong Bearish"
      ],
      "type": "string"
    },
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Default 20, max 50 for anonymous tier"
    },
    "sector": {
      "type": "string",
      "description": "Filter by sector name (e.g. 'Technology')"
    },
    "industry": {
      "type": "string",
      "description": "Filter by industry name"
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string"
    },
    "only_with_changes": {
      "type": "boolean",
      "description": "Only items where mood changed recently"
    }
  }
}
list_market_moods annotations
{
  "title": "Browse Market Mood",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_mood_for_ticker
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pull the current Market Mood for a single ticker — its history, how often the mood has shifted, and any patterns we've spotted. Educational only. Mood snapshots refresh on a daily cycle and can lag the latest close by one session; use get_close_history for the freshest price.

get_mood_for_ticker input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (e.g. AAPL, TSLA, BTC-USD)"
    },
    "history_limit": {
      "type": "number",
      "maximum": 500,
      "minimum": 1,
      "description": "History points to include, default 60"
    }
  }
}
get_mood_for_ticker annotations
{
  "title": "Mood for a ticker",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_today_mood_changes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Mood TRANSITIONS today — instruments whose Market Mood label flipped in the last 24h (e.g. Bullish → Neutral). This is NOT price movers; mood changes only. If today is quiet, an empty result is normal — try `list_market_moods` with `only_with_changes` for the latest cycle of transitions across recent days.

get_today_mood_changes input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "mood": {
      "enum": [
        "Strong Bullish",
        "Bullish",
        "Neutral",
        "Bearish",
        "Strong Bearish"
      ],
      "type": "string",
      "description": "Only show changes that landed on this mood"
    },
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string"
    }
  }
}
get_today_mood_changes annotations
{
  "title": "Today's mood transitions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_market_pulse
Advertised by the server during the last successful anonymous check.
Advertised read-only

A snapshot of where the market sits right now — random sample of strongly bullish vs strongly bearish names, plus aggregate counts. Great as an opener to ask 'what stands out today?'

get_market_pulse input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_market_pulse annotations
{
  "title": "Market pulse",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_price_alignment
Advertised by the server during the last successful anonymous check.
Advertised read-only

How a stock or ETF's price aligns with its short, medium, and long-term moving averages — and the resulting Market Mood. Educational, never predictive. Snapshots refresh on a daily cycle and can lag the latest close by one session; use get_close_history for the freshest price.

get_price_alignment input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock or ETF ticker (e.g. AAPL, SPY)"
    },
    "ma_type": {
      "enum": [
        "SMA",
        "EMA"
      ],
      "type": "string",
      "description": "Moving-average type for the live default-MA read used when no official snapshot exists (default SMA). Ignored when a tuned snapshot is available."
    }
  }
}
get_price_alignment annotations
{
  "title": "Price vs moving averages",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_crypto_price_alignment
Advertised by the server during the last successful anonymous check.
Advertised read-only

How a crypto pair's price aligns with its short, medium, and long-term moving averages — and the resulting Market Mood. Educational, never predictive.

get_crypto_price_alignment input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "pair"
  ],
  "properties": {
    "pair": {
      "type": "string",
      "description": "Crypto pair in ASSET-MARKET format, e.g. BTC-USD, ETH-USD, SOL-USD"
    },
    "ma_type": {
      "enum": [
        "SMA",
        "EMA"
      ],
      "type": "string",
      "description": "Moving-average type for the live default-MA read used when no official snapshot exists (default SMA). Ignored when a tuned snapshot is available."
    }
  }
}
get_crypto_price_alignment annotations
{
  "title": "Crypto price vs moving averages",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compare_tickers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Side-by-side log-returns for up to 5 tickers — stocks, ETFs, crypto. Volatility, total return, max and min. Date-aligned.

compare_tickers input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "tickers"
  ],
  "properties": {
    "period": {
      "enum": [
        "1W",
        "1M",
        "3M",
        "6M",
        "1Y",
        "2Y",
        "5Y",
        "YTD",
        "MAX"
      ],
      "type": "string",
      "description": "Default 1Y"
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 5,
      "minItems": 2,
      "description": "List of 2-5 tickers, e.g. ['AAPL', 'MSFT', 'NVDA']"
    }
  }
}
compare_tickers annotations
{
  "title": "Compare tickers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_securities_by
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every security inside a sector or industry — a way to map the surface before drilling. Returns ticker, name, sector, industry, and optionally market cap. Use this when the user asks 'what's in Technology?', 'show me the Banks industry', or to build a peer set by size for a comps analysis (sort='market_cap').

list_securities_by input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "field",
    "value"
  ],
  "properties": {
    "sort": {
      "enum": [
        "name",
        "market_cap"
      ],
      "type": "string",
      "description": "Sort order. 'market_cap' adds a market-cap column (largest first) — ideal for picking comps peers by size. Caps come from our fundamentals cache, so rarely-viewed small names may show '—'. Defaults to 'name'."
    },
    "field": {
      "enum": [
        "sector",
        "industry"
      ],
      "type": "string",
      "description": "Filter dimension"
    },
    "limit": {
      "type": "number",
      "maximum": 100,
      "minimum": 1,
      "description": "Default 30, max 100"
    },
    "value": {
      "type": "string",
      "description": "Filter value, e.g. 'Technology', 'Banks - Diversified'"
    }
  }
}
list_securities_by annotations
{
  "title": "List securities in a sector or industry",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_ticker_metadata
Advertised by the server during the last successful anonymous check.
Advertised read-only

Quick identity check on a ticker — name, sector, industry, exchange, asset type. Useful before going deeper.

get_ticker_metadata input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (e.g. AAPL)"
    }
  }
}
get_ticker_metadata annotations
{
  "title": "Ticker metadata",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_instruments
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search The Balanced Investor Club's coverage universe across stocks, ETFs, and crypto. Type a ticker, company name, or coin name — same as the search box on the website.

search_instruments input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 15,
      "minimum": 1,
      "description": "Up to 15 results; default 10"
    },
    "query": {
      "type": "string",
      "description": "Ticker, name, or coin (e.g. AAPL, Apple, BTC, Tesla)"
    }
  }
}
search_instruments annotations
{
  "title": "Search instruments",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_sector_returns
Advertised by the server during the last successful anonymous check.
Advertised read-only

Market-cap-weighted average return for a sector over the last year. Pre-computed daily from public market data. GICS names like 'Consumer Discretionary' or 'Information Technology' are accepted.

get_sector_returns input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "sector"
  ],
  "properties": {
    "sector": {
      "type": "string",
      "description": "Sector name. GICS or common labels both work, e.g. 'Technology', 'Healthcare', 'Consumer Discretionary', 'Financials'."
    }
  }
}
get_sector_returns annotations
{
  "title": "Sector returns",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_industry_returns
Advertised by the server during the last successful anonymous check.
Advertised read-only

Same idea as the sector view, narrower scope — average return for a single industry over the last year.

get_industry_returns input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "industry"
  ],
  "properties": {
    "industry": {
      "type": "string",
      "description": "Industry name, e.g. 'Software - Application', 'Banks - Diversified'"
    }
  }
}
get_industry_returns annotations
{
  "title": "Industry returns",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_income_statement
Advertised by the server during the last successful anonymous check.
Advertised read-only

Income statement for a stock — revenue, costs, profit — the P&L, period by period. Mirrors what the Market Hub shows. Stocks only (not ETFs or crypto).

get_income_statement input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Financial statements are for stocks only — not ETFs or crypto."
    },
    "periods": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "How many periods to include. Defaults to 5; up to 20. If fewer exist, all available periods are returned."
    },
    "frequency": {
      "enum": [
        "quarterly",
        "annual"
      ],
      "type": "string",
      "description": "Reporting frequency. Defaults to quarterly."
    }
  }
}
get_income_statement annotations
{
  "title": "Income statement",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_balance_sheet
Advertised by the server during the last successful anonymous check.
Advertised read-only

Balance sheet for a stock — assets, liabilities and equity at each period end. Mirrors what the Market Hub shows. Stocks only.

get_balance_sheet input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Financial statements are for stocks only — not ETFs or crypto."
    },
    "periods": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "How many periods to include. Defaults to 5; up to 20. If fewer exist, all available periods are returned."
    },
    "frequency": {
      "enum": [
        "quarterly",
        "annual"
      ],
      "type": "string",
      "description": "Reporting frequency. Defaults to quarterly."
    }
  }
}
get_balance_sheet annotations
{
  "title": "Balance sheet",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_cash_flow
Advertised by the server during the last successful anonymous check.
Advertised read-only

Cash flow statement for a stock — cash generated and used across operating, investing and financing. Mirrors what the Market Hub shows. Stocks only.

get_cash_flow input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Financial statements are for stocks only — not ETFs or crypto."
    },
    "periods": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "How many periods to include. Defaults to 5; up to 20. If fewer exist, all available periods are returned."
    },
    "frequency": {
      "enum": [
        "quarterly",
        "annual"
      ],
      "type": "string",
      "description": "Reporting frequency. Defaults to quarterly."
    }
  }
}
get_cash_flow annotations
{
  "title": "Cash flow",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_dividends
Advertised by the server during the last successful anonymous check.
Advertised read-only

Dividend history for a stock or distributing ETF — ex-dividend date, payment date, and amount per share. Mirrors what the Market Hub shows. Not applicable to crypto.

get_dividends input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 40,
      "minimum": 1,
      "description": "How many recent dividends to include. Defaults to 12."
    },
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (e.g. AAPL, VTI). Stocks and distributing ETFs only — not crypto."
    }
  }
}
get_dividends annotations
{
  "title": "Dividends",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_earnings_estimates
Advertised by the server during the last successful anonymous check.
Advertised read-only

Analyst earnings estimates for upcoming quarters AND fiscal years — EPS consensus, revenue, and analyst counts per horizon. Mirrors what the Market Hub shows. Estimates, not forecasts — they shift as each date nears.

get_earnings_estimates input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 12,
      "minimum": 1,
      "description": "How many periods to include. Defaults to 12 (everything available)."
    },
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Earnings estimates are for individual stocks only — not ETFs or crypto."
    },
    "horizon": {
      "enum": [
        "quarterly",
        "annual"
      ],
      "type": "string",
      "description": "Optional filter by reporting horizon. Defaults to ALL horizons (quarters and fiscal years)."
    }
  }
}
get_earnings_estimates annotations
{
  "title": "Earnings estimates",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_macro_indicators
Advertised by the server during the last successful anonymous check.
Advertised read-only

US economic indicators — rates, jobs, growth, energy, metals, agriculture, and markets. Latest reading per indicator plus the change from the prior period. Context behind the market, not a signal about any one stock.

get_macro_indicators input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "history": {
      "type": "number",
      "maximum": 60,
      "minimum": 2,
      "description": "Readings of history per indicator when include_keys is set. Defaults to 24; if fewer exist, all available readings are returned."
    },
    "include_keys": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional filter — return only these indicator keys (e.g. ['fedfunds', 'treasury10y']). Call without a filter first to see every available key; unknown keys are reported back with the valid list. When a filter is set, each matched indicator also returns its reading history (see `history`)."
    }
  }
}
get_macro_indicators annotations
{
  "title": "Macro indicators",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_market_calendar
Advertised by the server during the last successful anonymous check.
Advertised read-only

Upcoming earnings and IPOs across the market, next three months. Filter to specific tickers and/or a date range to reach your coverage. Earnings carry analyst-estimate EPS when reported. IPOs carry exchange and price range when available.

get_market_calendar input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "to": {
      "type": "string",
      "description": "Only events on or before this date (YYYY-MM-DD)."
    },
    "from": {
      "type": "string",
      "description": "Only events on or after this date (YYYY-MM-DD)."
    },
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Max events to return per section. Defaults to 25."
    },
    "filter": {
      "enum": [
        "all",
        "earnings",
        "ipos"
      ],
      "type": "string",
      "description": "Filter the calendar by event type. Defaults to all."
    },
    "tickers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Only events for these symbols (e.g. ['AAPL','MSFT','NVDA']). Without it the whole market is returned — use this to reach a coverage list."
    }
  }
}
get_market_calendar annotations
{
  "title": "Market calendar",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_valuation_inputs
Advertised by the server during the last successful anonymous check.
Advertised read-only

DCF building blocks for a stock in one call — current price, shares outstanding, beta, net debt, trailing FCF, 4-year FCF history and CAGR, revenue growth, and the 10-year Treasury as risk-free rate. The same pre-computed inputs the site's Valuation Lab uses; saves stitching five separate calls.

get_valuation_inputs input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Stocks only — a DCF isn't meaningful for ETFs or crypto."
    }
  }
}
get_valuation_inputs annotations
{
  "title": "Valuation inputs (DCF)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_close_history
Advertised by the server during the last successful anonymous check.
Advertised read-only

Daily close-price history for a stock, ETF, or crypto pair over a selected range. Summary stats by default (start, end, high close, low close, percent change). Optionally returns the most recent N daily closes.

get_close_history input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "range": {
      "enum": [
        "1W",
        "1M",
        "3M",
        "6M",
        "1Y",
        "2Y",
        "ALL"
      ],
      "type": "string",
      "description": "Time range. Defaults to 1Y."
    },
    "ticker": {
      "type": "string",
      "description": "Ticker (e.g. AAPL, SPY) or crypto pair (e.g. BTC-USD, ETH-USD)."
    },
    "interval": {
      "enum": [
        "daily",
        "weekly",
        "monthly"
      ],
      "type": "string",
      "description": "Sampling interval for the returned closes (last close of each week/month). Defaults to daily. Combine with range='ALL' and include_recent=60 for up to 5 years of monthly closes."
    },
    "asset_type": {
      "enum": [
        "stock",
        "crypto"
      ],
      "type": "string",
      "description": "Asset type. Defaults to 'stock'. Use 'crypto' for pairs like BTC-USD."
    },
    "include_recent": {
      "type": "number",
      "maximum": 60,
      "minimum": 1,
      "description": "Optional: also return the most recent N closes at the chosen interval (max 60)."
    }
  }
}
get_close_history annotations
{
  "title": "Close history",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_earnings_transcript
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full earnings call transcript for a company and fiscal quarter — management remarks and the analyst Q&A, speaker by speaker. The primary source for guidance, segment color, and management tone. Long: use offset/limit to page through big calls.

get_earnings_transcript input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker",
    "quarter"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 200,
      "minimum": 1,
      "description": "Speaker turns to return. Defaults to all."
    },
    "offset": {
      "type": "number",
      "minimum": 0,
      "description": "Skip the first N speaker turns. Defaults to 0."
    },
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Transcripts cover individual companies only."
    },
    "quarter": {
      "type": "string",
      "pattern": "^\\d{4}Q[1-4]$",
      "description": "Fiscal quarter of the call, e.g. '2026Q1'. ⚠️ FISCAL, not calendar — and for a company whose fiscal year is offset they are different years. NVDA's quarter ending 2026-04-30 is 2027Q1, not 2026Q1; asking for 2026Q1 returns a call from May 2025 with no error. Do not derive this label from a calendar date. If unsure, try the label and check the speakers' own dates in the transcript before using anything from it."
    }
  }
}
get_earnings_transcript annotations
{
  "title": "Earnings call transcript",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_insider_transactions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recent insider transactions for a company — who bought or sold, role, shares, and price. Insider activity is context, not a signal: executives sell for many reasons.

get_insider_transactions input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 100,
      "minimum": 1,
      "description": "Transactions to include, newest first. Defaults to 20."
    },
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Individual companies only."
    }
  }
}
get_insider_transactions annotations
{
  "title": "Insider transactions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_market_movers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Top gainers, losers and most actively traded US tickers from the last completed session. Small illiquid names can dominate the gainers list — the volume column is there so you can judge. Movement is not merit.

get_market_movers input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "list": {
      "enum": [
        "gainers",
        "losers",
        "most_active"
      ],
      "type": "string",
      "description": "Which list to return. Defaults to all three."
    },
    "limit": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "Rows per list. Defaults to 10."
    }
  }
}
get_market_movers annotations
{
  "title": "Market movers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_institutional_holdings
Advertised by the server during the last successful anonymous check.
Advertised read-only

Institutional ownership of a company — total holders, ownership percentage, how many increased vs decreased positions, and the largest holders. Quarterly 13F data: always at least one quarter behind.

get_institutional_holdings input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Top holders to include. Defaults to 10."
    },
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Individual companies only."
    }
  }
}
get_institutional_holdings annotations
{
  "title": "Institutional holdings",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
discover_community_watchlists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Browse public watchlists curated by our research team at The Balanced Investor Club. Filter by asset type or sort by what's popular.

discover_community_watchlists input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 30,
      "minimum": 1
    },
    "sort_by": {
      "enum": [
        "popular",
        "recent",
        "mostItems"
      ],
      "type": "string",
      "description": "Default: popular"
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string"
    }
  }
}
discover_community_watchlists annotations
{
  "title": "Discover community watchlists",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_watchlist_by_slug
Advertised by the server during the last successful anonymous check.
Advertised read-only

Open a community watchlist by its slug — see the full list of constituents (tickers, sector, industry, asset type) plus follower count. Use the slug returned by `discover_community_watchlists`.

get_watchlist_by_slug input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "Watchlist slug, e.g. 'ai-and-tech-infrastructure'"
    }
  }
}
get_watchlist_by_slug annotations
{
  "title": "Open a community watchlist",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_instrument_popularity
Advertised by the server during the last successful anonymous check.
Advertised read-only

How many community watchlists include a given ticker — a simple read on what the club is tracking.

get_instrument_popularity input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol"
    }
  }
}
get_instrument_popularity annotations
{
  "title": "Instrument popularity",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_curated_lists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Backtested cross-MA strategies tuned for a specific ticker by The Balanced Investor Club — short/medium/long moving-average periods plus 1-year return, 3-year Sharpe, and trade count. Educational read on what historically lined up; never advice.

get_curated_lists input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol"
    }
  }
}
get_curated_lists annotations
{
  "title": "Backtested strategies for a ticker",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_fundamentals
Advertised by the server during the last successful anonymous check.
Advertised read-only

Company fundamentals for a stock — market cap, P/E, EPS, dividend yield, 52-week range, and up to 20 quarters of EPS history vs analyst consensus. Mirrors what the website shows in /analysis.

get_fundamentals input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock ticker (e.g. AAPL). Not applicable to ETFs or crypto."
    }
  }
}
get_fundamentals annotations
{
  "title": "Fundamentals snapshot",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_news
Advertised by the server during the last successful anonymous check.
Advertised read-only

Recent news mentioning a ticker, with article-level sentiment. Mirrors what the website shows in /analysis.

get_news input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "Up to 20 articles; default 10"
    },
    "ticker": {
      "type": "string",
      "description": "Stock, ETF, or crypto ticker (e.g. AAPL, SPY, BTC-USD)"
    }
  }
}
get_news annotations
{
  "title": "Recent news with sentiment",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_etf_profile
Advertised by the server during the last successful anonymous check.
Advertised read-only

Profile of an ETF — net assets, expense ratio, dividend yield, top holdings, and sector breakdown. Mirrors what the website shows in /analysis for ETFs.

get_etf_profile input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "ETF ticker (e.g. SPY, QQQ, VTI)"
    },
    "holdings_limit": {
      "type": "number",
      "maximum": 20,
      "minimum": 1,
      "description": "Top holdings to show; default 10"
    }
  }
}
get_etf_profile annotations
{
  "title": "ETF profile",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_instrument_overview
Advertised by the server during the last successful anonymous check.
Advertised read-only

Everything we offer about a single instrument in one shot — identification, current Market Mood + price alignment, fundamentals (stocks) or holdings (ETFs), and recent news. Equivalent of opening the /analysis page on the website. Mood and price-alignment snapshots refresh on a daily cycle and can lag the latest close by one session.

get_instrument_overview input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Stock, ETF, or crypto ticker (e.g. AAPL, SPY, BTC-USD)"
    }
  }
}
get_instrument_overview annotations
{
  "title": "Full instrument snapshot",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
about_us
Advertised by the server during the last successful anonymous check.
Advertised read-only

Who we are. Philosophy, framework, what we are — and what we are NOT. The thinking companion for the markets.

about_us input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
about_us annotations
{
  "title": "About The Balanced Investor Club",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_pricing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pricing tiers at The Balanced Investor Club — what each one unlocks. No sales pitch.

get_pricing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_pricing annotations
{
  "title": "Pricing tiers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
whoami
Advertised by the server during the last successful anonymous check.
Advertised read-only

A quick hello — your name, plan, how long you've been with The Balanced Investor Club, and today's date from our servers. Call this before stamping a date on any deliverable: the date here is authoritative, and a date you recall is not.

whoami input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
whoami annotations
{
  "title": "Who am I",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_watchlists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Read your private and followed watchlists at The Balanced Investor Club. Returns names, item counts, and how many people are following you on each.

get_my_watchlists input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Max watchlists per section; default 20"
    }
  }
}
get_my_watchlists annotations
{
  "title": "My watchlists",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_my_watchlists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search across your own watchlists, the curated/official ones, and shared community lists by name. Returns up to 5 matches per bucket.

search_my_watchlists input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 100,
      "minLength": 2,
      "description": "Search query (2-100 chars)"
    }
  }
}
search_my_watchlists annotations
{
  "title": "Search my watchlists",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_ticker_in_my_watchlists
Advertised by the server during the last successful anonymous check.
Advertised read-only

Quickly check whether a specific ticker is already in any watchlist you own or follow. Useful before adding it again.

check_ticker_in_my_watchlists input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker",
    "asset_type"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (e.g. AAPL, BTC-USD)"
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string",
      "description": "Asset type for the ticker"
    }
  }
}
check_ticker_in_my_watchlists annotations
{
  "title": "Is this ticker in my watchlists?",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_my_trades
Advertised by the server during the last successful anonymous check.
Advertised read-only

Your trades from the Trading Journal at The Balanced Investor Club. Optionally filter by status or ticker. Set include_notes to read back the thesis and lesson you wrote on each trade. Your data, your patterns — never advice.

list_my_trades input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "limit": {
      "type": "number",
      "maximum": 50,
      "minimum": 1,
      "description": "Trades to return; default 20"
    },
    "status": {
      "enum": [
        "Open",
        "Closed"
      ],
      "type": "string",
      "description": "Filter by trade status"
    },
    "ticker": {
      "type": "string",
      "description": "Filter to a specific ticker"
    },
    "include_notes": {
      "type": "boolean",
      "description": "Include the thesis, exit reason, lesson and notes written on each trade. Off by default because they are long — turn it on when looking at a handful of trades, not a whole book."
    },
    "include_paper": {
      "type": "boolean",
      "description": "Include paper/practice trades, which are excluded from your stats. Off by default, matching the journal on the site."
    }
  }
}
list_my_trades annotations
{
  "title": "My trades",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_journal_stats
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pre-aggregated stats from your Trading Journal — counts, win rate, P&L, profit factor, and emotion analytics. A calm mirror, no judgement.

get_my_journal_stats input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_my_journal_stats annotations
{
  "title": "My journal stats",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_trust_score
Advertised by the server during the last successful anonymous check.
Advertised read-only

Your Trust Score and what built it — discipline, sizing, journaling, drawdown control. A read on your own behaviour, not a verdict.

get_my_trust_score input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_my_trust_score annotations
{
  "title": "My Trust Score",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_cocreator_status
Advertised by the server during the last successful anonymous check.
Advertised read-only

Your Co-Creator status at The Balanced Investor Club — tier, days until renewal, monthly progress on the 2 feedback + 2 invite obligations, lifetime totals.

get_my_cocreator_status input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_my_cocreator_status annotations
{
  "title": "My Co-Creator status",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_my_briefing
Advertised by the server during the last successful anonymous check.
Advertised read-only

Your daily briefing at The Balanced Investor Club — a read on your own activity: morning brief, journal counts, the instruments you follow, mood highlights, activity, and your learning journey. A mirror, never advice.

get_my_briefing input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {}
}
get_my_briefing annotations
{
  "title": "My briefing",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
create_watchlist
Advertised by the server during the last successful anonymous check.

Create a new Stock Tracker — a place for the instruments you want to keep an eye on. Names are unique per user.

create_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "name"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "description": "Name of the Stock Tracker, e.g. 'My Tech Picks' or 'Dividend Champions'. 1–100 characters."
    },
    "is_public": {
      "type": "boolean",
      "description": "If true, others can discover and follow this Stock Tracker. Defaults to false (only visible to you)."
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "description": "Optional. What's the focus of this list? Up to 500 characters."
    },
    "alert_frequency": {
      "enum": [
        "none",
        "daily",
        "weekly",
        "monthly"
      ],
      "type": "string",
      "description": "Alert frequency for changes. Defaults to none."
    }
  }
}
create_watchlist annotations
{
  "title": "Create Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
add_to_watchlist
Advertised by the server during the last successful anonymous check.

Add an instrument to one of your Stock Trackers. Stocks, ETFs, and crypto pairs are supported. Pre-checks for duplicates so you don't end up with the same ticker twice.

add_to_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker",
    "watchlist",
    "asset_type"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (e.g. AAPL, SPY, BTC-USD)."
    },
    "ma_type": {
      "enum": [
        "EMA",
        "SMA"
      ],
      "type": "string",
      "description": "Moving Average Type. Defaults to EMA (Exponential)."
    },
    "watchlist": {
      "type": "string",
      "description": "Name of one of your Stock Trackers (e.g. 'My Tech Picks') or its id."
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string",
      "description": "Asset type. Required by the underlying endpoint."
    },
    "added_price": {
      "type": "number",
      "description": "Optional: the price when added, for entry-price tracking.",
      "exclusiveMinimum": 0
    }
  }
}
add_to_watchlist annotations
{
  "title": "Add to Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
remove_from_watchlist
Advertised by the server during the last successful anonymous check.
Advertised destructive

Remove an instrument from one of your Stock Trackers. This will remove the instrument from your stock tracker. This action cannot be undone.

remove_from_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker",
    "watchlist"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol to remove (e.g. AAPL)."
    },
    "watchlist": {
      "type": "string",
      "description": "Name of the Stock Tracker the ticker is in, or its id."
    },
    "asset_type": {
      "enum": [
        "stock",
        "etf",
        "crypto",
        "forex"
      ],
      "type": "string",
      "description": "Optional: helps disambiguate if the same ticker exists in multiple asset types."
    }
  }
}
remove_from_watchlist annotations
{
  "title": "Remove from Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
follow_watchlist
Advertised by the server during the last successful anonymous check.

Follow a public Stock Tracker so it shows up on your stock tracker page. Get updates when instruments are added or removed.

follow_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "watchlist_slug"
  ],
  "properties": {
    "watchlist_slug": {
      "type": "string",
      "description": "Slug of the public Stock Tracker to follow (e.g. 'ai-tech-infrastructure'). Find slugs via discover_community_watchlists."
    },
    "alert_frequency": {
      "enum": [
        "none",
        "daily",
        "weekly",
        "monthly"
      ],
      "type": "string",
      "description": "How often to receive alerts. Defaults to none."
    }
  }
}
follow_watchlist annotations
{
  "title": "Follow Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
unfollow_watchlist
Advertised by the server during the last successful anonymous check.
Advertised destructive

Stop following a public Stock Tracker. It disappears from your stock tracker page and you stop receiving its updates. Your own Stock Trackers are unaffected.

unfollow_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "watchlist_slug"
  ],
  "properties": {
    "watchlist_slug": {
      "type": "string",
      "description": "Slug or name of the Stock Tracker you're following. get_my_watchlists lists them."
    }
  }
}
unfollow_watchlist annotations
{
  "title": "Unfollow Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
update_watchlist
Advertised by the server during the last successful anonymous check.

Update one of your Stock Trackers — rename it, change the description, make it public or private, or change how often it alerts you. Only the fields you pass are changed.

update_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "watchlist"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 100,
      "minLength": 1,
      "description": "New name. 1–100 characters."
    },
    "is_public": {
      "type": "boolean",
      "description": "True makes it discoverable and followable by others. False makes it visible only to you."
    },
    "watchlist": {
      "type": "string",
      "description": "Name, slug or id of the Stock Tracker to update."
    },
    "description": {
      "type": "string",
      "maxLength": 500,
      "description": "New description. Up to 500 characters."
    },
    "show_anonymous": {
      "type": "boolean",
      "description": "When public, hide your identity as the author."
    },
    "alert_frequency": {
      "enum": [
        "none",
        "daily",
        "weekly",
        "monthly"
      ],
      "type": "string",
      "description": "How often this Stock Tracker alerts you to changes."
    }
  }
}
update_watchlist annotations
{
  "title": "Update Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
delete_watchlist
Advertised by the server during the last successful anonymous check.
Advertised destructive

Delete one of your Stock Trackers permanently, along with every instrument in it. If it was public, its followers lose it too. This cannot be undone.

delete_watchlist input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "watchlist",
    "confirm_name"
  ],
  "properties": {
    "watchlist": {
      "type": "string",
      "description": "Name, slug or id of the Stock Tracker to delete."
    },
    "confirm_name": {
      "type": "string",
      "description": "The exact name of the Stock Tracker, typed back, to confirm the deletion. Ask the user for it — do not fill this in on their behalf."
    }
  }
}
delete_watchlist annotations
{
  "title": "Delete Stock Tracker",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
log_trade
Advertised by the server during the last successful anonymous check.

Log a trade you've already made into your Trading Journal — ticker, direction, entry date, price, and quantity, plus an optional thesis and how you felt. This records a past decision; it never executes anything. Stocks, ETFs, and crypto only.

log_trade input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "ticker",
    "direction",
    "entry_date",
    "entry_price",
    "quantity"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "maxLength": 1000,
      "description": "Optional: anything else to remember."
    },
    "thesis": {
      "type": "string",
      "maxLength": 500,
      "description": "Optional: why this trade? What's your conviction?"
    },
    "ticker": {
      "type": "string",
      "description": "Ticker or crypto pair (e.g. AAPL, SPY, BTC-USD)."
    },
    "quantity": {
      "type": "number",
      "description": "Quantity / position size.",
      "exclusiveMinimum": 0
    },
    "direction": {
      "enum": [
        "Long",
        "Short"
      ],
      "type": "string",
      "description": "Trade direction."
    },
    "entry_date": {
      "type": "string",
      "description": "Entry date — ISO date (YYYY-MM-DD) or datetime."
    },
    "entry_price": {
      "type": "number",
      "description": "Entry price per share/unit.",
      "exclusiveMinimum": 0
    },
    "is_test_trade": {
      "type": "boolean",
      "description": "Mark this as a paper/practice trade. Paper trades are kept out of your real performance stats — win rate, P&L, and the emotion breakdown. Defaults to false (a real trade). Use true when trying something out, so you don't pollute your own record."
    },
    "emotional_state": {
      "type": "number",
      "maximum": 4,
      "minimum": -4,
      "description": "Optional emotional state on a -4 to +4 scale: -4 Panic, -3 Fearful, -2 Anxious, -1 Uneasy, 0 Neutral, 1 Calm, 2 Confident, 3 Very Confident, 4 Euphoric."
    },
    "confirm_duplicate": {
      "type": "boolean",
      "description": "Set true to log even if a matching trade (same ticker, date, direction) already exists."
    }
  }
}
log_trade annotations
{
  "title": "Log a trade",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
close_trade
Advertised by the server during the last successful anonymous check.

Close an open trade in your Trading Journal with an exit reflection — exit price, date, and optionally how you felt and what you learned. Identify the trade by id, or by ticker if you have a single open position for it.

close_trade input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "exit_price",
    "exit_date"
  ],
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Alternative to trade_id: the ticker of your single open trade."
    },
    "trade_id": {
      "type": "string",
      "description": "The trade id (from list_my_trades). Preferred when known."
    },
    "exit_date": {
      "type": "string",
      "description": "Exit date — ISO date (YYYY-MM-DD) or datetime."
    },
    "exit_price": {
      "type": "number",
      "description": "Exit price per share/unit.",
      "exclusiveMinimum": 0
    },
    "exit_reason": {
      "type": "string",
      "maxLength": 200,
      "description": "Optional: why you exited."
    },
    "lesson_learned": {
      "type": "string",
      "maxLength": 1000,
      "description": "Optional: a post-trade reflection — what you learned."
    },
    "emotional_state": {
      "type": "number",
      "maximum": 4,
      "minimum": -4,
      "description": "Optional emotional state on a -4 to +4 scale: -4 Panic, -3 Fearful, -2 Anxious, -1 Uneasy, 0 Neutral, 1 Calm, 2 Confident, 3 Very Confident, 4 Euphoric."
    }
  }
}
close_trade annotations
{
  "title": "Close a trade",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
update_trade
Advertised by the server during the last successful anonymous check.

Update fields on an existing trade in your Trading Journal — entry price, quantity, thesis, notes, how you felt at entry, or the lesson you took from it. Identify the trade by id.

update_trade input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "trade_id"
  ],
  "properties": {
    "notes": {
      "type": "string",
      "maxLength": 1000,
      "description": "Updated notes."
    },
    "thesis": {
      "type": "string",
      "maxLength": 500,
      "description": "Updated thesis — why this trade."
    },
    "quantity": {
      "type": "number",
      "description": "New quantity.",
      "exclusiveMinimum": 0
    },
    "trade_id": {
      "type": "string",
      "description": "The trade id (from list_my_trades)."
    },
    "entry_price": {
      "type": "number",
      "description": "New entry price.",
      "exclusiveMinimum": 0
    },
    "is_test_trade": {
      "type": "boolean",
      "description": "Reclassify the trade: true makes it a paper trade (excluded from your stats), false makes it a real one. Use delete_trade if what you want is to take a mistaken entry out of your record."
    },
    "lesson_learned": {
      "type": "string",
      "maxLength": 1000,
      "description": "What you took away from this trade. Can be written long after the exit — the lesson usually arrives later than the P&L."
    },
    "emotional_state": {
      "type": "number",
      "maximum": 4,
      "minimum": -4,
      "description": "Optional emotional state on a -4 to +4 scale: -4 Panic, -3 Fearful, -2 Anxious, -1 Uneasy, 0 Neutral, 1 Calm, 2 Confident, 3 Very Confident, 4 Euphoric. (entry)"
    }
  }
}
update_trade annotations
{
  "title": "Update a trade",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
delete_trade
Advertised by the server during the last successful anonymous check.
Advertised destructive

Take a trade out of your Trading Journal stats — for a mis-entry, a duplicate, or a practice trade you logged by mistake. The trade stops counting towards your win rate, P&L and emotion breakdown. The row itself is kept (the journal has no hard delete, by design), so the record of what you actually did stays honest.

delete_trade input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "trade_id",
    "confirm"
  ],
  "properties": {
    "confirm": {
      "type": "boolean",
      "description": "Must be true. Confirms the user asked for this trade to stop counting."
    },
    "trade_id": {
      "type": "string",
      "description": "The trade id to remove from your stats (from list_my_trades)."
    }
  }
}
delete_trade annotations
{
  "title": "Remove a trade from your stats",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": true
}
import_trades
Advertised by the server during the last successful anonymous check.

Import a batch of trades into your Trading Journal from a CSV export — Tradervue, TraderSync, Interactive Brokers, Degiro, or a generic CSV. Paste the CSV contents (including the header row). Columns are matched flexibly, so 'symbol'/'ticker', 'shares'/'quantity' and similar all work. Rows that can't be read are reported back rather than silently dropped.

import_trades input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "csv_data"
  ],
  "properties": {
    "source": {
      "enum": [
        "tradervue",
        "tradersync",
        "ibkr",
        "degiro",
        "generic"
      ],
      "type": "string",
      "description": "Which platform the export came from. Defaults to generic, which matches columns by name."
    },
    "csv_data": {
      "type": "string",
      "minLength": 1,
      "description": "The CSV contents, header row included. Needs at least ticker, entry date, entry price and quantity columns."
    },
    "skip_header": {
      "type": "boolean",
      "description": "Whether the first row is a header. Defaults to true."
    }
  }
}
import_trades annotations
{
  "title": "Import trades from CSV",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

1 advertised

start_here

Advertised by the server during the last successful anonymous check.

Start exploring The Balanced Investor Club — a calm orientation with the community's most popular Trackers right now.

No arguments advertised.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
1412 ms
95th percentile latency
1412 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1412 ms · metadata changed · 57 tool(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http the-balanced-investor-club-mcp https://thebalancedinvestorclub.com/api/mcp/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add the-balanced-investor-club-mcp --url https://thebalancedinvestorclub.com/api/mcp/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable the-balanced-investor-club-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "the-balanced-investor-club-mcp": {
      "url": "https://thebalancedinvestorclub.com/api/mcp/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "the-balanced-investor-club-mcp": {
      "type": "streamableHttp",
      "url": "https://thebalancedinvestorclub.com/api/mcp/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start the-balanced-investor-club-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "the-balanced-investor-club-mcp": {
      "type": "http",
      "url": "https://thebalancedinvestorclub.com/api/mcp/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http the-balanced-investor-club-mcp https://thebalancedinvestorclub.com/api/mcp/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://thebalancedinvestorclub.com/api/mcp/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "the-balanced-investor-club-mcp": {
      "serverUrl": "https://thebalancedinvestorclub.com/api/mcp/mcp"
    }
  }
}

Let your agent find its tools

Find servers like The Balanced Investor Club MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run The Balanced Investor Club MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing