Skip to main content
Glama

Kaleidoscope MCP (SEC & financial data)

13F Institutional Flow Screener

thirteenf_screen
Read-onlyIdempotent

Cross-company 13F screener — find tickers matching institutional flow / velocity criteria. This is the cross-cutting view that single-company tools can't give you.

Key filters (the v3 differentiation):

  • is_cluster_entry=true → ≥3 notable funds entered this quarter (consensus buy)

  • is_cluster_exit=true → ≥3 notable funds exited (consensus sell)

  • is_quiet_accumulation=true → rising holder count + value with small avg positions (stealth)

  • consecutive_accum_qtrs_min=N → N+ consecutive quarters of net institutional inflow

  • consecutive_dist_qtrs_min=N → N+ consecutive quarters of net outflow

  • n_notable_new_positions_min=N → at least N notable funds opened a new position this Q

  • n_notable_exits_min=N → at least N notable funds fully exited this Q (the sell-side mirror)

  • exclude_funds=true → drop ETPs / open-end / closed-end funds / funds-of-funds

  • notable_holder_ciks=[...] → tickers held by any of these notable manager CIKs

Compound example: is_cluster_entry=true + consecutive_accum_qtrs_min=2 → sustained accumulation that just got a notable-fund cluster on top.

Default sort: net_change_value (this quarter's net institutional inflow in dollars, share-based). Each row carries breadth (n_increased / n_decreased / n_new_positions / n_exits across all 13F holders) and the notable-cohort counts (n_notable_new_positions / n_notable_exits / notable_net_value_usd).

Data is refreshed every ~4 hours from EDGAR 13F filings. Coverage artifacts (#2168, 2025Q4 on): when a security joins the SEC 13(f) list (or its old CUSIP leaves as the new one joins), holders that already owned it start or stop reporting it; those new / exit rows are not trades and are left out of new-position and exit counts, flows and cluster flags. Affected rows carry coverage_artifact.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "thirteenf_screen"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMax tickers to return (default: 20, max: 100)
sort_byNoSort field, descending. Default: net_change_value (largest net inflows first). The `_usd`-suffixed names that appear in output rows (e.g. notable_new_position_value_usd) are also accepted.
ticker_inNoRestrict to this list of tickers (useful for ranking a watchlist by flow).
report_dateNoQuarter-end (YYYY-MM-DD) to replay the screen on, e.g. 2025-03-31. Default: the latest mature quarter. Every signal and filter then reads that quarter; `as_of_effective` echoes it. Past quarters can take up to 30s on a first read; if that runs out the tool returns error=query_timeout with retryable=true, so retry. 13Fs are public up to 45 days after quarter-end. Look-ahead: notable_* fields and filters use today's notable fund list on every quarter, so they aren't point-in-time.
exclude_fundsNoDeprecated: funds are now excluded by default. exclude_funds=false is read as include_funds=true.
include_fundsNoAlso screen funds (ETPs / open-end / closed-end / funds-of-funds, holdings_company_quarterly.is_fund). Default false: funds are excluded and counted in `n_funds_filtered`; untyped (NULL) securities are kept. With ticker_in the default is true, so a named fund isn't silently dropped.
is_cluster_exitNoTrue = ≥3 notable funds exited (consensus sell signal).
is_cluster_entryNoTrue = ≥3 notable funds entered this quarter (consensus buy signal).
n_notable_exits_minNoMinimum notable funds that fully exited the position this quarter.
notable_holder_ciksNoFilter to tickers held by ANY of these notable manager CIKs (server-side OR via MatchAny). Useful for 'companies held by Ackman OR Loeb'.
is_quiet_accumulationNoTrue = rising holders + value with small avg positions (stealth pattern).
n_notable_holders_minNoMinimum notable funds currently holding the ticker.
include_new_securitiesNoAlso screen securities flagged is_new_security (first quarter on file: IPOs, CUSIP successions), whose whole holder base reads as new buying. Default false: excluded and counted in `n_new_securities_filtered`. With ticker_in the default is true. exclude_corporate_actions=true always excludes them.
consecutive_dist_qtrs_minNoMinimum consecutive quarters of net institutional outflow.
exclude_corporate_actionsNoWhen true, exclude CUSIPs flagged `corporate_action_suspect`, `is_new_security` (a CUSIP succeeding an old one) or `is_holder_collapse` (ADR/CUSIP migrations / share-class consolidations that look like mass cluster-entry / cluster-exit but are mechanical, NOT real institutional conviction shifts). Canonical examples per smart_money 2026-06-12: AZN/AZNN AstraZeneca ADR retirement (1,266 'exits' / 1,259 'new positions' across the pair), AMCR old/new CUSIP. **Recommended `true` when combined with is_cluster_entry/exit filters** — without it the screen surfaces these as flagship conviction picks. Default false (back-compat). `corporate_action_suspect` is a real column in the postgres backend, so this filter is immediate (no propagation lag).
consecutive_accum_qtrs_minNoMinimum consecutive quarters of net institutional inflow.
n_notable_new_positions_minNoMinimum notable funds that opened a new position this quarter.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly/idempotent/non-destructive, so the description is free to add what they can't: ~4-hour EDGAR refresh cadence, the coverage-artifact caveat that new/exit rows are not trades and are excluded from counts/flags, and what each output row carries. It stops short of stating result-size or cost behavior beyond what the schema already documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded purpose sentence, then a scannable bullet list of key filters, then a compound example, then data-freshness notes. The coverage-artifact paragraph is dense but carries non-redundant meaning; nothing is pure filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 17-parameter screener with no output schema, it covers the important gaps: signal definitions, default sort, what a returned row contains, refresh cadence, and the coverage-artifact exclusion rule. Minor omissions (result-size behavior, interaction ordering among filters) are acceptable given the already-rich schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3; the description goes beyond it by translating terse filter names into signal semantics (cluster entry = ≥3 notable funds entered = consensus buy; quiet accumulation = stealth pattern) and by explaining the default sort and row breadth/notable-cohort fields. That interpretive layer is what the schema alone does not supply.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Cross-company 13F screener — find tickers matching institutional flow / velocity criteria') and explicitly contrasts itself with single-company tools, so an agent can place it relative to thirteenf_holders or thirteenf_portfolio without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete guidance on what the tool is for, enumerates the differentiating filters, and supplies a compound example ('is_cluster_entry=true + consecutive_accum_qtrs_min=2') showing intended combination. It does not name a sibling alternative to use instead when the task is single-company, but the 'cross-cutting view' framing implies the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources