MCP server and client for SEC-registered financial advisor data — search, profiles, disclosures status, firm fees. By AdvisorFinder.
Six tools with complete input schemas and descriptions. Naming follows verb_noun pattern (search_*, get_*, check_*). Descriptions are detailed (150-250 chars) and explain WHAT, WHEN, and data source. All parameters have types and descriptions. Output schemas are documented in descriptions but not formally in JSON Schema. Error handling is present but minimal, no recovery guidance or actionable error messages visible in code. No tool annotations (readOnlyHint, destructiveHint). All tools are READ_ONLY, which is good for safety but not explicitly declared in schema.
Lightweight check for an advisor by CRD number — returns just the essentials (name, current firm, disclosure status, verification links) without the full employment/exam history. Useful for quick verification or when you already know the advisor.
Get the full profile for an investment adviser representative (IAR) by CRD number — no need to search first if you already have it. Returns employment history (current firm first, then previous), exams passed, the states where they hold an investment-adviser registration (`advisory_states`; broker-dealer state registrations are reported separately as a labeled count in `also_registered_as_broker`, because selling securities is not the same as giving investment advice), professional designations (always labeled self-reported — none of this data is independently verified), years in the industry, and four-state disclosure status (never phrased as "clean"/"safe": none_reported / disclosed_no_detail / disclosed_with_detail / unknown). Data is derived from SEC IAPD / FINRA BrokerCheck.
Get live counts and data vintage information for the underlying SEC-registered advisor database. Returns total advisor count, total firm count, four-state disclosure tally (none_reported / disclosed_no_detail / disclosed_with_detail / unknown), and the refresh dates for each data source (SEC IAPD, FINRA BrokerCheck, individuals bulk file).
Get the full profile for an SEC-registered investment adviser firm by CRD number. Returns headquarters and branch office locations, count of active investment adviser representatives (IARs), fee structure (if available from ADV Part 2A filings), the types of clients the firm serves, and four-state disclosure status (none_reported / disclosed_no_detail / disclosed_with_detail / unknown). Data is derived from SEC IAPD / FINRA BrokerCheck.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) in schema. All tools are READ_ONLY but this is not formally declared, forcing LLMs to infer safety from descriptions alone.
Output schemas documented in descriptions but not formally specified in JSON Schema. LLMs cannot parse expected response structure programmatically, they must infer from text.
Error handling returns format.envelope() with 'error' and 'hint' fields, but no error classification (retryable vs user-fixable vs fatal). LLMs cannot determine recovery strategy.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Search SEC-registered investment adviser representatives (IARs) by name, firm, city, and/or state. No CRD number needed. At least one of name/firm/city/state is required — e.g. browse by city+state alone, or search by name. Returns, per match: CRD, name, the firm(s) they're linked to (with branch city/state), a four-state disclosure status (none_reported / disclosed_no_detail / disclosed_with_detail / unknown — never "clean"), and a link to the advisor's full SEC IAPD record. Data is derived from SEC IAPD / FINRA BrokerCheck registration feeds, not real-time.
Search SEC-registered investment adviser firms by name, city, and/or state. Returns firm CRD, name, headquarters location, and a count of active investment adviser representatives (IARs) linked to that firm. Data is derived from SEC IAPD / FINRA BrokerCheck registration feeds, not real-time.
search_advisors and search_firms accept 'limit' parameter (default 20, max 50) but no pagination cursor or offset. Large result sets cannot be iterated, agent must re-query with different filters.
Parameter descriptions lack explicit constraints. E.g., 'limit' says 'default 20, max 50' in description but no min/max in schema. LLMs may pass invalid values; validation happens at runtime.