Skip to main content
Glama

Kaleidoscope MCP (SEC & financial data)

Adviser Screener (cross-sectional Form ADV: size, type, clean-record, fees)

adv_screen_managers
Read-onlyIdempotent

Adviser Screener — rank and filter Form ADV advisers with AUM (one row per CRD, ~21.6K) by size, growth, client base, fees, custodian, location, regulatory record and adviser moves. Matches Console's Adviser Screener (/ledger/advisers).

Each row: aum (+ aum_as_of), g1 / g3 (1y / 3y AUM growth as a fraction, 0.25 = +25%; null when AUM at the start was under $50M), focus (wealth / institutional / private_funds / mixed — the client type holding 50%+ of RAUM), n_clients, n_employees, n_iar, mgmt_fee_pct / perf_fee_pct (headline brochure fees), n_private_funds, main_custodian (holds the most RAUM), city / state, events_5y (regulatory events, firm- and affiliate-level, in the last 5 years), has_serious_disciplinary, net_advisers_1y (advisers joined minus left; covers only ~5K firms — null means not covered, not zero).

Presets (preset; explicit filters override a preset's values): growing_wealth (wealth focus, $100M+, 1y +15%), large_wealth (wealth, $10B+), emerging ($100M–$1B with 3y +50%), private_funds, institutional, adding_advisers (net_advisers_1y ≥ +5), losing_advisers (≤ −5), shrinking (1y −15% or worse), regulatory (1+ event in 5 years, $100M+).

Filters: aum_min / aum_max (USD), g1_min / g1_max / g3_min (fractions), focus, state (2-letter), custodian (name substring), fee_max (max management fee %), pf_min (min private funds), net1_min / net1_max, events_min, name (substring) or crd. Older filters still work: min_raum / max_raum, clean_only, with_cik_only (13F-joinable — chain into thirteenf_* tools), registration_type, top_fund_type_in, firm_name_substring, max_mgmt_fee_pct, min_perf_fee_pct (NULL perf fee does not match; for private-fund advisers it usually means carry is in the LPA, so this undercounts), has_hurdle, fee_type_in, fee_data_only.

Sort: raum_desc (default), raum_asc, g1_desc, g1_asc, g3_desc, net1_desc, net1_asc, events_desc, fee_asc, n_private_funds_desc, n_accounts_desc (by clients). Growth / mover presets default to the matching sort. limit default 25, max 200. n_universe is the full match count.

as_of (YYYY-MM-DD) switches to the point-in-time Form ADV history screen (2017-10 → 2026-05, replay only); the new Console fields and presets are current-only and are rejected with as_of. The current screen covers SEC-registered advisers only, so registration_type='ERA'/'STATE' needs as_of.

Each row carries source_filing_id (the Form ADV filing behind aum / raum) and, on the current screen, source_brochure_id (the brochure the headline fees were extracted from; if_adv_brochure opens it).

Every adviser crd in the output has the adviser's SEC cik beside it (#2287; x_crd -> x_cik, a CRD list -> ..._crd_ciks): the CIK of the 13F filer that reports under that CRD, else the CIK on its own Form ADV; ciks lists both when they differ; null when neither exists. A row that already had its own cik keeps it.

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": "adv_screen_managers"
  }
}

Input Schema

NameRequiredDescriptionDefault
crdNoOne adviser by CRD.
nameNoFirm name substring.
sortNoSort order. raum_desc by default; growth / mover presets default to the matching sort.
as_ofNoPoint-in-time date (YYYY-MM-DD). When set, screens from `manager_profile_history` (300K rows / 23K firms / 2017-10 → 2026-05) — each adviser shown at their latest ADV filing on or before this date. **REPLAY-ONLY path** — full cross-section is ~1.4s on cold cache vs ~2ms on the current snapshot, so omit `as_of` for interactive 'now' screening. **Caveat**: fee filters are NOT yet point-in-time (latest fees only); when as_of and fee filters are combined, response carries `fees_not_pit_warning=true`. ERA/STATE filings have no date_submitted and silently drop from the as_of universe.
focusNoClient base (the client type with 50%+ of RAUM).
limitNoMax rows returned (default 25, max 200).
stateNoOffice state, 2-letter (e.g. 'NY').
g1_maxNoMaximum 1y AUM growth as a fraction (-0.15 = down 15% or more).
g1_minNoMinimum 1y AUM growth as a fraction (0.10 = +10%).
g3_minNoMinimum 3y AUM growth as a fraction (0.5 = +50%).
pf_minNoMinimum number of private funds.
presetNoConsole screener preset. Explicit filters override the preset's values.
aum_maxNoMaximum AUM in USD.
aum_minNoMinimum AUM in USD.
fee_maxNoMaximum headline management fee % (1.0 = 1%).
max_raumNoMaximum current_raum in USD.
min_raumNoMinimum current_raum in USD (e.g. 5e9 = $5B).
net1_maxNoMaximum net advisers gained over 1y (negative = losing).
net1_minNoMinimum net advisers gained over 1y.
custodianNoMain custodian name substring (e.g. 'Schwab', 'Fidelity' — Fidelity custody is 'NATIONAL FINANCIAL SERVICES').
clean_onlyNoIf true, require has_serious_disciplinary=false AND n_redflags=0. The 'clean' set shrunk on 2026-06-13 when registered-IA regulatory was added (firms with serious DRPs doubled 291 → 1,261 — Merrill 193 / LPL 186 / Edward Jones 130 / Citigroup 124 firm-level regulatory now disqualify). Pre-2025 dormant firms still have regulatory undercount.
events_minNoMinimum regulatory events in the last 5 years.
has_hurdleNoFilter by firm-level has_hurdle flag (true = any component carries a hurdle; false = none do). 'Hedge funds with NO hurdle' = `has_hurdle=false` + `min_perf_fee_pct=20`.
fee_type_inNoFilter to advisers with at least one component matching these fee_types (free-text from the brochure extractor — common values: 'management', 'performance', 'hourly', 'fixed', 'wrap', 'subscription', 'commission'). Multi-select with OR semantics.
fee_data_onlyNoIf true, restrict to advisers with `fee_data_available=true` (a row in firm_fees). 23,266 advisers covered (2,236 are 13F-joinable). Use when you need the universe to be filterable on fee filters non-trivially.
with_cik_onlyNoIf true, restrict to advisers with a resolved SEC CIK (the 13F-join key). 5,501 of 52,228 qualify.
max_mgmt_fee_pctNoMaximum headline management fee % (from latest brochure). 'Find sub-1% advisers' = `max_mgmt_fee_pct=1.0`. NULL mgmt fees are EXCLUDED from this filter (use fee_data_only=true to make NULL-handling explicit).
min_perf_fee_pctNoMinimum headline performance fee % (from latest brochure). 'Find 20%+ carry advisers' = `min_perf_fee_pct=20`. **NULL perf fees do NOT match this filter** — but a NULL perf fee on a private-fund adviser usually means 'carry is in the LPA' not 'no carry,' so this filter UNDERCOUNTS perf-fee shops. Use the components-level inspection via adv_manager_fees if the universe must be exhaustive.
top_fund_type_inNoFilter by the dominant private-fund type per adviser (free-text from Form ADV — common values: 'Private Equity Fund', 'Hedge Fund', 'Real Estate Fund', 'Venture Capital Fund', 'Securitized Asset Fund', 'Liquidity Fund', 'Other Private Fund').
registration_typeNoSEC = SEC-registered, ERA = Exempt Reporting Adviser, STATE = state-registered. Most institutional managers are SEC.
firm_name_substringNoCase-insensitive substring match on firm_name. Useful for finding all advisers in a family (e.g. 'BERKSHIRE' returns Berkshire Partners + Berkshire Asset Mgmt + Berkshire Property Advisors).
include_stale_unverifiedNoDefault false. When false, suppresses rows where `raum_as_of` is more than 2 years stale AND `registration_type IS NULL` — catches the unit-decoding-bug class (e.g. VISTA FINANCIAL ADVISORS LLC showing $11.5T, raum_as_of 2023-04-05, registration_type NULL). Set true to disable the guard if you're auditing data quality directly. `n_suppressed_stale_unverified` reports how many rows were hidden.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: as_of is replay-only (~1.4s cold vs ~2ms current), fee filters are not point-in-time and produce fees_not_pit_warning, ERA/STATE filings silently drop under as_of, and stale/unverified rows can be suppressed with a count. It also explains NULL handling in fee filters and the source IDs/brochure IDs returned per row.

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?

The description is front-loaded with a clear purpose and organized into row fields, presets, filters, sort, as_of, and CIK mapping sections. It is dense and long, but appropriate for a 32-parameter screening tool, with only minor redundancy against the schema.

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

Completeness5/5

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

Despite having no output schema and 32 parameters, it describes the returned row fields, match count, source_filing_id/source_brochure_id, and CRD-to-CIK mapping. It also covers point-in-time behavior, fee limitations, and stale-data suppression, leaving no major operational detail missing.

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 the baseline is 3, but the description adds real meaning by defining each preset's implied filters, noting that explicit filters override presets, documenting older filter aliases, and clarifying NULL fee undercounting. Some caveats duplicate the schema descriptions, so it stops short of 5.

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?

States a specific verb and resource: rank and filter Form ADV advisers with AUM, one row per CRD (~21.6K), by size, growth, clients, fees, custodian, location, regulatory record, and adviser moves. It also maps to the Console screener and distinguishes itself from related tools like adv_manager_fees and thirteenf_* by naming the join/chain path.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance with presets, filter aliases, sort defaults, and clear exclusions: omit as_of for interactive now-screening, use as_of only for replay, and use adv_manager_fees when fee coverage must be exhaustive. It also warns that new Console fields/presets are rejected with as_of and that ERA/STATE registration needs as_of.

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