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

# MCP Tools

> All 27 MCP tools this server advertises, generated from the schema it embeds.

This page is generated from `go/mcpserver/tool_schemas.json`, the tool schema file the MCP server embeds and advertises over `tools/list`. Names, parameters, defaults, and required flags stay in sync with what the live server actually accepts, because the table rows come from that file, not from hand-typed notes.

<Note>
  Call any of these over MCP at `https://financialdatasets.rip/mcp`. See [MCP Server](/integrations/mcp-server) for client setup. Only 15 of the 27 tools also have a REST route. See [Coverage](/overview/coverage) for the gap between the two.
</Note>

## Status legend

| Badge                                                                       | Meaning                                                                                                      |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ |
| <Icon icon="check" color="#16a34a" /> Live, validated                       | Implemented and confirmed against production Monid with real paid calls.                                     |
| <Icon icon="triangle-alert" color="#d97706" /> Implemented, unverified live | Implemented and unit-tested against mocked provider responses. No paid production call has confirmed it yet. |
| <Icon icon="circle-x" color="#dc2626" /> Not implemented                    | Registered for interface parity. Every call answers a zero-cost `not_implemented` error.                     |

<Warning>
  `get_income_statement`, `get_balance_sheet`, `get_cash_flow_statement`, and `get_financial_metrics` default `period` differently depending on transport. The MCP tool schema default is `ttm`, as published in the tool schema. The REST route for the same data defaults an omitted `period` to `annual` instead. Pass `period` explicitly on both transports.
</Warning>

<Note>
  Defaults on this page are the MCP tool schema defaults, what a tool call uses when you omit a parameter. The REST facade documented in the [API Reference](/api-reference) sets its own defaults per route, and they do not always match. `get_filings`' MCP default `limit` is `100`. The REST `/filings` route defaults an omitted `limit` to `10`. Pass parameters explicitly when a default matters to you.
</Note>

## Company Information

### `get_company_facts`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Looks up a US public company by ticker in Monid's company catalog and returns its ticker and registered name. Cik lookup is declared for schema parity, but any call that sets cik is rejected with a bad\_request error. Only the ticker path is routed. The response schema has room for market cap, sector, exchange, SIC codes, and similar attributes, but this server sources ticker and name only; every other field is left out rather than filled with a guess.

| Parameter | Type   | Required | Default | Description                                                                                                                                |
| --------- | ------ | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `ticker`  | string | no       |         | Stock ticker to look up, for example 'AAPL', 'MSFT', or 'TSLA'. Required; this server does not support cik-based lookup.                   |
| `cik`     | string | no       |         | SEC Central Index Key. Accepted for schema parity, but every call that sets it is rejected with a bad\_request error; pass ticker instead. |

## Financial Statements

### `get_balance_sheet`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a company's balance sheet. Assets, liabilities, and shareholders' equity as of each report\_period, one row per report\_period, built from its reported financial statements and joined with filing metadata where this server can source it. As\_reported is accepted for schema parity, but any true value is rejected with a bad\_request error: this server always returns the standardized fields, never a filer's raw as-reported line items.

| Parameter           | Type                                  | Required | Default | Description                                                                                                                                                                                                                                         |
| ------------------- | ------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                                | yes      |         | Ticker symbol to fetch the statement for, for example 'AAPL', 'MSFT', or 'TSLA'.                                                                                                                                                                    |
| `period`            | string (`annual`, `quarterly`, `ttm`) | no       | `"ttm"` | Reporting cadence: 'annual', 'quarterly', or 'ttm' (trailing twelve months, the default).                                                                                                                                                           |
| `limit`             | integer                               | no       | `4`     | Maximum number of periods to return (default 4, maximum 100).                                                                                                                                                                                       |
| `report_period_gte` | string                                | no       |         | Only include rows whose report\_period falls on or after this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `report_period_lte` | string                                | no       |         | Only include rows whose report\_period falls on or before this date, given as YYYY-MM-DD.                                                                                                                                                           |
| `report_period_gt`  | string                                | no       |         | Only include rows whose report\_period falls strictly after this date, given as YYYY-MM-DD.                                                                                                                                                         |
| `report_period_lt`  | string                                | no       |         | Only include rows whose report\_period falls strictly before this date, given as YYYY-MM-DD.                                                                                                                                                        |
| `report_period`     | string                                | no       |         | Only include the row whose report\_period exactly equals this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `as_reported`       | boolean                               | no       | `false` | When true, would return the filer's raw as-reported line items instead of the standardized fields. This server does not source raw as-reported data, so any true value is rejected with a bad\_request error; only the default of false is honored. |

### `get_cash_flow_statement`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a company's cash flow statement. Operating, investing, and financing cash flows for each report\_period, one row per report\_period, built from its reported financial statements and joined with filing metadata where this server can source it. As\_reported is accepted for schema parity, but any true value is rejected with a bad\_request error: this server always returns the standardized fields, never a filer's raw as-reported line items.

| Parameter           | Type                                  | Required | Default | Description                                                                                                                                                                                                                                         |
| ------------------- | ------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                                | yes      |         | Ticker symbol to fetch the statement for, for example 'AAPL', 'MSFT', or 'TSLA'.                                                                                                                                                                    |
| `period`            | string (`annual`, `quarterly`, `ttm`) | no       | `"ttm"` | Reporting cadence: 'annual', 'quarterly', or 'ttm' (trailing twelve months, the default).                                                                                                                                                           |
| `limit`             | integer                               | no       | `4`     | Maximum number of periods to return (default 4, maximum 100).                                                                                                                                                                                       |
| `report_period_gte` | string                                | no       |         | Only include rows whose report\_period falls on or after this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `report_period_lte` | string                                | no       |         | Only include rows whose report\_period falls on or before this date, given as YYYY-MM-DD.                                                                                                                                                           |
| `report_period_gt`  | string                                | no       |         | Only include rows whose report\_period falls strictly after this date, given as YYYY-MM-DD.                                                                                                                                                         |
| `report_period_lt`  | string                                | no       |         | Only include rows whose report\_period falls strictly before this date, given as YYYY-MM-DD.                                                                                                                                                        |
| `report_period`     | string                                | no       |         | Only include the row whose report\_period exactly equals this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `as_reported`       | boolean                               | no       | `false` | When true, would return the filer's raw as-reported line items instead of the standardized fields. This server does not source raw as-reported data, so any true value is rejected with a bad\_request error; only the default of false is honored. |

### `get_income_statement`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a company's income statement. Revenue, expenses, and net income for each report\_period, one row per report\_period, built from its reported financial statements and joined with filing metadata where this server can source it. As\_reported is accepted for schema parity, but any true value is rejected with a bad\_request error: this server always returns the standardized fields, never a filer's raw as-reported line items.

| Parameter           | Type                                  | Required | Default | Description                                                                                                                                                                                                                                         |
| ------------------- | ------------------------------------- | -------- | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                                | yes      |         | Ticker symbol to fetch the statement for, for example 'AAPL', 'MSFT', or 'TSLA'.                                                                                                                                                                    |
| `period`            | string (`annual`, `quarterly`, `ttm`) | no       | `"ttm"` | Reporting cadence: 'annual', 'quarterly', or 'ttm' (trailing twelve months, the default).                                                                                                                                                           |
| `limit`             | integer                               | no       | `4`     | Maximum number of periods to return (default 4, maximum 100).                                                                                                                                                                                       |
| `report_period_gte` | string                                | no       |         | Only include rows whose report\_period falls on or after this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `report_period_lte` | string                                | no       |         | Only include rows whose report\_period falls on or before this date, given as YYYY-MM-DD.                                                                                                                                                           |
| `report_period_gt`  | string                                | no       |         | Only include rows whose report\_period falls strictly after this date, given as YYYY-MM-DD.                                                                                                                                                         |
| `report_period_lt`  | string                                | no       |         | Only include rows whose report\_period falls strictly before this date, given as YYYY-MM-DD.                                                                                                                                                        |
| `report_period`     | string                                | no       |         | Only include the row whose report\_period exactly equals this date, given as YYYY-MM-DD.                                                                                                                                                            |
| `as_reported`       | boolean                               | no       | `false` | When true, would return the filer's raw as-reported line items instead of the standardized fields. This server does not source raw as-reported data, so any true value is rejected with a bad\_request error; only the default of false is honored. |

## Financial Metrics

### `get_financial_metrics`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a company's historical financial-metrics series. Margins, per-share figures, and turnover and leverage ratios computed from its reported financial statements. One row per report\_period. Because historical market values (share price, market capitalization) are not sourceable for past periods without inventing numbers, this server omits every metric derived from them: enterprise\_value, the price\_to\_\* ratios, EV multiples, free\_cash\_flow\_yield, peg\_ratio, return\_on\_invested\_capital, currency, and filing\_datetime never appear. Margin, ROE, and ROA figures use each period's ending balance; turnover ratios use the average of the period's opening and ending balances. TTM rows additionally omit the filing-identity fields (accession\_number, form\_type, filing\_url, filing\_date), since a trailing-twelve-month window spans more than one filing.

| Parameter           | Type                                  | Required | Default | Description                                                                                  |
| ------------------- | ------------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------- |
| `ticker`            | string                                | yes      |         | Ticker symbol to compute metrics for, for example 'AAPL', 'MSFT', or 'TSLA'.                 |
| `period`            | string (`annual`, `quarterly`, `ttm`) | no       | `"ttm"` | Reporting cadence: 'annual', 'quarterly', or 'ttm' (trailing twelve months, the default).    |
| `limit`             | integer                               | no       | `4`     | Maximum number of periods to return (default 4, maximum 100).                                |
| `report_period_gte` | string                                | no       |         | Only include rows whose report\_period falls on or after this date, given as YYYY-MM-DD.     |
| `report_period_lte` | string                                | no       |         | Only include rows whose report\_period falls on or before this date, given as YYYY-MM-DD.    |
| `report_period_gt`  | string                                | no       |         | Only include rows whose report\_period falls strictly after this date, given as YYYY-MM-DD.  |
| `report_period_lt`  | string                                | no       |         | Only include rows whose report\_period falls strictly before this date, given as YYYY-MM-DD. |
| `report_period`     | string                                | no       |         | Only include the row whose report\_period exactly equals this date, given as YYYY-MM-DD.     |

### `get_financial_metrics_snapshot`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a single current snapshot of a company's key financial metrics. Market capitalization, valuation ratios such as P/E, and similar live indicators. Built from the most recent quote and statement data this server can source right now. Use get\_financial\_metrics instead for a historical series across multiple periods.

| Parameter | Type   | Required | Default | Description                                                       |
| --------- | ------ | -------- | ------- | ----------------------------------------------------------------- |
| `ticker`  | string | yes      |         | Ticker symbol to snapshot, for example 'AAPL', 'MSFT', or 'TSLA'. |

## Earnings

### `get_earnings`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns a flat list of EarningsRecord objects, each carrying ticker, report\_period, fiscal\_period, currency, source\_type, filing\_date, filing\_url, accession\_number, and a quarterly and/or annual block with revenue, EPS, and surprise-versus-estimate figures. This server composes every record from a company's 10-K or 10-Q filing only; 8-K earnings releases and 20-F foreign-filer reports are not sourced. Pass ticker to fetch up to 5 of that company's most recent earnings records, newest filing\_date first. Omit ticker to pull the market-wide feed instead: this server walks the Nasdaq earnings calendar, resolves each reporting company's latest 10-K/10-Q earnings row in parallel, and returns up to 5 rows sorted by filing\_date descending, skipping any ticker it cannot resolve rather than failing the whole request.

| Parameter | Type   | Required | Default | Description                                                                                                                                                                                                                                                |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`  | string | no       |         | Ticker symbol, for example 'AAPL', 'MSFT', or 'TSLA', to fetch one company's most recent earnings. Leave this out to fetch the market-wide feed of recently filed earnings across every company this server can resolve from the Nasdaq earnings calendar. |

## Stock Prices

### `get_stock_price`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns the latest live price snapshot for a stock: current price, trading volume, and the day's open, high, low, and close, sourced from Monid's real-time summary route.

| Parameter | Type   | Required | Default | Description                                                |
| --------- | ------ | -------- | ------- | ---------------------------------------------------------- |
| `ticker`  | string | yes      |         | Ticker to snapshot, for example 'AAPL', 'MSFT', or 'TSLA'. |

### `get_stock_prices`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Returns historical OHLCV price bars for a stock across a date range. This server always sources daily bars and, for interval values other than 'day', aggregates them locally into week/month/year bars; 'second' and 'minute' are declared in the schema for parity but are rejected with a bad\_request error, since sub-day granularity is not sourced. Interval\_multiplier is accepted for schema parity, but only its default of 1 is honored. Any other value is rejected. Despite the schema's stated defaults, this server requires both start\_date and end\_date; omitting either is rejected rather than defaulting to a trailing year or today. Bars come back in ascending time order, and each bar's time is the bar's end date in UTC.

| Parameter             | Type                                                        | Required | Default | Description                                                                                                                                                                                                                   |
| --------------------- | ----------------------------------------------------------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`              | string                                                      | yes      |         | Ticker to fetch price history for, for example 'AAPL', 'MSFT', or 'TSLA'.                                                                                                                                                     |
| `interval`            | string (`second`, `minute`, `day`, `week`, `month`, `year`) | no       | `"day"` | Bar size. This server sources daily bars and aggregates them locally for 'week', 'month', and 'year' (the default is 'day'); 'second' and 'minute' are declared for schema parity but are rejected with a bad\_request error. |
| `interval_multiplier` | integer                                                     | no       | `1`     | Multiplier applied to interval. Only the default value of 1 is supported; any other value is rejected with a bad\_request error.                                                                                              |
| `start_date`          | string                                                      | no       |         | Start of the date range, given as YYYY-MM-DD. Required by this server; there is no default despite the schema's stated one.                                                                                                   |
| `end_date`            | string                                                      | no       |         | End of the date range, given as YYYY-MM-DD. Required by this server; there is no default despite the schema's stated one.                                                                                                     |

## News

### `get_news`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Fetches recent news articles about a company, matched to its ticker through entity search and sorted newest first. Ticker is required: this server does not route the market-wide, tickerless news feed the wider schema describes, so leaving it out is rejected with a bad\_request error.

| Parameter | Type    | Required | Default | Description                                                                                                                                                   |
| --------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`  | string  | no       |         | Ticker of the company to fetch news for, for example 'AAPL' or 'MSFT'. Required; this server does not source market-wide news, so leaving it out is rejected. |
| `limit`   | integer | no       | `5`     | Maximum number of articles to return (default 5, maximum 10).                                                                                                 |

## SEC Filings

### `get_filing_items`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Fetches one or more sections ("items") from a company's 10-K, 10-Q, or 8-K SEC filing. For example Item 1 (Business), Item 1A (Risk Factors), or Item 9.01 (Financial Statements and Exhibits). Supply year to target a specific filing year; for 10-Q filings, quarter narrows further to one quarter. Omit year and this server automatically resolves the ticker's most recently filed matching filing instead of requiring one. Accession\_number narrows the match when several filings of the requested type and year exist, which matters most for 8-K, where a company can file more than once a year. Set item to one or more codes from list\_filing\_item\_types to return only those sections; leave it out to return every section this server can extract from the filing.

| Parameter          | Type                           | Required | Default | Description                                                                                                                                                                                                    |
| ------------------ | ------------------------------ | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`           | string                         | yes      |         | Ticker symbol of the filer, for example 'AAPL'.                                                                                                                                                                |
| `filing_type`      | string (`10-K`, `10-Q`, `8-K`) | yes      |         | SEC form to pull sections from: '10-K' (annual report), '10-Q' (quarterly report), or '8-K' (current report).                                                                                                  |
| `year`             | integer                        | no       |         | Filing year to target. Optional: when it is left out, this server automatically resolves the ticker's most recently filed matching filing\_type instead of requiring a year.                                   |
| `quarter`          | integer                        | no       |         | Quarter (1-4) used to disambiguate among a ticker's 10-Q filings in the given year; ignored for 10-K and 8-K.                                                                                                  |
| `accession_number` | string                         | no       |         | SEC accession number that pins down one specific filing among several matching filing\_type/year candidates; most useful for 8-K, where a company can file more than once a year.                              |
| `item`             | array                          | no       |         | One or more item codes to return, such as 'Item-1A' or 'Item-9.01'; see list\_filing\_item\_types for the full catalog per filing\_type. Omit to return every section this server can extract from the filing. |

### `get_filings`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Lists SEC filings for a ticker, including each filing's accession number, form type, report date, and document URL. Pass ticker to identify the company; cik is accepted for schema parity, but every call that sets it is rejected with a bad\_request error. Only the ticker path is routed. Filing\_type narrows results to one of '10-K', '10-Q', '8-K', '20-F', or '6-K'; limit bounds how many filings come back.

| Parameter     | Type    | Required | Default | Description                                                                                                                                |
| ------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `ticker`      | string  | no       |         | Ticker of the filer to look up, for example 'AAPL'. Required; this server does not support cik-based lookup.                               |
| `cik`         | string  | no       |         | SEC Central Index Key. Accepted for schema parity, but every call that sets it is rejected with a bad\_request error; pass ticker instead. |
| `limit`       | integer | no       | `100`   | Maximum number of filings to return (default 100, maximum 1000).                                                                           |
| `filing_type` | string  | no       |         | Restricts results to one filing type: '10-K', '10-Q', '8-K', '20-F', or '6-K'. Any other value is rejected with a bad\_request error.      |

### `list_filing_item_types`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Lists every filing-section code this server recognizes for get\_filing\_items' item parameter, grouped by filing\_type (10-K, 10-Q, 8-K). Each entry's description field carries the section's official SEC title, so this catalog also serves as a lookup table for what each item code covers.

*No parameters.*

## Segmented Financials

### `get_segmented_financials`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Extracts segment-level breakdowns. Revenue, operating income, and depreciation by product or business segment; assets, goodwill, and long-lived assets by segment; and capital expenditure by segment. From a company's most recent annual 10-K, through document extraction rather than a segments database. Period only accepts 'annual' today; passing 'quarterly' is rejected with a bad\_request error, since this server extracts from the annual 10-K only. The report\_period filters narrow the extracted segment records to a range or an exact date.

| Parameter           | Type                           | Required | Default    | Description                                                                                                     |
| ------------------- | ------------------------------ | -------- | ---------- | --------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                         | yes      |            | Ticker of the company to extract segment data for, for example 'AAPL'.                                          |
| `period`            | string (`annual`, `quarterly`) | no       | `"annual"` | Reporting cadence. Only 'annual' (the default) is supported; 'quarterly' is rejected with a bad\_request error. |
| `limit`             | integer                        | no       | `4`        | Maximum number of segment records to return (default 4, maximum 100).                                           |
| `report_period_gte` | string                         | no       |            | Only include segment records whose report\_period falls on or after this date, given as YYYY-MM-DD.             |
| `report_period_lte` | string                         | no       |            | Only include segment records whose report\_period falls on or before this date, given as YYYY-MM-DD.            |
| `report_period_gt`  | string                         | no       |            | Only include segment records whose report\_period falls strictly after this date, given as YYYY-MM-DD.          |
| `report_period_lt`  | string                         | no       |            | Only include segment records whose report\_period falls strictly before this date, given as YYYY-MM-DD.         |
| `report_period`     | string                         | no       |            | Only include the segment record whose report\_period exactly equals this date, given as YYYY-MM-DD.             |

## Operating KPIs

### `get_kpi_guidance`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Extracts forward-looking KPI guidance issued by company management from a company's single most recent matching SEC filing: its latest 10-K for period='annual' or latest 10-Q for period='quarterly'. Data comes from document extraction, not an internal guidance database. Metric\_name filters the extracted set to one guidance metric. Report\_period\_gte and report\_period\_lte check whether that one filing's report\_period falls in the given range: if it does not, this server returns an empty list rather than searching earlier filings. This server applies no per-account gating; every caller with a valid Monid key gets the same access.

| Parameter           | Type                           | Required | Default       | Description                                                                                                                                                        |
| ------------------- | ------------------------------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ticker`            | string                         | yes      |               | Ticker of the company to extract from, for example 'AAPL'.                                                                                                         |
| `period`            | string (`quarterly`, `annual`) | no       | `"quarterly"` | Which filing to extract from: 'quarterly' (the latest 10-Q, the default) or 'annual' (the latest 10-K).                                                            |
| `metric_name`       | string                         | no       |               | Restrict the response to one metric name from the extracted set, for example 'Revenue' or 'EPS'. Omit to return every metric this server extracts from the filing. |
| `report_period_gte` | string                         | no       |               | Only return guidance rows if the selected filing's report\_period falls on or after this date, given as YYYY-MM-DD; otherwise this server returns an empty list.   |
| `report_period_lte` | string                         | no       |               | Only return guidance rows if the selected filing's report\_period falls on or before this date, given as YYYY-MM-DD; otherwise this server returns an empty list.  |
| `limit`             | integer                        | no       | `4`           | Maximum number of guidance rows to return from the selected filing (default 4, maximum 50).                                                                        |

### `get_kpi_metrics`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Extracts KPI-taxonomy metrics. Subscriber counts, ARPU, units sold, and similar operating metrics. From a company's single most recent matching SEC filing: its latest 10-K for period='annual' or latest 10-Q for period='quarterly'. Data comes from document extraction, not an internal metrics database. Metric\_name filters the extracted set to one metric. Report\_period\_gte and report\_period\_lte check whether that one filing's report\_period falls in the given range: if it does not, this server returns an empty list rather than searching earlier filings. This server applies no per-account gating; every caller with a valid Monid key gets the same access.

| Parameter           | Type                           | Required | Default       | Description                                                                                                                                                         |
| ------------------- | ------------------------------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                         | yes      |               | Ticker of the company to extract from, for example 'AAPL'.                                                                                                          |
| `period`            | string (`quarterly`, `annual`) | no       | `"quarterly"` | Which filing to extract from: 'quarterly' (the latest 10-Q, the default) or 'annual' (the latest 10-K).                                                             |
| `metric_name`       | string                         | no       |               | Restrict the response to one metric name from the extracted set, for example 'iPhone units sold'. Omit to return every metric this server extracts from the filing. |
| `report_period_gte` | string                         | no       |               | Only return KPI rows if the selected filing's report\_period falls on or after this date, given as YYYY-MM-DD; otherwise this server returns an empty list.         |
| `report_period_lte` | string                         | no       |               | Only return KPI rows if the selected filing's report\_period falls on or before this date, given as YYYY-MM-DD; otherwise this server returns an empty list.        |
| `limit`             | integer                        | no       | `4`           | Maximum number of KPI rows to return from the selected filing (default 4, maximum 50).                                                                              |

### `get_kpi_non_gaap`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Extracts non-GAAP metrics a company reports about itself. Adjusted EBITDA, company-defined Free Cash Flow, and similar figures. From its single most recent matching SEC filing: the latest 10-K for period='annual' or latest 10-Q for period='quarterly'. Data comes from document extraction, not an internal metrics database. Metric\_name filters the extracted set to one metric. Report\_period\_gte and report\_period\_lte check whether that one filing's report\_period falls in the given range: if it does not, this server returns an empty list rather than searching earlier filings. This server applies no per-account gating; every caller with a valid Monid key gets the same access.

| Parameter           | Type                           | Required | Default       | Description                                                                                                                                                                           |
| ------------------- | ------------------------------ | -------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`            | string                         | yes      |               | Ticker of the company to extract from, for example 'AAPL'.                                                                                                                            |
| `period`            | string (`quarterly`, `annual`) | no       | `"quarterly"` | Which filing to extract from: 'quarterly' (the latest 10-Q, the default) or 'annual' (the latest 10-K).                                                                               |
| `metric_name`       | string                         | no       |               | Restrict the response to one metric name from the extracted set, for example 'Adjusted EBITDA' or 'Free Cash Flow'. Omit to return every metric this server extracts from the filing. |
| `report_period_gte` | string                         | no       |               | Only return non-GAAP rows if the selected filing's report\_period falls on or after this date, given as YYYY-MM-DD; otherwise this server returns an empty list.                      |
| `report_period_lte` | string                         | no       |               | Only return non-GAAP rows if the selected filing's report\_period falls on or before this date, given as YYYY-MM-DD; otherwise this server returns an empty list.                     |
| `limit`             | integer                        | no       | `4`           | Maximum number of non-GAAP rows to return from the selected filing (default 4, maximum 50).                                                                                           |

## Interest Rates

### `get_interest_rates`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Returns the current policy interest rate of the Federal Reserve, the European Central Bank, the Bank of England and the Bank of Japan, each read from the bank's own publication: the Fed target-range midpoint, the ECB deposit facility rate, the BOE Bank Rate, and the BOJ rate from its newest Statement on Monetary Policy PDF. Each is dated by its decision. No parameters are accepted. A bank whose page cannot be read in a given call is left out; if none can be, the call fails.

*No parameters.*

## Index Funds

### `get_index_fund`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Returns an ETF or index fund's current holdings and each position's weight (percent of net assets), scraped from the fund's public holdings fact sheet rather than pulled from an SEC filing feed. The response has a fund header (name, as-of date, total and returned holding counts) followed by holdings sorted by weight descending. As\_of narrows to the composition in effect on or before that date; if the routable fact sheet is dated after as\_of, this server answers not\_found instead of guessing an earlier composition. Asset\_class filters holdings to 'equity' or 'bond' instruments; omit it for everything the fact sheet lists. Limit and offset page through the holdings list.

| Parameter     | Type                      | Required | Default | Description                                                                                                                                                            |
| ------------- | ------------------------- | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`      | string                    | yes      |         | Ticker of the fund to fetch, for example 'SPY', 'QQQ', or 'VTI'. Required.                                                                                             |
| `as_of`       | string                    | no       |         | Return the fund composition in effect on or before this date, given as YYYY-MM-DD. Without it, this server returns whatever the routable fact sheet currently reports. |
| `asset_class` | string (`equity`, `bond`) | no       |         | Restrict holdings to 'equity' or 'bond' instruments. Omit to return every holding the fact sheet lists.                                                                |
| `limit`       | integer                   | no       | `50`    | Maximum number of holdings to return in this page (default 50, maximum 1000).                                                                                          |
| `offset`      | integer                   | no       | `0`     | Number of holdings to skip before this page starts, for paging through a large holdings list (default 0).                                                              |

## Insider Trades

### `get_insider_trades`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Lists insider (officer, director, or major-shareholder) buy and sell transactions for a company, sourced from the SEC Form 4 feed. The feed returns at most 15 rows per query, so a larger limit is clamped rather than rejected.  Name matches case-insensitively against the feed's full insider-relationship text (for example 'Cook' matches 'Timothy D Cook - Chief Executive Officer'), not a bare person name.

| Parameter         | Type    | Required | Default | Description                                                                                                                                                              |
| ----------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `ticker`          | string  | yes      |         | Ticker of the company whose insider transactions to list, for example 'AAPL'.                                                                                            |
| `name`            | string  | no       |         | Case-insensitive substring match against the insider's full relationship text, for example 'Cook' or 'Director'.                                                         |
| `filing_date`     | string  | no       |         | Restricts to transactions filed exactly this day, given as YYYY-MM-DD.                                                                                                   |
| `filing_date_gte` | string  | no       |         | Restricts to transactions filed on or after this day, given as YYYY-MM-DD.                                                                                               |
| `filing_date_lte` | string  | no       |         | Restricts to transactions filed on or before this day, given as YYYY-MM-DD.                                                                                              |
| `limit`           | integer | no       | `100`   | Maximum rows to return. The underlying Form 4 feed returns at most 15 rows per query, so any larger value, including the default, is clamped to 15 rather than rejected. |

## Insider Ownership

### `get_insider_ownership`

<Icon icon="circle-x" color="#dc2626" /> **Not implemented**

This server does not yet implement insider-ownership statements: every call returns a typed not-implemented error before any upstream request is made, so it never costs the caller and never returns invented data. Its intended interface mirrors SEC Form 3 (an insider's day-one ownership statement) and Form 5 (the annual statement): what officers, directors, and 10%+ owners hold. Common shares, options, RSUs. As distinct from get\_insider\_trades, which is meant to cover the buy/sell events in between.

| Parameter         | Type                            | Required | Default | Description                                                                                                                                                                                                          |
| ----------------- | ------------------------------- | -------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`          | string                          | yes      |         | Ticker of the company whose insiders are sought. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                               |
| `name`            | string                          | no       |         | Case-insensitive substring filter on insider name that would narrow results once this tool is implemented, for example 'cook'. Accepted for interface parity; has no effect while this tool answers not-implemented. |
| `form_type`       | string (`3`, `3/A`, `5`, `5/A`) | no       |         | Would restrict to SEC form '3' (initial ownership statement), '5' (annual statement), or their amendments '3/A'/'5/A'. Accepted for interface parity; has no effect while this tool answers not-implemented.         |
| `filing_date`     | string                          | no       |         | Would restrict to filings dated exactly this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                         |
| `filing_date_gte` | string                          | no       |         | Would restrict to filings dated on or after this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                     |
| `filing_date_lte` | string                          | no       |         | Would restrict to filings dated on or before this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                    |
| `filing_date_gt`  | string                          | no       |         | Would restrict to filings dated strictly after this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                  |
| `filing_date_lt`  | string                          | no       |         | Would restrict to filings dated strictly before this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                 |
| `limit`           | integer                         | no       | `10`    | Row cap that would bound the response (default 10, maximum 1000). Accepted for interface parity; has no effect while this tool answers not-implemented.                                                              |

## Institutional Holdings

### `get_institutional_holdings`

<Icon icon="triangle-alert" color="#d97706" /> **Implemented, unverified live**

Returns SEC Form 13F institutional-holdings rows for a security, each carrying the filer's CIK and name alongside the position, sourced from the SEC Form 4 provider's institutional-holdings route. Pass ticker to see which institutional filers hold that security. Filer\_cik is accepted for schema parity, but every call that sets it is rejected with a bad\_request error. This server routes only the ticker path, not a per-filer lookup. Report\_period narrows to one quarter-end date; report\_period\_gte/report\_period\_lte bound a range. Without a report\_period filter, this server returns the most recent quarter the underlying route has on file for the ticker.

| Parameter           | Type    | Required | Default | Description                                                                                                                                            |
| ------------------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `filer_cik`         | string  | no       |         | SEC CIK of an institutional filer. Accepted for schema parity, but every call that sets it is rejected with a bad\_request error; pass ticker instead. |
| `ticker`            | string  | no       |         | Ticker of the held security to look up institutional filers for, for example 'AAPL'.                                                                   |
| `report_period`     | string  | no       |         | Restricts to the 13F quarter-end whose report\_period exactly equals this date, given as YYYY-MM-DD.                                                   |
| `report_period_gte` | string  | no       |         | Restricts to quarter-ends on or after this date, given as YYYY-MM-DD.                                                                                  |
| `report_period_lte` | string  | no       |         | Restricts to quarter-ends on or before this date, given as YYYY-MM-DD.                                                                                 |
| `limit`             | integer | no       | `10`    | Maximum number of holdings rows to return (default 10, maximum 200).                                                                                   |

### `get_institutional_investors`

<Icon icon="circle-x" color="#dc2626" /> **Not implemented**

This server does not yet implement institutional-filer discovery: every call returns a typed not-implemented error before any upstream request is made, so it never costs the caller and never returns invented data. Once live, it is meant to list SEC 13F filers with their CIK and most recently reported name, with an optional name-prefix filter to help locate the filer\_cik that get\_institutional\_holdings expects.

| Parameter | Type   | Required | Default | Description                                                                                                                                                                                                 |
| --------- | ------ | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`    | string | no       |         | Case-insensitive name prefix that would narrow the filer list once this tool is implemented, for example 'Berkshire'. Accepted for interface parity; has no effect while this tool answers not-implemented. |

## Beneficial / Activist Ownership

### `get_beneficial_owners`

<Icon icon="circle-x" color="#dc2626" /> **Not implemented**

This server does not yet implement beneficial-owner discovery: every call returns a typed not-implemented error before any upstream request is made, so it never costs the caller and never returns invented data. Once live, it is meant to list the reporting persons behind SEC Schedule 13D/13G stakes (holders of more than 5% of a company's shares), pairing each with its SEC filer CIK, and to accept an optional name prefix so callers can locate the filer\_cik that get\_beneficial\_ownership expects.

| Parameter | Type    | Required | Default | Description                                                                                                                                                                                                       |
| --------- | ------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`    | string  | no       |         | Case-insensitive name prefix that would narrow the beneficial-owner list once this tool is implemented, for example 'Saba'. Accepted for interface parity; has no effect while this tool answers not-implemented. |
| `limit`   | integer | no       | `100`   | Row cap that would bound how many owners come back once this tool is implemented (default 100, maximum 1000). Accepted for interface parity; has no effect while this tool answers not-implemented.               |

### `get_beneficial_ownership`

<Icon icon="circle-x" color="#dc2626" /> **Not implemented**

This server does not yet implement beneficial-ownership lookups: every call returns a typed not-implemented error before any upstream request is made, so it never costs the caller and never returns invented data. Its intended interface mirrors SEC Schedules 13D and 13G, which cover stakes of more than 5% of a share class: 13D signals activist intent (proxy fights, board seats, pushing for a sale), while 13G stakes are passive, typically held by large asset managers. A caller would supply exactly one of ticker (which owners hold this company) or filer\_cik (which stakes this owner holds); type would narrow to activist or passive; history, once implemented, would return a stake's full amendment trail instead of only its latest state. Coverage was scoped to begin January 2025.

| Parameter         | Type                           | Required | Default | Description                                                                                                                                                                                                                                                                              |
| ----------------- | ------------------------------ | -------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ticker`          | string                         | no       |         | Ticker of the company whose beneficial owners are sought. Supply exactly one of ticker or filer\_cik. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                              |
| `filer_cik`       | string                         | no       |         | SEC CIK of the beneficial owner whose stakes are sought (would be zero-padded to 10 digits). Supply exactly one of ticker or filer\_cik; look up a CIK by owner name with get\_beneficial\_owners. Accepted for interface parity; has no effect while this tool answers not-implemented. |
| `type`            | string (`activist`, `passive`) | no       |         | Would restrict results to 'activist' (Schedule 13D) or 'passive' (Schedule 13G) stakes; omit for both. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                             |
| `history`         | boolean                        | no       |         | When true, would return a stake's full amendment history instead of only its current state. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                                        |
| `filing_date`     | string                         | no       |         | Would restrict to filings dated exactly this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                                                             |
| `filing_date_gte` | string                         | no       |         | Would restrict to filings dated on or after this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                                                         |
| `filing_date_lte` | string                         | no       |         | Would restrict to filings dated on or before this day, given as YYYY-MM-DD. Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                                                        |
| `limit`           | integer                        | no       | `10`    | Row cap that would bound the response (default 10, maximum 1000). Accepted for interface parity; has no effect while this tool answers not-implemented.                                                                                                                                  |

## Stock Screener

### `list_stock_screener_filters`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Lists the exact filter fields, operators, and allowed values screen\_stocks currently executes: 'exchange' (operator 'eq', one of NASDAQ/NYSE/AMEX) and 'market\_cap' (operator 'eq', one of the bucket labels mega/large/mid/small/micro/nano). The screen\_stocks parameter schema has room for many more fields across income-statement, balance-sheet, cash-flow, and company-attribute metrics, but this server only ever routes the two fields listed here; the rest are declared for schema parity and are rejected with a bad\_request error if used.

*No parameters.*

### `screen_stocks`

<Icon icon="check" color="#16a34a" /> **Live, validated**

Screens stocks with the Nasdaq stock screener, but only two fields are wired up in this server: 'exchange' (one of 'NASDAQ', 'NYSE', 'AMEX') and 'market\_cap' (one of the bucket labels 'mega', 'large', 'mid', 'small', 'micro', 'nano'. Not a numeric threshold). Supply one or two filter objects, each using operator 'eq' with a string value; any other field, operator, numeric value, or repeated field is rejected with a bad\_request error before this server spends anything. Call list\_stock\_screener\_filters first to see the exact set this server executes. Currency is accepted for schema parity, but only 'USD' (the default) is honored; any other value is rejected.

| Parameter  | Type    | Required | Default | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| ---------- | ------- | -------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `filters`  | array   | yes      |         | One or two filter objects of the form {field, operator, value}. This server executes only field 'exchange' (operator 'eq', value one of 'NASDAQ'/'NYSE'/'AMEX') and field 'market\_cap' (operator 'eq', value one of the bucket labels 'mega'/'large'/'mid'/'small'/'micro'/'nano'); each field may appear at most once. Any other field, operator, or value type is rejected with a bad\_request error. Call list\_stock\_screener\_filters to see this exact set. |
| `currency` | string  | no       | `"USD"` | Currency of the screened financial data. Only 'USD' (the default) is supported by this server; any other value is rejected with a bad\_request error.                                                                                                                                                                                                                                                                                                               |
| `limit`    | integer | no       | `10`    | Maximum number of matching stocks to return (default 10, maximum 100).                                                                                                                                                                                                                                                                                                                                                                                              |
