> ## Documentation Index
> Fetch the complete documentation index at: https://stockcontext.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Decision brief

> Assemble one symbol's context — search, overview, and optional insider — into a single answer-first brief.

A decision brief is the context a user needs to think about one symbol, with none of the trade advice. The spine is `stock_search` → `stock_overview`; add `stock_insider`, `stock_filings`, or `stock_financials` only when the prompt asks for it. This is a context product, not an advisor: report what the data says, never tell the user to buy, sell, hold, or size anything.

## The spine

```text theme={null}
stock_search  { "q": "AAPL" }        # resolve + confirm is_covered, once
stock_overview { "symbol": "AAPL" }  # profile, financials, valuation, growth
```

`stock_overview` is the body of the brief: it returns the latest financials, the `valuation` block, and growth rates in one call. For a plain "give me a brief," that is the whole job — `stock_financials`, `stock_insider`, and `stock_filings` are depth you add on request.

## Worked example: a brief on Apple

From `stock_overview { "symbol": "AAPL" }` (trimmed to the fields the brief uses):

```json title="stock_overview (trimmed)" theme={null}
{
  "data": {
    "growth": {
      "revenue":    { "yoy_pct": { "value": "0.0643" } },
      "net_income": { "yoy_pct": { "value": "0.1950" } }
    },
    "valuation": {
      "price_to_earnings": { "value": "39.4611", "provenance": "computed_from_prices",
        "inputs": { "price_date": "2026-07-01" } },
      "fcf_yield":     { "value": "0.0227", "provenance": "computed_from_prices" },
      "dividend_yield": { "value": "0.0035", "provenance": "computed_from_prices" }
    }
  },
  "meta": { "as_of": { "sec": "2026-06-26" } }
}
```

### The brief this supports

Answer first, then the facts, then a provenance line that separates the two clocks, then the calls used:

> **Apple grew both revenue and earnings over its last fiscal year and trades at a premium multiple.** Revenue rose about 6.4% and net income about 19.5% year over year. It trades at a trailing P/E of roughly 39.5, a free-cash-flow yield near 2.3%, and a dividend yield around 0.35%.
>
> Provenance: the growth figures are SEC-filed fundamentals (`as_of.sec` 2026-06-26). The P/E and yields are `computed_from_prices` — fundamentals against a market close on 2026-07-01 — so they move with the price, not the filings.
>
> Calls used: stock\_search, stock\_overview. This is context, not advice.

Two things make that a good brief rather than a generated one: it keeps the two clocks separate (the filing-based growth vs. the price-based multiples), and it labels the price-derived multiples as such instead of implying the filing states them.

## Adding insider activity

If the prompt asks about insiders, add `stock_insider`. The response is a faithful transcription of Form 4s (`provenance: "sec_filing"`) plus a summary. Here is a real result for a different company, NVIDIA:

```json title="stock_insider symbol=NVDA (trimmed)" theme={null}
{
  "data": {
    "summary": {
      "buys": 0, "sells": 2, "net_shares": "-877734",
      "unique_insiders": 6, "filings_examined": 7, "cap_hit": false
    },
    "transactions": [
      { "provenance": "sec_filing", "insider": "LORA MELISSA", "relationship": "director",
        "code": "A", "acquired": true, "shares": "1211", "filed": "2026-06-29" }
    ]
  },
  "meta": { "as_of": { "sec": "2026-06-29" }, "basis": "form_4_as_filed" }
}
```

Read it faithfully: over the window there were 0 buys and 2 sells across 6 insiders, netting about -877,734 shares. `shares` is a decimal string; `code` is the SEC transaction code (resolve it in the `stock_reference` catalogs). Report the net direction, keep the sign, and do not turn a routine sale into a signal.

## When the data says "no answer"

If `stock_search` returns `is_covered: false` with `ingestion_pending`, the symbol is real but not yet ingested — say the fundamentals are not available yet and stop. If a value inside the brief is a refusal (`unavailable` is present), report the gap; do not fill it with a guess. A brief that admits a gap is more useful than one that invents.

<Card title="Agent recipes" icon="bot" href="/docs/agents/recipes">
  Reusable prompt-to-call sequences and answer templates.
</Card>
