Skip to main content
Glama
imbenrabi

Financial Modeling Prep MCP Server

getFundDisclosureDates

Read-onlyIdempotent

Retrieve mutual fund and ETF disclosure filing dates and details using fund symbol and optional CIK. Stay updated on regulatory filings.

Instructions

Retrieve detailed disclosures for mutual funds and ETFs based on filing dates with the FMP Fund & ETF Disclosures by Date API. Stay current with the latest filings and track regulatory updates effectively.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
symbolYesFund symbol
cikNoOptional CIK number

Implementation Reference

  • The MCP tool handler for 'getFundDisclosureDates'. It registers a server tool that accepts 'symbol' (required) and 'cik' (optional) parameters, calls fundClient.getDisclosureDates(), and returns the result as JSON.
    server.tool(
      "getFundDisclosureDates",
      "Retrieve detailed disclosures for mutual funds and ETFs based on filing dates with the FMP Fund & ETF Disclosures by Date API. Stay current with the latest filings and track regulatory updates effectively.",
      {
        symbol: z.string().describe("Fund symbol"),
        cik: z.string().optional().describe("Optional CIK number"),
      },
      async ({ symbol, cik }) => {
        try {
          const results = await fundClient.getDisclosureDates(symbol, cik);
          return {
            content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
          };
        } catch (error) {
          return {
            content: [
              {
                type: "text",
                text: `Error: ${
                  error instanceof Error ? error.message : String(error)
                }`,
              },
            ],
            isError: true,
          };
        }
      }
    );
  • The getDisclosureDates() method on FundClient that makes the actual API call to '/funds/disclosure-dates' with symbol and optional cik parameters, returning FundDisclosureDate[].
    /**
     * Get fund(ETF and Mutual Funds) disclosure dates for a symbol and cik
     * @param symbol The fund symbol
     * @param cik Optional CIK number
     * @param options Optional parameters including abort signal and context
     * @returns Array of fund disclosure dates
     */
    async getDisclosureDates( 
      symbol: string,
      cik?: string,
      options?: {
        signal?: AbortSignal;
        context?: FMPContext;
      }
    ): Promise<FundDisclosureDate[]> {
      return super.get<FundDisclosureDate[]>(
        "/funds/disclosure-dates",
        {
          symbol,
          cik,
        },
        options
      );
    }
  • The FundDisclosureDate interface defining the return type with fields: date (string), year (number), quarter (number).
    export interface FundDisclosureDate {
      date: string;
      year: number;
      quarter: number;
    }
  • The registerFundTools function that registers all fund tools including getFundDisclosureDates on the MCP server.
    export function registerFundTools(
      server: McpServer,
      accessToken?: string
    ): void {
      const fundClient = new FundClient(accessToken);
    
      server.tool(
        "getFundHoldings",
        "Get a detailed breakdown of the assets held within ETFs and mutual funds using the FMP ETF & Fund Holdings API. Access real-time data on the specific securities and their weights in the portfolio, providing insights into asset composition and fund strategies.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getHoldings(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundInfo",
        "Access comprehensive data on ETFs and mutual funds with the FMP ETF & Mutual Fund Information API. Retrieve essential details such as ticker symbol, fund name, expense ratio, assets under management, and more.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getInfo(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundCountryAllocation",
        "Gain insight into how ETFs and mutual funds distribute assets across different countries with the FMP ETF & Fund Country Allocation API. This tool provides detailed information on the percentage of assets allocated to various regions, helping you make informed investment decisions.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getCountryAllocation(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundAssetExposure",
        "Discover which ETFs hold specific stocks with the FMP ETF Asset Exposure API. Access detailed information on market value, share numbers, and weight percentages for assets within ETFs.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getAssetExposure(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundSectorWeighting",
        "The FMP ETF Sector Weighting API provides a breakdown of the percentage of an ETF's assets that are invested in each sector. For example, an investor may want to invest in an ETF that has a high exposure to the technology sector if they believe that the technology sector is poised for growth.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getSectorWeighting(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getDisclosure",
        "Access the latest disclosures from mutual funds and ETFs with the FMP Mutual Fund & ETF Disclosure API. This API provides updates on filings, changes in holdings, and other critical disclosure data for mutual funds and ETFs.",
        {
          symbol: z.string().describe("Fund symbol"),
        },
        async ({ symbol }) => {
          try {
            const results = await fundClient.getDisclosure(symbol);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundDisclosure",
        "Access comprehensive disclosure data for mutual funds with the FMP Mutual Fund Disclosures API. Analyze recent filings, balance sheets, and financial reports to gain insights into mutual fund portfolios.",
        {
          symbol: z.string().describe("Fund symbol"),
          year: z.number().describe("Year"),
          quarter: z.number().describe("Quarter"),
          cik: z.string().optional().describe("Optional CIK number"),
        },
        async ({ symbol, year, quarter, cik }) => {
          try {
            const results = await fundClient.getFundDisclosure(symbol, year, quarter, cik);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "searchFundDisclosures",
        "Easily search for mutual fund and ETF disclosures by name using the Mutual Fund & ETF Disclosure Name Search API. This API allows you to find specific reports and filings based on the fund or ETF name, providing essential details like CIK number, entity information, and reporting file number.",
        {
          name: z.string().describe("Name of the holder to search for"),
        },
        async ({ name }) => {
          try {
            const results = await fundClient.searchDisclosures(name);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    
      server.tool(
        "getFundDisclosureDates",
        "Retrieve detailed disclosures for mutual funds and ETFs based on filing dates with the FMP Fund & ETF Disclosures by Date API. Stay current with the latest filings and track regulatory updates effectively.",
        {
          symbol: z.string().describe("Fund symbol"),
          cik: z.string().optional().describe("Optional CIK number"),
        },
        async ({ symbol, cik }) => {
          try {
            const results = await fundClient.getDisclosureDates(symbol, cik);
            return {
              content: [{ type: "text", text: JSON.stringify(results, null, 2) }],
            };
          } catch (error) {
            return {
              content: [
                {
                  type: "text",
                  text: `Error: ${
                    error instanceof Error ? error.message : String(error)
                  }`,
                },
              ],
              isError: true,
            };
          }
        }
      );
    }
Behavior2/5

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

Description adds no behavioral info beyond annotations. Annotations already indicate read-only and idempotent, but the description does not address pagination, rate limits, or data freshness.

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

Conciseness4/5

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

Two sentences, efficient but second sentence is generic fluff. Could be slightly tighter.

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

Completeness2/5

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

With no output schema and many sibling tools for filings and disclosures, the description fails to clarify the specific role of this tool. Incomplete for the complexity.

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

Parameters2/5

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

Schema coverage is 100% but the description mentions 'filing dates' which are not reflected in parameters. Creates confusion; does not compensate for the mismatch.

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

Purpose3/5

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

Description states it retrieves detailed disclosures for mutual funds and ETFs based on filing dates, but lacks specificity on how dates are used or returned. Does not differentiate from sibling tools like getFundDisclosure or getForm13FFilingDates.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. No exclusions or context for appropriate usage.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/imbenrabi/Financial-Modeling-Prep-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server