Server definition
- Hash
- sha256:d4573602809deec43727af63e6ff71e54e49a5a4dd31191f07726432949df02d
- What it is
- What a remote MCP server returned when asked what it offers: 32 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "\n Fetch and parse the complete equity holdings table from a specific SEC 13F-HR\n filing. Any institution managing more than $100M in US equities must file\n quarterly — this reveals their exact portfolio positions.\n\n Returns one record per position:\n - name_of_issuer — company name (e.g. 'APPLE INC')\n - cusip — 9-character CUSIP identifier\n - title_of_class — share class (e.g. 'COM', 'ADR')\n - value_thousands — market value in thousands USD\n - value_usd — market value in USD\n - shares_or_principal — number of shares (SH) or principal amount (PRN)\n - investment_discretion — SOLE, SHARED, or OTHER\n - put_call — 'Put' or 'Call' for options; null for equities\n - voting_sole/shared/none — voting authority breakdown\n\n PRIMARY USE: Step 2 of institutional holdings workflow. Obtain cik and\n accession_no from SearchEdgar13F or GetEdgarCompanyFilings, then call this\n tool to get the actual positions.\n\n Use min_value_thousands to filter noise (e.g. 1000 = positions ≥ $1M).\n Use sort_by='value_desc' to see the largest positions first.\n Use limit (default 100) and offset for pagination — large filers can\n have 3,000+ positions. Check _has_more in the response to know if more\n pages exist.\n\n Source: SEC EDGAR Archives (13F infotable XML). No API key required.\n ",
"inputSchema": {
"$defs": {
"Holdings13FParams": {
"description": "Parameters for fetching the full parsed holdings table from a specific SEC\n13F-HR filing. Returns every equity position (name, CUSIP, market value,\nshares) reported by the institutional filer for that quarter.\nUse SearchEdgar13F to discover accession numbers, then feed them here.",
"properties": {
"accession_no": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Accession number of the 13F-HR filing to parse. Format: 'XXXXXXXXXX-YY-NNNNNN' (with dashes). Obtain from SearchEdgar13F or GetEdgarCompanyFilings. Example: '0001350694-24-000012'.",
"title": "Accession No"
},
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"cik": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "SEC CIK of the institutional filer (e.g. a hedge fund or asset manager). Obtain from SearchEdgar13F or GetEdgarCompanyFilings. Example: '1350694' (Bridgewater Associates).",
"title": "Cik"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 100,
"description": "Maximum number of holdings to return. Default 100. Use with offset for pagination. Set higher only when needed — large filers can have 3,000+ positions.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"min_value_thousands": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Minimum position value in thousands of USD to include. Use to filter out noise: e.g. 1000 = positions worth at least $1M. Default None returns all positions.",
"title": "Min Value Thousands"
},
"offset": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"description": "Number of holdings to skip before returning results. Use with limit for pagination. Default 0 (start from beginning).",
"title": "Offset"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"sort_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "value_desc",
"description": "Sort order for the holdings list. Options: 'value_desc' (largest position first, default), 'value_asc' (smallest first), 'name_asc' (alphabetical by issuer name).",
"title": "Sort By"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "Holdings13FParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/Holdings13FParams",
"default": null
}
},
"title": "Get13FHoldingsArguments",
"type": "object"
},
"name": "Get13FHoldings",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "Get13FHoldingsOutput",
"type": "object"
}
},
{
"description": "\n Return Kitces Research advisor practice benchmark data for independent\n and RIA-affiliated financial advisors. Covers median and top-quartile\n metrics across five categories:\n - revenue: revenue per client, total firm revenue, growth rates\n - fees: AUM fee schedules, retainer and hourly rates\n - technology: software adoption rates and tech spend\n - staffing: headcount, capacity, and support ratios\n - clients: household counts, AUM per client, retention rates\n Set category='all' (default) to retrieve all categories at once.\n Source: Kitces Research annual advisor benchmarking survey (2023–2024).\n No API key required — data is embedded as curated static reference.\n ",
"inputSchema": {
"$defs": {
"KitcesBenchmarkParams": {
"description": "Retrieve Kitces advisor practice benchmark data.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Benchmark category to retrieve. Options: 'revenue', 'fees', 'technology', 'staffing', 'clients', 'all'. Defaults to 'all'. Source: Kitces Research annual advisor survey.",
"title": "Category"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "KitcesBenchmarkParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/KitcesBenchmarkParams",
"default": null
}
},
"title": "GetAdvisorBenchmarksArguments",
"type": "object"
},
"name": "GetAdvisorBenchmarks",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetAdvisorBenchmarksOutput",
"type": "object"
}
},
{
"description": "\n Fetch analyst buy/sell/hold consensus ratings, current price targets\n (low, high, mean, median), and the full history of analyst upgrades\n and downgrades with firm name, fromGrade, toGrade, and action.\n\n Use this tool when:\n - You want to know the current Wall Street consensus on a stock\n - You need analyst price target range (upside/downside to target)\n - You are tracking rating changes from major research firms\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"AnalystRatingsParams": {
"description": "Parameters for fetching analyst buy/sell/hold ratings and upgrades/downgrades.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"include_upgrades_downgrades": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "If True, also return the full history of analyst upgrades and downgrades with firm name, fromGrade, toGrade, and action. Default True.",
"title": "Include Upgrades Downgrades"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'TSLA', 'META'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "AnalystRatingsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/AnalystRatingsParams",
"default": null
}
},
"title": "GetAnalystRatingsArguments",
"type": "object"
},
"name": "GetAnalystRatings",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetAnalystRatingsOutput",
"type": "object"
}
},
{
"description": "\n Retrieve the full FINRA BrokerCheck profile for one individual using\n their CRD number. Returns complete employment history, exam qualifications,\n licenses held, and all disclosure details.\n\n Use this tool when:\n - You have a CRD (from SearchBrokerCheck) and want full profile detail\n - You need employment history, prior firms, or qualification data for a rep\n - You are performing due diligence on an individual advisor\n\n Source: FINRA BrokerCheck public API. No API key required.\n ",
"inputSchema": {
"$defs": {
"BrokerCheckDetailParams": {
"description": "Parameters for fetching a full BrokerCheck profile for one individual CRD.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"crd": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The CRD (Central Registration Depository) number of the individual. Obtain from SearchBrokerCheck. Example: '1234567'.",
"title": "Crd"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "BrokerCheckDetailParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/BrokerCheckDetailParams",
"default": null
}
},
"title": "GetBrokerCheckDetailArguments",
"type": "object"
},
"name": "GetBrokerCheckDetail",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetBrokerCheckDetailOutput",
"type": "object"
}
},
{
"description": "\n Fetch the full history of cash dividends, stock splits, and combined\n corporate actions for a ticker. Returns date, amount/ratio for each event.\n\n Use this tool when:\n - You need dividend history or yield calculation inputs\n - You are researching dividend growth over time\n - You want to verify stock split history for return calculations\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"DividendsAndSplitsParams": {
"description": "Parameters for fetching dividend history, stock splits, and corporate actions.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "max",
"description": "Lookback period for actions history. Options: '1y','5y','10y','max'. Default 'max' returns full history.",
"title": "Period"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'JNJ', 'KO'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "DividendsAndSplitsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/DividendsAndSplitsParams",
"default": null
}
},
"title": "GetDividendsAndSplitsArguments",
"type": "object"
},
"name": "GetDividendsAndSplits",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetDividendsAndSplitsOutput",
"type": "object"
}
},
{
"description": "\n Fetch earnings history (EPS actual vs estimate, surprise %) and upcoming\n earnings dates with consensus estimates. Also returns forward EPS estimates\n by quarter and fiscal year.\n\n Use this tool when:\n - You want to see how a company has performed vs EPS expectations\n - You need the next earnings date and the consensus estimate\n - You are analyzing earnings surprise trends or growth trajectory\n\n Returns three sections: earnings_history, earnings_dates, earnings_estimate.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"EarningsParams": {
"description": "Parameters for fetching earnings history and upcoming earnings dates.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Number of upcoming/past earnings dates to return. Default 12.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'NVDA'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "EarningsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/EarningsParams",
"default": null
}
},
"title": "GetEarningsHistoryArguments",
"type": "object"
},
"name": "GetEarningsHistory",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetEarningsHistoryOutput",
"type": "object"
}
},
{
"description": "\n Retrieve all SEC filings for a company or institution using its CIK\n (Central Index Key). Returns every filing on record: form type, date,\n accession number, and description. Useful for tracking all regulatory\n disclosures from a specific institution over time.\n\n Use this tool when:\n - You have a CIK and want to see all filing activity for a company\n - You want to track 13F, ADV, or ownership disclosure history\n - You need accession numbers to pull specific filing documents\n\n Find a CIK at: https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany\n Source: SEC EDGAR data API. No API key required.\n ",
"inputSchema": {
"$defs": {
"EdgarCompanySubmissionsParams": {
"description": "Parameters for fetching all SEC filings for a company by CIK.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"cik": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "SEC Central Index Key (CIK) for the company. Can be found via EDGAR company search at sec.gov. Zero-padding is handled automatically. Example: '1350694'.",
"title": "Cik"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "EdgarCompanySubmissionsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/EdgarCompanySubmissionsParams",
"default": null
}
},
"title": "GetEdgarCompanyFilingsArguments",
"type": "object"
},
"name": "GetEdgarCompanyFilings",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetEdgarCompanyFilingsOutput",
"type": "object"
}
},
{
"description": "\n Fetch income statement, cash flow statement, or balance sheet for a stock.\n Returns up to 4 years of annual data or 4 quarters of quarterly data,\n transposed so each row is one reporting period.\n\n Use this tool when:\n - You need revenue, net income, EPS, or operating margins\n - You want cash flow from operations, CapEx, or free cash flow\n - You need total assets, debt, equity, or liquidity ratios\n - You are doing fundamental analysis on a stock\n\n statement options: 'income', 'cashflow', 'balance'.\n freq options: 'yearly', 'quarterly', 'trailing' (TTM, income only).\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"FinancialsParams": {
"description": "Parameters for fetching income statement, cash flow, or balance sheet.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"freq": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "yearly",
"description": "Reporting frequency. Options: 'yearly' (last 4 annual), 'quarterly' (last 4 quarters), 'trailing' (TTM, income only).",
"title": "Freq"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"statement": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "income",
"description": "Which financial statement to return. Options: 'income' (P&L / income statement), 'cashflow' (cash flow statement), 'balance' (balance sheet).",
"title": "Statement"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'MSFT', 'JPM'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FinancialsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FinancialsParams",
"default": null
}
},
"title": "GetFinancialsArguments",
"type": "object"
},
"name": "GetFinancials",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetFinancialsOutput",
"type": "object"
}
},
{
"description": "\n Fetch time-series observation data from FRED for a specific economic\n series. Returns date + value pairs with series metadata (title, units,\n frequency). Use SearchFredSeries first if you don't know the series ID.\n\n Use this tool when:\n - You need historical macro data (rates, inflation, GDP, unemployment)\n - You want to provide macro context alongside advisor or fund data\n - You are comparing economic conditions across time periods\n - You need the current value of a key economic indicator\n\n Pass observation_start / observation_end to limit the date range.\n Pass frequency to aggregate (e.g. 'm' for monthly, 'q' for quarterly).\n\n Requires FRED_API_KEY environment variable (free at fred.stlouisfed.org).\n Source: Federal Reserve Bank of St. Louis FRED API.\n ",
"inputSchema": {
"$defs": {
"FredSeriesDataParams": {
"description": "Fetch time-series data points for a FRED series.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"frequency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Aggregation frequency. Options: 'd' (daily), 'w' (weekly), 'm' (monthly), 'q' (quarterly), 'a' (annual). Default: native frequency of the series.",
"title": "Frequency"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 100,
"description": "Maximum number of observations to return. Default 100, max 100000.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"observation_end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date for observations in YYYY-MM-DD format. Example: '2025-12-31'.",
"title": "Observation End"
},
"observation_start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start date for observations in YYYY-MM-DD format. Example: '2020-01-01'.",
"title": "Observation Start"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"series_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The FRED series ID. Examples: 'DGS10' (10-year treasury), 'CPIAUCSL' (CPI), 'UNRATE' (unemployment), 'GDP', 'FEDFUNDS' (fed funds rate).",
"title": "Series Id"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FredSeriesDataParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FredSeriesDataParams",
"default": null
}
},
"title": "GetFredSeriesDataArguments",
"type": "object"
},
"name": "GetFredSeriesData",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetFredSeriesDataOutput",
"type": "object"
}
},
{
"description": "\n Retrieve expense ratios and fee breakdown for a mutual fund or ETF using\n its SEC CIK. Reads structured XBRL data filed with prospectuses using the\n SEC Risk/Return (rr:) taxonomy. Returns:\n - net_expense_ratio — total annual cost to the investor (%)\n - gross_expense_ratio — before waivers/reimbursements (%)\n - management_fee — advisor/sub-advisor fee (%)\n - distribution_12b1_fee — distribution and service fee (%)\n - other_expenses — admin, custody, transfer agent fees (%)\n - acquired_fund_fees — fees from underlying funds, if any (%)\n\n All values are expressed as percentages (e.g. 0.03 = 0.03%).\n\n PRIMARY USE: Step 2 of fee comparison. Accepts CIKs returned by\n SearchFundsByCategory. Run for multiple funds then rank by net_expense_ratio\n ascending to find the lowest-cost option in a category.\n\n With include_all_classes=True (default), returns one row per share class\n per period — useful for identifying the cheapest share class of a fund.\n With include_all_classes=False, returns the single most recent value only.\n\n Note: Not all funds file XBRL rr: data. If this tool returns an error,\n use GetFundProfile (yfinance) as a fallback for expense ratio data.\n\n Source: SEC EDGAR XBRL company facts API. No API key required.\n ",
"inputSchema": {
"$defs": {
"FundFeesParams": {
"description": "Parameters for retrieving expense ratios and fee breakdown for a mutual fund\nor ETF using its SEC CIK. Reads XBRL Risk/Return (rr:) taxonomy data filed\nwith prospectuses. Step 2 of a fee-comparison workflow — feed CIKs from\nSearchFundsByCategory into this tool.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"cik": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "SEC Central Index Key for the fund. Obtain from SearchFundsByCategory or from EDGAR at sec.gov. Zero-padding is handled automatically. Example: '1064642' (SPDR S&P 500 ETF Trust).",
"title": "Cik"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"include_all_classes": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "If True, return expense ratios for all share classes (e.g. A, B, C, Institutional). If False, return only the most recent single value. Default True — useful for finding the lowest-cost share class.",
"title": "Include All Classes"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FundFeesParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FundFeesParams",
"default": null
}
},
"title": "GetFundFeesArguments",
"type": "object"
},
"name": "GetFundFees",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetFundFeesOutput",
"type": "object"
}
},
{
"description": "\n Fetch ETF or mutual fund specific data: top holdings with weight %,\n sector allocations, expense ratio, bond credit quality ratings,\n and equity style characteristics.\n\n Use this tool when:\n - You need the top 10 holdings and their weights for an ETF or fund\n - You want sector allocation breakdown (tech %, financials %, etc.)\n - You need bond rating distribution for a fixed-income fund\n - You are comparing fund profiles for advisor recommendations\n\n section options: 'overview', 'holdings', 'sectors', 'bond_ratings',\n 'equity_holdings', 'all'.\n\n Only works for ETFs and mutual funds. For stocks, use GetTickerInfo.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"FundProfileParams": {
"description": "Parameters for fetching mutual fund or ETF profile data.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "overview",
"description": "Which section of fund data to return. Options: 'overview' (fund summary, category, expense ratio), 'holdings' (top holdings with weight %), 'sectors' (sector weightings), 'bond_ratings' (credit quality breakdown, fixed income only), 'equity_holdings' (equity style stats), 'all' (return all sections combined).",
"title": "Section"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol of the mutual fund or ETF. Examples: 'SPY' (S&P 500 ETF), 'VFINX' (Vanguard 500), 'QQQ' (Nasdaq ETF).",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FundProfileParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FundProfileParams",
"default": null
}
},
"title": "GetFundProfileArguments",
"type": "object"
},
"name": "GetFundProfile",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetFundProfileOutput",
"type": "object"
}
},
{
"description": "\n Fetch ownership data for a stock: top institutional holders, mutual fund\n holders, and recent insider transactions (buys/sells by executives).\n\n Use this tool when:\n - You want to know which institutions or funds own a stock\n - You are checking for insider buying or selling activity\n - You need institutional ownership concentration data\n\n holder_type options: 'institutional', 'mutualfund', 'insider', 'all'.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"HoldersParams": {
"description": "Parameters for fetching ownership data: institutional, fund, and insider.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"holder_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "institutional",
"description": "Which holders to return. Options: 'institutional' (top institutional investors), 'mutualfund' (top mutual fund holders), 'insider' (recent insider transactions), 'all' (returns all three combined).",
"title": "Holder Type"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'SPY'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "HoldersParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/HoldersParams",
"default": null
}
},
"title": "GetHoldersArguments",
"type": "object"
},
"name": "GetHolders",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetHoldersOutput",
"type": "object"
}
},
{
"description": "\n Retrieve the full Form ADV filing detail for one RIA firm by its CRD number.\n Returns all Form ADV Part 1 fields: client types, advisory activities, fee\n arrangements, custody information, office locations, and affiliated entities.\n\n Use this tool when:\n - You have a firm CRD (from SearchIAPDFirm) and want complete ADV detail\n - You need office locations, custodians, or affiliated BD information\n - You are building a detailed profile for a prospect RIA firm\n\n Source: SEC IAPD public API. No API key required.\n ",
"inputSchema": {
"$defs": {
"IAPDFirmDetailParams": {
"description": "Parameters for fetching full Form ADV detail for one RIA firm by CRD.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"crd": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The CRD number of the RIA firm. Obtain from SearchIAPDFirm. Example: '106288'.",
"title": "Crd"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "IAPDFirmDetailParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/IAPDFirmDetailParams",
"default": null
}
},
"title": "GetIAPDFirmDetailArguments",
"type": "object"
},
"name": "GetIAPDFirmDetail",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetIAPDFirmDetailOutput",
"type": "object"
}
},
{
"description": "\n Retrieve the full SEC IAPD profile for one individual investment advisor\n representative using their CRD number. Returns complete registration history,\n exam qualifications, employment history, and any disclosures.\n\n Use this tool when:\n - You have a CRD (from SearchIAPDIndividual) and need the full profile\n - You need an advisor's complete Form ADV Part 2B equivalent data\n - You are performing deep due diligence on an individual IAR\n\n Source: SEC IAPD public API (api.adviserinfo.sec.gov). No API key required.\n ",
"inputSchema": {
"$defs": {
"IAPDIndividualDetailParams": {
"description": "Retrieve full SEC IAPD profile for one individual advisor by CRD.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"crd": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The CRD (Central Registration Depository) number of the individual. Obtain from SearchIAPDIndividual. Example: '6753609'.",
"title": "Crd"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "IAPDIndividualDetailParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/IAPDIndividualDetailParams",
"default": null
}
},
"title": "GetIAPDIndividualDetailArguments",
"type": "object"
},
"name": "GetIAPDIndividualDetail",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetIAPDIndividualDetailOutput",
"type": "object"
}
},
{
"description": "\n Retrieve the full GLEIF LEI record for one legal entity using its\n 20-character LEI code. Returns legal name, registration status, legal\n address, headquarters address, managing LOU, and renewal dates.\n\n Use this tool when:\n - You have a LEI (from SearchLEI) and need full entity details\n - You want to verify the registration status and renewal date\n - You need the exact legal address and jurisdiction of an entity\n\n Source: GLEIF API (api.gleif.org). No API key required.\n ",
"inputSchema": {
"$defs": {
"LEIDetailParams": {
"description": "Retrieve full GLEIF LEI record for one entity.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"lei": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The 20-character Legal Entity Identifier (LEI) code. Obtain from SearchLEI. Example: 'INR2EJN1ERAN0W5ZP974'.",
"title": "Lei"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "LEIDetailParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/LEIDetailParams",
"default": null
}
},
"title": "GetLEIDetailArguments",
"type": "object"
},
"name": "GetLEIDetail",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetLEIDetailOutput",
"type": "object"
}
},
{
"description": "\n Fetch OHLCV price history for multiple tickers in a single call.\n Returns a flattened table with columns like 'AAPL_Close', 'SPY_Volume', etc.\n\n Use this tool when:\n - You are comparing performance across multiple securities\n - You need correlated price data for a portfolio or basket of tickers\n - You want to compute relative performance or correlation matrices\n\n Pass symbols as a space-separated or comma-separated string:\n 'AAPL MSFT GOOGL' or 'SPY,QQQ,IWM'.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"MultiTickerHistoryParams": {
"description": "Parameters for fetching price history for multiple tickers at once.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date (YYYY-MM-DD).",
"title": "End"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "1d",
"description": "Price bar interval. Options: '1d','1wk','1mo','1h','5m', etc.",
"title": "Interval"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "1y",
"description": "Lookback period. Options: '1d','5d','1mo','3mo','6mo','1y','2y','5y','10y','ytd','max'.",
"title": "Period"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start date (YYYY-MM-DD). Overrides 'period' if provided.",
"title": "Start"
},
"symbols": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Space-separated or comma-separated list of ticker symbols. Examples: 'AAPL MSFT GOOGL' or 'SPY,QQQ,IWM'.",
"title": "Symbols"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "MultiTickerHistoryParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/MultiTickerHistoryParams",
"default": null
}
},
"title": "GetMultiTickerHistoryArguments",
"type": "object"
},
"name": "GetMultiTickerHistory",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetMultiTickerHistoryOutput",
"type": "object"
}
},
{
"description": "\n Fetch the full options chain (calls and puts) for one expiry date.\n Returns strike price, bid, ask, last price, implied volatility, open\n interest, and volume for every contract.\n\n Use this tool when:\n - You are researching options strategies for a stock or ETF\n - You need implied volatility across strikes for a specific expiry\n - You want to see open interest to gauge market sentiment\n\n Call GetOptionsExpirations first to get valid expiry dates.\n If expiry_date is omitted, returns the nearest available expiry.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"OptionsChainParams": {
"description": "Parameters for fetching the options chain for a specific expiry date.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"expiry_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Options expiry date in YYYY-MM-DD format. Use GetOptionsExpirations first to see available dates. If None, returns the nearest expiry.",
"title": "Expiry Date"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol of the underlying. Example: 'AAPL', 'SPY', 'TSLA'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "OptionsChainParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/OptionsChainParams",
"default": null
}
},
"title": "GetOptionsChainArguments",
"type": "object"
},
"name": "GetOptionsChain",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetOptionsChainOutput",
"type": "object"
}
},
{
"description": "\n List all available options expiry dates for a ticker. Use this before\n calling GetOptionsChain to find a valid expiry date.\n\n Use this tool when:\n - You want to know which options contracts exist for a stock or ETF\n - You need a specific expiry date to pass into GetOptionsChain\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"OptionsExpirationsParams": {
"description": "Parameters for listing all available options expiry dates for a ticker.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Ticker symbol. Example: 'AAPL', 'SPY'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "OptionsExpirationsParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/OptionsExpirationsParams",
"default": null
}
},
"title": "GetOptionsExpirationsArguments",
"type": "object"
},
"name": "GetOptionsExpirations",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetOptionsExpirationsOutput",
"type": "object"
}
},
{
"description": "\n Fetch OHLCV (Open, High, Low, Close, Volume) price history for one ticker.\n Returns daily, weekly, monthly, or intraday bars over any period.\n\n Use this tool when:\n - You need historical price or volume data for a stock, ETF, or crypto\n - You want to analyze performance over a specific time range\n - You need to compute returns, volatility, or trend analysis\n\n Interval options: 1d (daily), 1wk (weekly), 1mo (monthly),\n 1h (hourly, max 730 days), 5m/15m/30m (intraday, max 60 days).\n Period options: 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"PriceHistoryParams": {
"description": "Parameters for fetching OHLCV price and volume history for one ticker.",
"properties": {
"actions": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "If True, include dividend and split events in the returned data.",
"title": "Actions"
},
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"auto_adjust": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "If True, adjust OHLC prices for dividends and splits. Recommended True for long-term analysis. Default True.",
"title": "Auto Adjust"
},
"end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End date for history (YYYY-MM-DD). Defaults to today if start is set.",
"title": "End"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"interval": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "1d",
"description": "Price bar interval. Options: '1m','2m','5m','15m','30m','60m','90m' (intraday, max 60 days), '1h' (max 730 days), '1d','5d','1wk','1mo','3mo'. Use '1d' for daily bars, '1wk' for weekly, '1mo' for monthly.",
"title": "Interval"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"period": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "1y",
"description": "Lookback period. Options: '1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max'. Use 'max' for all available history. Ignored if start and end are provided.",
"title": "Period"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start date for history (YYYY-MM-DD). Overrides 'period' if provided.",
"title": "Start"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Yahoo Finance ticker symbol. Examples: 'AAPL', 'SPY', 'BTC-USD'.",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "PriceHistoryParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/PriceHistoryParams",
"default": null
}
},
"title": "GetPriceHistoryArguments",
"type": "object"
},
"name": "GetPriceHistory",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetPriceHistoryOutput",
"type": "object"
}
},
{
"description": "\n Retrieve US Census American Community Survey (ACS) income and wealth proxy\n data for a ZIP code or state. Returns median household income, median home\n value, total household count, and the count and share of households earning\n $100k or more — useful for scoring territory opportunity for financial advisors.\n\n Key metrics returned:\n - median_hh_income: Median household income (B19013)\n - median_home_value: Median owner-occupied home value (B25077)\n - total_households: Total household count (B11001)\n - hh_100k_plus: Households earning $100k+ (derived)\n - hh_100k_plus_pct: Share of households earning $100k+ (derived)\n\n Use this tool when:\n - You are scoring a territory for wealth potential by ZIP code\n - You want to compare household income distribution across territories\n - You need a demographic wealth proxy before overlaying advisor AUM data\n\n Requires cenpy Python package and optionally a free Census API key\n (api.census.gov/data/key_signup.html).\n Source: US Census Bureau ACS 5-Year estimates. Free with optional API key.\n ",
"inputSchema": {
"$defs": {
"TerritoryWealthProfileParams": {
"description": "Parameters for fetching Census ACS wealth and income profile for a territory.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"census_api_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Free Census API key from api.census.gov/data/key_signup.html. If not provided, falls back to unauthenticated access (rate-limited).",
"title": "Census Api Key"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter US state code to profile at the state level when no zip_code is given. Example: 'CA', 'WI', 'NY'.",
"title": "State"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
},
"zip_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "5-digit US ZIP code to profile. Returns income distribution, median home value, and household density for that ZIP Code Tabulation Area. Example: '90210'.",
"title": "Zip Code"
}
},
"title": "TerritoryWealthProfileParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/TerritoryWealthProfileParams",
"default": null
}
},
"title": "GetTerritoryWealthProfileArguments",
"type": "object"
},
"name": "GetTerritoryWealthProfile",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetTerritoryWealthProfileOutput",
"type": "object"
}
},
{
"description": "\n Fetch the full Yahoo Finance profile for a stock, ETF, mutual fund, crypto,\n or index. Returns name, sector, industry, market cap, P/E ratio, 52-week\n range, beta, dividend yield, description, and 60+ other metadata fields.\n\n Use this tool when:\n - You need a quick summary of what a company or fund is and its valuation\n - You want sector/industry classification for a ticker\n - You need current price metadata like market cap, float, or short ratio\n\n Works for: stocks (AAPL), ETFs (SPY), mutual funds (VFINX),\n crypto (BTC-USD), indices (^GSPC), forex (EURUSD=X).\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"TickerInfoParams": {
"description": "Parameters for fetching full ticker profile and metadata.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"symbol": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Yahoo Finance ticker symbol. Examples: 'AAPL' (stock), 'SPY' (ETF), 'VFINX' (mutual fund), 'BTC-USD' (crypto), '^GSPC' (S&P 500 index).",
"title": "Symbol"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "TickerInfoParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/TickerInfoParams",
"default": null
}
},
"title": "GetTickerInfoArguments",
"type": "object"
},
"name": "GetTickerInfo",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "GetTickerInfoOutput",
"type": "object"
}
},
{
"description": "\n Search for a Yahoo Finance ticker symbol by company name, fund name,\n or keyword. Returns matching symbols with exchange and asset type.\n Use this when you have a name but need the ticker symbol.\n\n Use this tool when:\n - You know a company name but not its ticker symbol\n - You want to find the ticker for a specific ETF or mutual fund\n - You are disambiguating between similarly named securities\n\n asset_type options: 'stock', 'etf', 'mutualfund', 'index',\n 'cryptocurrency', 'currency', 'future', 'all'.\n\n Source: Yahoo Finance via yfinance. No API key required.\n ",
"inputSchema": {
"$defs": {
"LookupTickerParams": {
"description": "Parameters for looking up a ticker symbol by company or fund name.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"asset_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "stock",
"description": "Type of asset to search. Options: 'stock', 'etf', 'mutualfund', 'index', 'cryptocurrency', 'currency', 'future', 'all'. Default 'stock'.",
"title": "Asset Type"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"max_results": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 10,
"description": "Maximum number of results to return. Default 10.",
"title": "Max Results"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Company name, fund name, or keyword to search for a ticker. Examples: 'Apple Inc', 'Vanguard 500', 'S&P 500 ETF', 'Bitcoin'.",
"title": "Query"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "LookupTickerParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/LookupTickerParams",
"default": null
}
},
"title": "LookupTickerArguments",
"type": "object"
},
"name": "LookupTicker",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "LookupTickerOutput",
"type": "object"
}
},
{
"description": "\n Map financial instrument identifiers between different ID systems using\n Bloomberg's OpenFIGI service. Converts between ticker symbols, ISINs,\n CUSIPs, and FIGIs in a single call.\n\n Use this tool when:\n - You have a ticker and need the ISIN or CUSIP (or vice versa)\n - You are normalizing instrument IDs when combining data from EDGAR,\n Yahoo Finance, and other sources that use different ID schemes\n - You need to identify what exchange a security trades on\n\n Supported idType values:\n - 'TICKER': Stock ticker symbol (e.g. 'AAPL')\n - 'ID_ISIN': ISIN (e.g. 'US0378331005')\n - 'ID_CUSIP': CUSIP (e.g. '037833100')\n - 'ID_FIGI': Bloomberg FIGI\n\n Include 'exchCode': 'US' to target US exchanges for ticker lookups.\n\n Source: Bloomberg OpenFIGI API. No API key required (optional key raises rate limits).\n ",
"inputSchema": {
"$defs": {
"OpenFIGIMapParams": {
"description": "Map financial instrument identifiers (ticker ↔ FIGI ↔ ISIN ↔ CUSIP).",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mappings": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of identifier objects to map. Each object must have 'idType' and 'idValue'. Optional fields: 'exchCode', 'micCode', 'currency', 'securityType'. idType options: 'TICKER', 'ID_ISIN', 'ID_CUSIP', 'ID_FIGI', 'ID_COMMON', 'ID_WERTPAPIER'. Examples: [{'idType': 'TICKER', 'idValue': 'AAPL', 'exchCode': 'US'}], [{'idType': 'ID_ISIN', 'idValue': 'US0378331005'}]",
"title": "Mappings"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "OpenFIGIMapParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/OpenFIGIMapParams",
"default": null
}
},
"title": "MapInstrumentIdsArguments",
"type": "object"
},
"name": "MapInstrumentIds",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "MapInstrumentIdsOutput",
"type": "object"
}
},
{
"description": "\n Search FINRA BrokerCheck for registered individual brokers and financial\n representatives by name. Returns CRD number, current firm, registration\n status, and whether the individual has any disclosures on record.\n\n Use this tool when:\n - You need to find the CRD number for a named advisor or rep\n - You want to verify registration status for a specific individual\n - You are enriching a rep record that is missing a CRD\n\n Geographic workflow: if you don't know the rep's name, first use\n SearchBrokersByPlace to discover firms in an area, then use\n SearchBrokerCheckFirm to find the firm's CRD, then use this tool\n to find individuals at that firm.\n\n Narrow results with the optional 'state' parameter (2-letter code).\n To get the full profile after finding a CRD, use GetBrokerCheckDetail.\n\n Source: FINRA BrokerCheck public API. No API key required.\n ",
"inputSchema": {
"$defs": {
"BrokerCheckIndividualSearchParams": {
"description": "Parameters for searching FINRA BrokerCheck for individual brokers/reps.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"include_previous": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": true,
"description": "If True, include brokers whose registration has lapsed. Default True.",
"title": "Include Previous"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full or partial name of the individual broker or rep to search. Examples: 'Andrew Burish', 'John Smith', 'Peter Chieco'.",
"title": "Name"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"rows": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Number of results per page. Max 12 per BrokerCheck API.",
"title": "Rows"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"description": "Pagination offset, 0-based. Use with rows to page through results.",
"title": "Start"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter US state code to narrow results. Example: 'WI', 'NY', 'CA'.",
"title": "State"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "BrokerCheckIndividualSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/BrokerCheckIndividualSearchParams",
"default": null
}
},
"title": "SearchBrokerCheckArguments",
"type": "object"
},
"name": "SearchBrokerCheck",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchBrokerCheckOutput",
"type": "object"
}
},
{
"description": "\n Search FINRA BrokerCheck for broker-dealer firms by name. Returns firm\n CRD, registration status, city, state, and disclosure flag.\n\n Use this tool when:\n - You need the CRD number for a broker-dealer firm (e.g. UBS, Raymond James)\n - You want to distinguish between similarly named firms by location\n - You are building a territory map of BD firms in a state\n\n Source: FINRA BrokerCheck public API. No API key required.\n ",
"inputSchema": {
"$defs": {
"BrokerCheckFirmSearchParams": {
"description": "Parameters for searching FINRA BrokerCheck for broker-dealer firms.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full or partial name of the broker-dealer firm. Examples: 'UBS Financial Services', 'Raymond James', 'LPL Financial'.",
"title": "Name"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"rows": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Number of results per page. Max 12 per BrokerCheck API.",
"title": "Rows"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 0,
"description": "Pagination offset, 0-based.",
"title": "Start"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter US state code to narrow results. Example: 'WI', 'NY', 'CA'.",
"title": "State"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "BrokerCheckFirmSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/BrokerCheckFirmSearchParams",
"default": null
}
},
"title": "SearchBrokerCheckFirmArguments",
"type": "object"
},
"name": "SearchBrokerCheckFirm",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchBrokerCheckFirmOutput",
"type": "object"
}
},
{
"description": "\n Search SEC EDGAR for 13F-HR institutional holdings filings by institution\n name. Returns filing date, entity name, period of report, and accession\n number. Any institution managing more than $100M in equity must file\n quarterly 13Fs — this reveals their fund strategies and product usage.\n\n Use this tool when:\n - You want to see what funds or ETFs a firm holds in their portfolios\n - You are researching an institution's investment strategy from public filings\n - You need a list of 13F filings for a specific manager over a date range\n\n Supports start_date and end_date filtering (YYYY-MM-DD format).\n Source: SEC EDGAR full-text search API. No API key required.\n ",
"inputSchema": {
"$defs": {
"EdgarFilingSearchParams": {
"description": "Parameters for searching SEC EDGAR for 13F institutional holdings filings.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter filings up to this date. Format: YYYY-MM-DD. Example: '2024-12-31'.",
"title": "End Date"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Name of the institution or fund to search. Examples: 'Fidelity Management', 'BlackRock', 'Vanguard Group'.",
"title": "Query"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter filings from this date. Format: YYYY-MM-DD. Example: '2024-01-01'.",
"title": "Start Date"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "EdgarFilingSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/EdgarFilingSearchParams",
"default": null
}
},
"title": "SearchEdgar13FArguments",
"type": "object"
},
"name": "SearchEdgar13F",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchEdgar13FOutput",
"type": "object"
}
},
{
"description": "\n Search Bloomberg OpenFIGI for financial instruments by name or keyword.\n Returns FIGI, ticker, exchange, security type, and composite FIGI for\n each matching instrument.\n\n Use this tool when:\n - You know the company name but not the ticker or FIGI\n - You want to find all instruments (ETFs, options, futures) for a name\n - You need to discover what securities are associated with a company\n\n Use MapInstrumentIds instead if you already have a specific ID to convert.\n\n Source: Bloomberg OpenFIGI API. No API key required (optional key raises rate limits).\n ",
"inputSchema": {
"$defs": {
"OpenFIGISearchParams": {
"description": "Search OpenFIGI for instruments by keyword.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exchange_code": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by exchange code. Examples: 'US' (US exchanges), 'LN' (London), 'JP' (Tokyo).",
"title": "Exchange Code"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 20,
"description": "Maximum number of results. Default 20.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Keyword to search for instruments. Examples: 'Apple Inc', 'S&P 500 ETF', 'NVIDIA'.",
"title": "Query"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"security_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Filter by security type. Examples: 'Common Stock', 'ETF', 'Mutual Fund', 'Option', 'Future'.",
"title": "Security Type"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "OpenFIGISearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/OpenFIGISearchParams",
"default": null
}
},
"title": "SearchFigiInstrumentsArguments",
"type": "object"
},
"name": "SearchFigiInstruments",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchFigiInstrumentsOutput",
"type": "object"
}
},
{
"description": "\n Search the Federal Reserve Bank of St. Louis FRED database for economic\n data series by keyword. Returns series ID, title, frequency, units,\n seasonal adjustment, and date range.\n\n Use this tool when:\n - You need to find the right FRED series ID before fetching data\n - You want to discover what macro data is available for a topic\n - You are looking for interest rates, inflation, GDP, unemployment, or\n money supply series to provide macro context for financial analysis\n\n Common series IDs (use GetFredSeriesData after finding one):\n - DGS10: 10-Year Treasury Yield\n - CPIAUCSL: Consumer Price Index (CPI-U)\n - UNRATE: Unemployment Rate\n - GDP: Gross Domestic Product\n - FEDFUNDS: Federal Funds Rate\n - M2SL: M2 Money Supply\n\n Requires FRED_API_KEY environment variable (free at fred.stlouisfed.org).\n Source: Federal Reserve Bank of St. Louis FRED API.\n ",
"inputSchema": {
"$defs": {
"FredSeriesSearchParams": {
"description": "Search FRED for economic data series by keyword.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 20,
"description": "Maximum number of series to return. Default 20, max 1000.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"order_by": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "search_rank",
"description": "Sort order. Options: 'search_rank' (default, most relevant first), 'popularity' (most used), 'last_updated'.",
"title": "Order By"
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Keywords to search for economic series. Examples: '10-year treasury', 'CPI', 'unemployment rate', 'GDP', 'federal funds rate'.",
"title": "Query"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FredSeriesSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FredSeriesSearchParams",
"default": null
}
},
"title": "SearchFredSeriesArguments",
"type": "object"
},
"name": "SearchFredSeries",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchFredSeriesOutput",
"type": "object"
}
},
{
"description": "\n Search SEC EDGAR for mutual fund and ETF filers by investment category or\n keyword. Queries N-1A and 485BPOS (and N-2 for closed-end) prospectus filings.\n Returns entity name, CIK, form type, and filing date.\n\n PRIMARY USE: Step 1 of fee comparison. Feed the returned CIKs directly into\n GetFundFees to retrieve expense ratios for each fund.\n\n Example queries:\n - keywords='commodity', fund_type='etf' → commodity ETF universe\n - keywords='emerging markets equity' → EM equity funds\n - keywords='short duration bond' → short-term fixed income\n - keywords='S&P 500 index', fund_type='etf' → S&P 500 index trackers\n\n Results are de-duplicated by CIK (one record per fund filer).\n Supports date filtering to restrict to recently updated prospectuses.\n\n Source: SEC EDGAR full-text search API. No API key required.\n ",
"inputSchema": {
"$defs": {
"FundCategorySearchParams": {
"description": "Parameters for searching SEC EDGAR for mutual fund or ETF filers by category\nor keyword. Returns CIKs suitable for feeding into GetFundFees or\nGetEdgarCompanyFilings. Step 1 of a fee-comparison workflow.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return funds with a prospectus filing on or before this date. Format: YYYY-MM-DD. Example: '2024-12-31'.",
"title": "End Date"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"fund_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": "all",
"description": "Filter by fund structure. Options: 'etf' (exchange-traded funds only), 'mutual' (open-end mutual funds only, Form N-1A), 'closed' (closed-end funds, Form N-2), 'all' (ETFs + mutual funds + closed-end). Default 'all'.",
"title": "Fund Type"
},
"keywords": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Keywords describing the fund strategy or category to search. Examples: 'commodity', 'emerging markets', 'technology growth', 'short-term bond', 'S&P 500 index'. Matched against fund names and prospectus text on EDGAR.",
"title": "Keywords"
},
"max_results": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 40,
"description": "Maximum number of fund filers to return. Default 40. Increase to 100+ when building a comprehensive fee comparison.",
"title": "Max Results"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Only return funds with a prospectus filing on or after this date. Format: YYYY-MM-DD. Example: '2023-01-01'.",
"title": "Start Date"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "FundCategorySearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/FundCategorySearchParams",
"default": null
}
},
"title": "SearchFundsByCategoryArguments",
"type": "object"
},
"name": "SearchFundsByCategory",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchFundsByCategoryOutput",
"type": "object"
}
},
{
"description": "\n Search the SEC Investment Adviser Public Disclosure (IAPD) database for\n registered investment advisor (RIA) firms by name. Returns firm CRD,\n registration status, AUM, employee count, state, and office city.\n\n Use this tool when:\n - You need the CRD or AUM for a named RIA firm\n - You are looking up Form ADV data for a firm\n - You want to distinguish between RIA firms (use IAPD) vs BD firms (use BrokerCheck)\n\n Geographic workflow: if you have a firm name from SearchBrokersByPlace and\n the firm is an RIA (registered investment advisor), search here to get the\n CRD, AUM, and regulatory status. Then use GetIAPDFirmDetail for full ADV data.\n\n Note: IAPD covers RIAs registered with the SEC. For broker-dealers,\n use SearchBrokerCheckFirm instead.\n\n Source: SEC IAPD public API. No API key required.\n ",
"inputSchema": {
"$defs": {
"IAPDFirmSearchParams": {
"description": "Parameters for searching SEC IAPD for registered investment advisor firms.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full or partial name of the RIA firm to search. Examples: 'Vanguard', 'Fidelity Investments', 'Edward Jones'.",
"title": "Name"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "IAPDFirmSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/IAPDFirmSearchParams",
"default": null
}
},
"title": "SearchIAPDFirmArguments",
"type": "object"
},
"name": "SearchIAPDFirm",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchIAPDFirmOutput",
"type": "object"
}
},
{
"description": "\n Search SEC IAPD (Investment Adviser Public Disclosure) for individual\n investment advisor representatives (IARs) by name. Returns CRD number,\n current employer, registration states, and exam history.\n\n Use this tool when:\n - You need to look up an individual financial advisor (not a firm)\n - You want to verify an advisor's IA registration status\n - You are doing due diligence on a named investment advisor representative\n\n For firm lookups, use SearchIAPDFirm instead.\n For broker/dealer individuals, use SearchBrokerCheck instead.\n\n Source: SEC IAPD public API (api.adviserinfo.sec.gov). No API key required.\n ",
"inputSchema": {
"$defs": {
"IAPDIndividualSearchParams": {
"description": "Search SEC IAPD for individual investment advisor representatives.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full or partial name of the individual investment advisor representative. Examples: 'John Smith', 'Anthony Feeney'.",
"title": "Name"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"rows": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 12,
"description": "Number of results to return. Default 12.",
"title": "Rows"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"state": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter US state code to narrow results. Example: 'CA', 'NY'.",
"title": "State"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "IAPDIndividualSearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/IAPDIndividualSearchParams",
"default": null
}
},
"title": "SearchIAPDIndividualArguments",
"type": "object"
},
"name": "SearchIAPDIndividual",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchIAPDIndividualOutput",
"type": "object"
}
},
{
"description": "\n Search the Global Legal Entity Identifier Foundation (GLEIF) database\n for Legal Entity Identifiers (LEIs) by entity name. Returns the 20-character\n LEI code, legal name, registration status, legal address, and jurisdiction.\n\n Use this tool when:\n - You need the LEI for a financial institution or fund company\n - You want to verify the legal registration of a firm\n - You are cross-referencing SEC EDGAR entities with their global LEI\n - You need to look up parent/subsidiary relationships (use GetLEIDetail)\n\n LEIs are required for regulatory reporting under MiFID II, EMIR, and Dodd-Frank.\n Cover 2M+ legal entities globally across 200+ jurisdictions.\n\n Source: GLEIF API (api.gleif.org). No API key required.\n ",
"inputSchema": {
"$defs": {
"LEISearchParams": {
"description": "Search GLEIF for Legal Entity Identifiers by name.",
"properties": {
"additional_display_fields": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of additional fields to display (e.g. ['firm_name', 'rep_name'])",
"title": "Additional Display Fields"
},
"country": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Two-letter ISO country code to narrow results. Examples: 'US', 'GB', 'DE'.",
"title": "Country"
},
"exclude_fillers": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of exclusion filters (e.g. {'rep_type': '!BUYING_UNIT'})",
"title": "Exclude Fillers"
},
"limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": 10,
"description": "Maximum number of results to return. Default 10.",
"title": "Limit"
},
"mcp_prompt_id": {
"default": "05525087-35e9-4aac-b06d-6d88ce386b2e",
"description": "Unique prompt ID for the MCP session. This can be used for tracking and logging purposes. Do not change this value.",
"title": "Mcp Prompt Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Full or partial legal entity name to search. Examples: 'Morgan Stanley', 'BlackRock', 'Vanguard Group'.",
"title": "Name"
},
"optional_additional_filters": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"description": "Dictionary of additional filters not covered by other fields",
"title": "Optional Additional Filters"
},
"question_asked": {
"default": "NA",
"description": "Question asked by the user. Please include the full question if possible, as it may contain important context for the tool to function properly.",
"title": "Question Asked",
"type": "string"
},
"source_resource_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional resource_id of a previously cached result set (returned by a prior Fetch tool call).\n When provided, the tool will load the full dataset directly from the cache folder instead of\n re-executing the query against the database. Pass this when the user is asking a follow-up\n question or a different grouping/filter on data that was already fetched. \n Also, use this, when one tool output is an input for another tool.\n ",
"title": "Source Resource Id"
},
"wholesaler_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "List of wholesaler IDs or names to filter results by the internal fin user\n who owns or manages the data. If names are provided instead of IDs, the system will automatically\n resolve them to their corresponding USER_IDs before applying the filter.\n \n In fin, users are assigned one of three roles:\n - Wholesaler: A field-level sales representative responsible for a specific territory, channel,\n or book of accounts. This is the most granular user type. Most sales data, advisor relationships,\n and touchpoints in fin are owned at the wholesaler level.\n - Manager: Oversees a team of Wholesalers, typically organized by territory or sales channel\n (e.g., Regional Manager, Channel Manager). Filtering by a Manager ID will scope results\n to that Manager's purview across their team.\n - Executive: C-suite level users (e.g., CEO, CFO, COO) at the asset manager / fund company\n level (e.g., PIMCO, MetLife, BlackRock). Executives have the broadest visibility and their\n ID represents an org-wide scope.\n\n Accepts either:\n - User IDs directly (e.g., ['WS001', 'MGR045'])\n - Full or partial user names (e.g., ['John Smith', 'Sarah']) — these will be resolved to IDs\n - A mix of both (e.g., ['WS001', 'Sarah Connor'])\n\n If omitted, data is returned based on the authenticated user's role and their default data scope.\n Examples: ['WS001'], ['WS001', 'MGR045'], ['John Smith'], ['John Smith', 'WS002']",
"title": "Wholesaler Ids"
}
},
"title": "LEISearchParams",
"type": "object"
}
},
"properties": {
"params": {
"$ref": "#/$defs/LEISearchParams",
"default": null
}
},
"title": "SearchLEIArguments",
"type": "object"
},
"name": "SearchLEI",
"outputSchema": {
"properties": {
"result": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"title": "SearchLEIOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:d4573602809deec43727af63e6ff71e54e49a5a4dd31191f07726432949df02d | sha256sum