The thesis

What changed

What has happened for a company since a date, read against its case: the latest quarter's earnings, filings and 8-K events, insider trades, capital returns, price move.

TOOLwhat_changed
Server
https://mcp.optimistfi.com/mcp
Authentication
None
Access
Read-only: it changes nothing
Example call
curl https://mcp.optimistfi.com/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"what_changed","arguments":{"entity":"AAPL","since":"2026-09-01"}}}'

When a model calls it

Models choose a tool from its description. This is the one the server publishes:

What has happened for a company since a date, read against its case: the latest quarter's earnings, filings and 8-K events, insider trades, capital returns, price move. Use when the user asks: what changed with X; catch me up on X. response_mode=plain for beginners. Not for: the standing case → get_thesis. Args: entity; since.
  • what changed with X
  • catch me up on X

For something else: get_thesis.

Parameters

entitystringrequired

The company: a ticker (AAPL, BRK.B), a company name (Apple) or an SEC CIK.

sincestring

Window start as an ISO date (YYYY-MM-DD); unset reads the last 30 days.

response_modestringdefault "standard"

standard
the full read with the investment case
plain
a short beginner-friendly explanation at the reading_level grade

Accepts standard, plain.

reading_levelinteger

With response_mode plain, who the explanation is written for: 5 a complete beginner, 10 a general reader, 13 an informed investor (unset reads as 13, with precise figures).

Accepts 5, 10, 13.

Response

A real response to the example call, trimmed: lists cut to two items, long text cut short. The result's content holds the answer as JSON text; parsed, it reads:

result.content · parsed
{
  "entity": {
    "figi": "BBG000B9XRY4",
    "cik": "0000320193",
    "ticker": "AAPL",
    "name": "Apple Inc."
  },
  "type": "brief",
  "schema_version": "1.0",
  "direction": "backward",
  "event_time": "2026-10-12",
  "as_of": "2026-10-12",
  "confidence": "estimated",
  "data": {
    "entity": {
      "figi": "BBG000B9XRY4",
      "cik": "0000320193",
      "ticker": "AAPL",
      "name": "Apple Inc."
    },
    "window": {
      "since": "2026-09-01",
      "as_of": "2026-10-12",
      "means": "event sections cover this window only; state sections are current"
    },
    "classification": {
      "sector": "Manufacturing",
      "industry": "Electronic Computers",
      "exchange": "Nasdaq"
    },
    "financials": {
      "revenue": 416161000000,
      "net_income": 112010000000,
      "eps_diluted": 7.46,
      "operating_cash_flow": 111482000000,
      "shares_outstanding": 14594180000,
      "assets": 383266000000,
      "equity": 107520000000,
      "currency": "USD",
      "income_period_end": "2025-09-27",
      "balance_sheet_date": "2026-06-27",
      "shares_outstanding_date": "2026-07-17",
      "net_margin_pct": 26.9,
      "revenue_growth_pct": 6.4
    },
    "price": {
      "close": 336.64001,
      "date": "2026-10-09",
      "rsi_14": 56.1238,
      "license": "internal",
      "since": {
        "close": 325.13,
        "date": "2026-09-01",
        "change_pct": 3.54,
        "sessions": 28
      }
    },
    "sentiment": {
      "score": -0.704,
      "label": "bearish",
      "components": {
        "insider": {
          "raw": -1,
          "effective": -0.8
        },
        "congress": {
          "raw": -0.6399,
          "effective": -0.4799
        }
      },
      "flows": {
        "insider": {
          "buy": 0,
          "sell": 151839695.47,
          "n": 24
        },
        "congress": {
          "buy": 56003.5,
          "sell": 255005.5,
          "n": 18
        }
      },
      "caveat": "Insider selling is routine at large caps (equity compensation) and is a much weaker signal than insider buying. Interpret negative insider scores accordingly; positive scores are the rarer, stronger signal."
    },
    "insider_recent": [
      {
        "date": "2026-10-06",
        "name": "Jennifer Newstead",
        "title": "SVP, GC and Government Affairs",
        "code": "S",
        "transaction": "open-market sale",
        "direction": "sold",
        "acquired_disposed": "D",
        "shares": 2399,
        "price": 332.01,
        "value": 796491.99
      },
      {
        "date": "2026-10-02",
        "name": "Timothy D Cook",
        "title": "Executive Chair",
        "code": "S",
        "transaction": "open-market sale",
        "direction": "sold",
        "acquired_disposed": "D",
        "shares": 40879,
        "price": 333.94,
        "value": 13651133.26
      },
      "… 10 more"
    ],
    "insider_count_in_window": 40,
    "insider_window_flows": {
      "buy": 0,
      "sell": 91579463.43,
      "transactions": 16,
      "since": "2026-09-01",
      "basis": "summed from the Form 4 filings listed alongside it"
    },
    "upcoming": [
      {
        "date": "2026-10-29",
        "kind": "earnings",
        "detail": "median gap 91d over 8 filings",
        "confidence": "estimated"
      }
    ],
    "congressional_activity": {
      "trades": 200,
      "buys": 104,
      "sells": 96,
      "distinct_members": 57,
      "lean": "net buying",
      "most_recent": "2026-09-22"
    },
    "market": {
      "date": "2026-10-12",
      "is_open": true,
      "next_trading_day": "2026-10-13"
    },
    "economy": {
      "treasury_yield": 5.24,
      "unemployment_rate": 4.2,
      "cpi": 334.98
    },
    "size": {
      "market_cap": 4912984901142,
      "short_interest_shares": 120763539,
      "short_interest_date": "2026-09-30",
      "days_to_cover": 3.03,
      "average_daily_volume": 39858260,
      "short_interest_pct_of_shares": 0.83
    }
  },
  "window": {
    "since": "2026-09-01",
    "baseline_source": "explicit"
  },
  "thesis_impact": {
    "what_this_is": "How this data reads against the company's investment case: the one-line thesis, and for each claim the reading that supports it (helps) and the reading that challenges it (hurts), plus the single condition that would break the case. The interpretation that sits beside the figure.",
    "thesis": "Apple converts a dominant installed base and tightly integrated hardware + software ecosystem into high-margin recurring services and cash flow, which fund buybacks, R&D and new product categories and preserve pricing power.",
    "helps_and_hurts": [
      {
        "claim": "Apple's ecosystem-driven Services and recurring-revenue mix will sustain and modestly expand…",
        "helps": "OperatingIncome increased from 123.22B (FY2024) to 133.05B (FY2025); GrossProfit increased from 180.68B (FY2024) to 195.2B (FY2025)",
        "hurts": "Regulatory or antitrust actions that force changes to the App Store revenue model (e.g., EU/US rules limiting fees or…; Major competitive shifts where Android ecosystems materially close the services monetization gap (Google, Microsoft…"
      },
      {
        "claim": "iPhone product cycles and premium positioning remain the primary cash-and-profit engine such…",
        "helps": "Total Revenue rose from 391.04B (FY2024) to 416.16B (FY2025), implying continued strength in core…; Multi-year revenue trend: 383.29B (FY2023) → 391.04B (FY2024) → 416.16B (FY2025)",
        "hurts": "A sustained shift of premium smartphone demand to lower-priced Android competitors reducing iPhone ASP (competition…; A structural slowdown in replacement cycles (longer device lifetimes or macro-driven deferred upgrades)"
      },
      "… 2 more"
    ],
    "breaks_the_case": "A structural break in ecosystem monetization or product premium — specifically, regulatory or competitive changes that materially reduce Services take-rates and iPhone ASPs, causing operating-income to stop growing despite product launches.",
    "full_case": "available via get_thesis",
    "changes_since": "2026-09-01"
  }
}

Fields are explained in Reading a response.

Errors

A call the server cannot run (a missing or invalid argument) comes back with isError: true and the reason in words. A company or market the server cannot match comes back as a result naming what was not found. See Errors and limits.
ScoutJUST THIS STORY

LET’S MAKE THIS USEFUL · 1 OF 5

How would you like me to explain this?

Tell me what you want from this read. Start with a quick note, then adjust the details. Your other stories stay as they are.

We’ll remember your view of this story. The published article stays unchanged.

THIS STORY’S READING VIEWStandard · The whole picture

Clear explanations with context. Both sides of the evidence.