Reporting Window Finder

com.mambabuiltPublished by mambabuilt.comv1.1.3Updated Nov 7, 2026

Find when a public company reports: fiscal year end, cadence, next date and the outreach window.

The publisher's own server: Finder Jobs

Overview

AI-generated overview

Resolves public companies and finds when they report, with fiscal year end, cadence, next event date and a configurable outreach window.

What you can do
  • Resolve companies from domains, tickers, ISINs, LEIs, CIKs or names into identity and venue fields
  • Check whether a company is publicly listed, with options to keep or suppress listed companies
  • Get reporting timing: fiscal year end, cadence, next event, days to event and outreach window open/close
  • Build a company universe from filters such as exchange, country, sector, float band and cadence
  • Summarize reporting load per week or month, optionally split by sector, country or exchange
When to use it
Useful for sales, marketing or research work that depends on knowing when public companies file results, so outreach or campaigns can be timed around reporting dates. Also fits building filtered lists of listed companies or checking listing status in bulk.
Requirements
Runs locally via npx from the npm package, so Node.js is needed. Requires an Apify account and an APIFY_TOKEN environment variable. Network access to Apify is required, and usage is billed per row on Apify.
Before you install
Usage costs money: about $0.006 per resolved company row, $0.012 per timing row, $0.05 per season aggregate row and a small per-run start fee, charged for rows returned including no-match rows. Set limit explicitly on universe and season calls, since it defaults to 1000. Reporting dates are predictions from US SEC filing history and cover US companies only; non-US companies return a stated reason but are still billed.

Installation

In SourceWeft

  1. Open Reporting Window Finder in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Reporting Window Finder MCP Server

[Public Company Reporting Window Finder MCP server]

MCP server for the Mamba Labs Reporting Window Finder actor on Apify.

Give it a domain, ticker, ISIN, LEI or CIK and it tells you when that public company reports, and when to reach out around it: fiscal year end, reporting cadence, the next reporting date, days to event, and the open and close of an outreach window you define.

Timing rows cover US companies only. Identity, venue and classification resolve worldwide across the publishable universe. Reporting dates come from US SEC filing history and exist for US companies alone. A non US company resolves fully and returns a stated timing_unavailable_reason rather than a guessed date, and is still charged as a timing row because the lookup ran.

Five tools, one per actor mode

ToolTakesReturns
resolve_companyidentifiersidentity and venue, 44 fields
qualify_companyidentifiersa listed status verdict
get_reporting_timingidentifiersfiscal year end, cadence, next event, the outreach window, 75 fields
build_company_universefiltersa company list
get_reporting_seasonfiltersreporting load per week or month

You never pass mode. Each tool sets it, and each tool exposes only the inputs its mode actually uses.

build_company_universe and get_reporting_season build a list from filters and do not accept company identifiers. Set limit explicitly on both: it defaults to 1000 and you are charged per row returned.

Parameters

Every parameter is optional unless a tool says otherwise. The Tools column names the tools that accept it.

ParameterTypeToolsDescription
company_domainstringresolve_company, qualify_company, get_reporting_timingA single bare domain, e.g. stripe.com. The Clay column shape. Used by resolve, qualify and timing.
company_domainsstring[]resolve_company, qualify_company, get_reporting_timingMany domains at once. Used by resolve, qualify and timing.
tickersstring[]resolve_company, qualify_company, get_reporting_timingExchange tickers, e.g. NWLG. Matched against the primary ticker and every venue listing.
isinsstring[]resolve_company, qualify_company, get_reporting_timing12 character ISINs.
leisstring[]resolve_company, qualify_company, get_reporting_timing20 character Legal Entity Identifiers.
ciksstring[]resolve_company, qualify_company, get_reporting_timingSEC Central Index Keys, with or without leading zeros.
company_namesstring[]resolve_company, qualify_company, get_reporting_timingLegal or trading names. Matched on a normalized name. Former names are not available: the alias table carries tickers and ISINs only.
exchange_codesstring[]all fiveISO 10383 MICs. 18 venues are covered.
country_codesstring[]all fiveISO 3166-1 alpha-2, e.g. US, GB, FR.
regionsstring[]all fiveShorthand for a set of venues and countries: us, uk, eu. Widens an explicit exchange or country filter rather than replacing it.
sectorsstring[]all fiveSEC SIC descriptions, e.g. Pharmaceutical Preparations. Populated on roughly 65 percent of the publishable universe.
security_typesstring[]all fiveordinary_shares, depositary_receipt, preferred_shares.
public_float_bandsstring[]all fivemicro, small, mid, large, mega, unknown. Size runs on public float because market capitalization is not populated anywhere in this dataset.
fiscal_year_end_monthsstring[]all fiveIntegers 1 to 12. Fiscal year end is effectively a United States field in this dataset.
exclude_december_fiscal_year_endstring (false, true)all fiveKeep only companies whose fiscal year ends in a month other than December, the accounts whose budget cycle is out of phase with a calendar quarter.
cadencesstring[]all fivequarterly, semiannual, annual, unknown.
operating_companies_onlystring (false, true)all fiveDrop funds, trusts and other non operating entities.
exclude_blank_checksstring (false, true)all fiveDrop pre deal SPACs. Separate from the operating company filter: a blank check shell is flagged as an operating company and passes every ordinary firmographic filter.
foreign_private_issuerstring (any, only, exclude)all fiveFilter on foreign private issuer status.
us_registrant_onlystring (false, true)all fiveKeep only companies carrying an SEC CIK.
min_provenance_confidencestring (any, high)all fiveSet to high to exclude rows whose source terms were never read.
exclude_name_only_matchesstring (false, true)all fiveDrop rows whose identity link rests on a name and country agreeing rather than on an identifier. Use this wherever a wrong identity link matters.
exclude_share_alikestring (false, true)all fiveDrop rows derived from CC BY-SA sources, whose share alike condition may not suit a closed product.
listed_onlystring (false, true)qualify_companyqualify mode. Keep only rows proven to be publicly listed.
suppress_listedstring (false, true)qualify_companyqualify mode. Remove companies proven to be publicly listed, for anyone selling only into private companies. It removes what we can prove is listed; it does not warrant that the remainder is private.
assume_unmatched_is_privatestring (false, true)qualify_companyqualify mode. By default an unmatched company returns is_listed null, because a non match may mean the company is private OR that we do not hold its domain. Set true to opt into reading a non match as private, which sets is_listed false.
event_typesstring[]get_reporting_timing, get_reporting_seasonfull_year_results, half_year_results, quarterly_results, trading_update, annual_report_publication, sustainability_report_publication, agm, proxy_filing, capital_markets_day.
window_lead_daysstringget_reporting_timingHow many days before the event the outreach window opens. Default 70.
window_lag_daysstringget_reporting_timingHow many days before the event the outreach window closes. Default 42. Must be less than the lead.
window_statusesstring[]get_reporting_timingKeep only rows in these window states: open, not_yet, closed_passed, no_event.
max_days_to_eventstringget_reporting_timingDrop rows whose next event is further away than this. A cost control.
min_cadence_confidencestringget_reporting_timing0 to 1. Rows whose cadence confidence falls below this return a null timing block with a stated reason rather than a guess. Quarterly cadence averages 0.94, annual 0.40, semiannual 0.21.
include_constrained_periodstring (true, false)get_reporting_timingEmit the period in which a listed company is constrained in what it can announce, derived from the same window numbers. Useful for campaign and announcement timing.
limitstringbuild_company_universe, get_reporting_seasonMaximum rows for universe and season. Truncation is always reported, never silent.
season_group_bystring (week, month)get_reporting_seasonseason mode. Bucket size.
season_split_bystring (none, sector, country, exchange_code)get_reporting_seasonseason mode. Optional second dimension.
season_fromstringget_reporting_seasonseason mode. ISO date. Defaults to today.
season_tostringget_reporting_seasonseason mode. ISO date. Defaults to 180 days from today.

Install

json
{  "mcpServers": {    "mamba-public-company-reporting-window-finder": {      "command": "npx",      "args": ["-y", "@mambalabsdev/mcp-public-company-reporting-window-finder"],      "env": { "APIFY_TOKEN": "your-apify-token" }    }  }}

Get a token at console.apify.com/account/integrations.

Reading the output

Dates are predicted, not announced. next_event_is_estimate is true for a date derived from filing history. confidence_band sits at 0.80 and 0.50, computed on the weakest link in the chain, so confidence_effective is the minimum of the event and cadence confidences rather than an average.

window_status is the field to filter on. It is open, not_yet, closed_passed or no_event against today. no_event is the state a company lands in when there is no reporting event to build a window from.

Unknown cadence is refused, not guessed. A company whose filing history is too short or irregular returns a null cadence with a reason instead of an invented date.

A row that resolves nothing is still billed. An identifier that matches no public company returns match_method of no_match with every other field null. That is a real answer and the lookup ran to produce it.

Cost

Pay per event on Apify, charged for rows returned rather than rows filtered out.

EventPrice
Company resolved$0.006 per row
Timing row returned$0.012 per row
Reporting season aggregate$0.05 per row
Actor start$0.00005 per run

Volume discounts of 5, 10 and 15 percent apply on the Apify Bronze, Silver and Gold plans. A timing row is never additionally charged as a resolved company.

Part of the Mamba Labs GTM Suite

Browse the full suite on Apify.

License

MIT

Source: README.md at commit 4eca8dc

Tools

5

resolve_company

Resolve Company

Resolve a domain, ticker, ISIN, LEI, CIK or company name to a listed company identity. Returns 44 fields per input: legal name, primary ticker, ISIN, LEI, CIK, domain, primary exchange, country, currency, sector, security type, public float band, shares outstanding, and the provenance of each. Every input returns exactly one row, including the ones that match nothing, which come back with match_method set to no_match and every other field null. Read matched_on to see which identifier produced the row. Use this when you hold identifiers and need the listed identity behind them; use qualify_company for a yes or no on listed status, get_reporting_timing for dates, and build_company_universe when you hold filters rather than identifiers. The filter inputs (exchange_codes, country_codes, regions, sectors, and the rest) narrow which matched rows come back. Charged per company row returned, including a no_match row, because the lookup ran either way. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Parametersciksleisisinsregionssectorstickerscadencescompany_namescountry_codescompany_domainexchange_codessecurity_types+11 more

qualify_company

Qualify Company

Answer whether a company is publicly listed. Takes the same identifiers as resolve_company and returns a listed status verdict per input. Set listed_only to keep only the companies proven to be listed, or suppress_listed to remove them, which is what you want when selling only into private companies. By default an unmatched company returns is_listed null rather than false, because a non match may mean the company is private OR that the dataset does not hold its domain; set assume_unmatched_is_private to true to opt into reading a non match as private. Use this to split a prospect list into listed and private companies before outreach; use resolve_company when you need the full identity fields. Identify companies with company_domain, company_domains, tickers, isins, leis, ciks, or company_names; every other input is an optional filter shared with resolve_company (exchange, country, region, sector, security type, float band, fiscal year end, cadence, and data quality switches). Charged per company row returned. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Parametersciksleisisinsregionssectorstickerscadenceslisted_onlycompany_namescountry_codescompany_domainexchange_codes+14 more

get_reporting_timing

Get Reporting Timing

Find when a public company next reports, and when to reach out around it. Returns 75 fields per input: fiscal year end, derived reporting cadence and its confidence, the next reporting event with its type, period and date, days to event, and the open and close of an outreach window you define with window_lead_days and window_lag_days, which default to 70 and 42. window_status is one of open, not_yet, closed_passed or no_event and is the field to filter on. Dates are PREDICTED from filing history, not announced: read next_event_is_estimate and confidence_band, whose thresholds sit at 0.80 and 0.50. TIMING ROWS COVER US COMPANIES ONLY. A non US company resolves fully for identity and returns a stated timing_unavailable_reason rather than a guessed date, and is still charged as a timing row because the work ran. Charged per timing row returned, never additionally as a resolved company. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Parametersciksleisisinsregionssectorstickerscadencesevent_typescompany_namescountry_codescompany_domainexchange_codes+18 more

build_company_universe

Build Company Universe

Build a list of listed companies from filters rather than from identifiers you already hold. Filter by exchange, country, region, sector, security type, public float band, fiscal year end month, reporting cadence, operating status and foreign private issuer status. Returns 44 fields per company, the same shape resolve_company returns. At least one filter is required, so a bare call cannot pull the whole universe. This tool does NOT accept company identifiers: use resolve_company, qualify_company or get_reporting_timing for specific companies. SET limit EXPLICITLY. It defaults to 1000 and you are charged per company row returned, so an unbounded call is an expensive call. Truncation is always reported, never silent. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Parameterslimitregionssectorscadencescountry_codesexchange_codessecurity_typespublic_float_bandsus_registrant_onlyexclude_share_alikeexclude_blank_checksfiscal_year_end_months+5 more

get_reporting_season

Get Reporting Season

Show how reporting load is distributed over time, so you can find the busy weeks and the quiet ones. Returns aggregate rows per bucket, not per company: period start and end, event count, company count, estimated share and mean confidence. Bucket by week or month with season_group_by, and optionally split by sector, country or exchange with season_split_by. The window defaults to today through 180 days out; set season_from and season_to for another. At least one filter is required and company identifiers are not accepted. Use this to plan campaign timing across a market, not to time one account; for a single company use get_reporting_timing. Narrow the population with the same filters build_company_universe takes (exchange_codes, country_codes, regions, sectors, public_float_bands, cadences). Charged per aggregate row returned, which is far fewer rows than the companies behind them. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Parameterslimitregionssectorscadencesseason_toevent_typesseason_fromcountry_codesexchange_codessecurity_typesseason_group_byseason_split_by+10 more

Version history

5
  1. v1.1.3LatestNov 5, 2026
  2. v1.1.2Oct 16, 2026
  3. v1.1.1Oct 16, 2026
  4. v1.1.0Oct 6, 2026
  5. v1.0.0Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Finder integrations