pit-fundamentals-mcp
MCP server for company fundamentals from official filings (US, Japan, Taiwan, Korea, France, Belgium, Denmark, NZ charities), each figure dated by its filing.
npm · fingerprint 31e490788c2b807d8bd9bb20 · repository · RSS
4tools
3recorded versions
20dtracked
unchanged 6d
What changed
Changed between 14 October 2026 and 21 October 2026 (first seen 2026-10-21 11:55 UTC)
4 descriptions rewritten.
--- pinned/get_coverage +++ observed/get_coverage { - "description": "Markets covered, ticker counts, history depth per market, the free-tier ticker list, the metric vocabulary, and the source attributions that must travel with the data.", + "description": "Markets covered, ticker counts, history depth per market, the free-tier ticker list, the metric vocabulary, the source attributions that must travel with the data, and the licence the data is supplied under (with an evaluation key, its terms and end date).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {},
--- pinned/get_fundamentals_history +++ observed/get_fundamentals_history { - "description": "Every as-first-reported figure for one ticker, each row carrying the fiscal period and the date it became public (for Taiwan, the statutory reporting deadline — a conservative proxy that is never earlier than the real release). Filter with metric (comma-separated) and from (period-end lower bound); as_of caps what was knowable. Long histories are capped at the 250 most recent rows — narrow with metric/from for the rest. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", + "description": "The stored figures for one ticker, each row carrying its period (fy, fp: for a quarterly row the CALENDAR quarter containing the period end) and its filing date as each market records it (for Taiwan, the general statutory reporting deadline — a proxy, usually on or after the actual release). Filter with metric (comma-separated) and from (period-end lower bound); as_of keeps only filings dated on or before that day. On a free key, a company outside the full-history sample answers with its most recent reported fiscal year only: full_history false and history_depth say so, and older filings exist. Long histories are capped at 250 rows, keeping the most recent rows of EVERY metric (per_metric says how many of each); narrow with metric/from for the rest. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. A .TW row with fp FY is the full-year total, not a quarter. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a proxy, not the actual release date; for some financial and foreign first-listed companies and for weekend deadlines it can be earlier than the real deadline (known issue, being corrected). .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies; their `filed` is the register's record date, and about a quarter of those are one day early (known issue, being corrected). .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and the API's /api/v1/fundamentals/quality endpoint reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK `filed` is the Copenhagen calendar date of the register's publication, a date only before 11 April 2015. Known issue, being corrected: Danish dates up to 10 April 2015, and some later ones, are one day early, so an as_of query can include a Danish report published the day after as_of (https://www.tradingagentapp.com/fundamentals/methodology#dk-known-issue). .DK figures are the reporting entity's own accounts: for a Danish-GAAP parent that also publishes group accounts, usually its own figures, not the group's; for an IFRS filer (form annual/ifrs), the consolidated group's. .DK turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded. Period labels: fp is FY for an annual row; for a quarterly row (US, Taiwan) fy and fp are the CALENDAR year and quarter that contain the period end, not the company's own fiscal quarter: Apple's quarter ending 2025-12-27 is 2025 Q4, which Apple calls Q1 of fiscal 2026, so name a quarter by its period end, not by the label. A latest-view fact with a quarterly fp is ONE quarter's figure, not a full year. Licence: when you relay figures, keep the `attribution` notices and the `licence` notice of the response with them. Known issues, being corrected (also in the known_issues field of each data reply): Some Korean (.KS, .KQ) filing dates are being corrected: where a company first filed a notice extending its annual-report deadline (about 1% of company-years), the year is dated by that notice, so an as_of query can include that year's figures before its report was filed. https://www.tradingagentapp.com/fundamentals/methodology#kr-known-issue Some Danish (.DK) equity figures, mostly Danish GAAP periods ending 2012 to 2017, may be the company's share capital, not its total equity; for those periods liabilities, debt_to_equity and roe are wrong too. https://www.tradingagentapp.com/fundamentals/methodology#dk-equity-known-issue", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { - "description": "ISO date — only filings public by then", + "description": "Filing-date cut-off, YYYY-MM-DD: only filings dated on or before that day", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "from": { - "description": "ISO date — earliest period end to include", + "description": "Earliest period end to include, YYYY-MM-DD", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "metric": {
--- pinned/get_latest_fundamentals +++ observed/get_latest_fundamentals { - "description": "The most recent reported value of each metric for one ticker. Pass as_of to get the snapshot as it stood on that date — only filings public by then are considered, so a backtest at that date sees no future information. Tickers look like AAPL, 2330.TW, 005930.KS, 0403091220.BE, 775670417.FR, CC21860.NZC. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", + "description": "The most recent reported value of each metric for one ticker, each with its period (fy, fp), period end, filing date and form. Each metric is its own latest value, so two metrics can come from different periods, and a quarterly fp means ONE quarter's figure, not a year. Pass as_of to use only filings dated on or before that day (how each market dates a filing: https://www.tradingagentapp.com/fundamentals/methodology). On a free key, a company outside the full-history sample answers from its most recent reported fiscal year only (history_depth says so) and as_of needs a licence or an evaluation key. Tickers look like AAPL, 2330.TW, 005930.KS, 0403091220.BE, 775670417.FR, CC21860.NZC. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. A .TW row with fp FY is the full-year total, not a quarter. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a proxy, not the actual release date; for some financial and foreign first-listed companies and for weekend deadlines it can be earlier than the real deadline (known issue, being corrected). .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies; their `filed` is the register's record date, and about a quarter of those are one day early (known issue, being corrected). .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and the API's /api/v1/fundamentals/quality endpoint reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK `filed` is the Copenhagen calendar date of the register's publication, a date only before 11 April 2015. Known issue, being corrected: Danish dates up to 10 April 2015, and some later ones, are one day early, so an as_of query can include a Danish report published the day after as_of (https://www.tradingagentapp.com/fundamentals/methodology#dk-known-issue). .DK figures are the reporting entity's own accounts: for a Danish-GAAP parent that also publishes group accounts, usually its own figures, not the group's; for an IFRS filer (form annual/ifrs), the consolidated group's. .DK turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded. Period labels: fp is FY for an annual row; for a quarterly row (US, Taiwan) fy and fp are the CALENDAR year and quarter that contain the period end, not the company's own fiscal quarter: Apple's quarter ending 2025-12-27 is 2025 Q4, which Apple calls Q1 of fiscal 2026, so name a quarter by its period end, not by the label. A latest-view fact with a quarterly fp is ONE quarter's figure, not a full year. Licence: when you relay figures, keep the `attribution` notices and the `licence` notice of the response with them. Known issues, being corrected (also in the known_issues field of each data reply): Some Korean (.KS, .KQ) filing dates are being corrected: where a company first filed a notice extending its annual-report deadline (about 1% of company-years), the year is dated by that notice, so an as_of query can include that year's figures before its report was filed. https://www.tradingagentapp.com/fundamentals/methodology#kr-known-issue Some Danish (.DK) equity figures, mostly Danish GAAP periods ending 2012 to 2017, may be the company's share capital, not its total equity; for those periods liabilities, debt_to_equity and roe are wrong too. https://www.tradingagentapp.com/fundamentals/methodology#dk-equity-known-issue", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { - "description": "ISO date (YYYY-MM-DD). Defaults to today.", + "description": "Filing-date cut-off, YYYY-MM-DD (e.g. 2022-01-01). Defaults to today.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "ticker": {
--- pinned/search_companies +++ observed/search_companies { - "description": "Look up the ticker for a company name or partial symbol — 'TSMC', '2330', 'samsung'. Use this first when the user names a company rather than a ticker. Results with market NZC are New Zealand registered charities, not listed companies.", + "description": "Look up the ticker for a company name or partial symbol — 'Apple', 'TSMC', '2330', 'samsung', 'LVMH'. Use this first when the user names a company rather than a ticker, and check the market of the hit: a local subsidiary or a namesake in another country can share the name. Pass market (US, JP, TW, KR, FR, BE, DK, NZC) to search one market only. Results with market NZC are New Zealand registered charities, not listed companies.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { + "market": { + "description": "Only this market: US, JP, TW, KR, FR, BE, DK or NZC", + "pattern": "^[A-Za-z]{2,3}$", + "type": "string" + }, "query": { "description": "Company name or partial ticker", "type": "string"
Changed 2026-10-14 12:04 UTC
2 descriptions rewritten.
--- pinned/get_fundamentals_history +++ observed/get_fundamentals_history { - "description": "Every as-first-reported figure for one ticker, each row carrying the fiscal period and the date it became public (for Taiwan, the statutory reporting deadline — a conservative proxy that is never earlier than the real release). Filter with metric (comma-separated) and from (period-end lower bound); as_of caps what was knowable. Long histories are capped at the 250 most recent rows — narrow with metric/from for the rest. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are CUMULATIVE year-to-date (Q2 = H1 total, Q4 = full year) — difference adjacent quarters for a single quarter; .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", + "description": "Every as-first-reported figure for one ticker, each row carrying the fiscal period and the date it became public (for Taiwan, the statutory reporting deadline — a conservative proxy that is never earlier than the real release). Filter with metric (comma-separated) and from (period-end lower bound); as_of caps what was knowable. Long histories are capped at the 250 most recent rows — narrow with metric/from for the rest. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {
--- pinned/get_latest_fundamentals +++ observed/get_latest_fundamentals { - "description": "The most recent reported value of each metric for one ticker. Pass as_of to get the snapshot as it stood on that date — only filings public by then are considered, so a backtest at that date sees no future information. Tickers look like AAPL, 2330.TW, 005930.KS, 0403091220.BE, 775670417.FR, CC21860.NZC. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are CUMULATIVE year-to-date (Q2 = H1 total, Q4 = full year) — difference adjacent quarters for a single quarter; .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", + "description": "The most recent reported value of each metric for one ticker. Pass as_of to get the snapshot as it stood on that date — only filings public by then are considered, so a backtest at that date sees no future information. Tickers look like AAPL, 2330.TW, 005930.KS, 0403091220.BE, 775670417.FR, CC21860.NZC. Suffixes are not all listed equities, and not all figures mean what the column name suggests. .TW income-statement values are SINGLE-QUARTER (three-month) amounts: Taiwan files cumulative year-to-date totals and they are converted before you see them, so do NOT difference adjacent quarters again. .TW current quarters come from the TWSE OpenAPI (Open Government Data License v1.0, attribution required); history from 2013 comes from the TWSE MOPS XBRL archive, which is NOT open data: keep both attribution notices and do not call Taiwan figures open data. US figures (SEC EDGAR) are public information. .TW filing dates are the statutory reporting deadline, a deliberately late proxy, not the actual release date. .BE is Belgian STATUTORY SOLO accounts, never group consolidation. .NZC is New Zealand REGISTERED CHARITIES (Charities Register annual returns), not listed companies. .FR is INPI's register of keyed-in annual accounts: `filed` is dateDepot, the register's own deposit date, and balance sheets are included. Coverage is substantially complete from 2022; 2017-2021 is still backfilling. Turnover is lawfully absent from roughly 36% of French deposits (confidentiality declarations); it is PRESENT on 64.0% of company-periods, and get_data_quality reports the measured share of every metric in every market. The reporting model rides in `form` (K consolidated, C complet, S simplifie); consolidated and own accounts are separate deposits with their own dates, so both can appear for one SIREN and period. .DK is similar: its filing dates are the register's REAL publication timestamps, and turnover is present on only 10.5% of company-periods (Belgium is lower still at 8.1%) because Danish reporting class B may publish gross profit instead — that absence is lawful disclosure, not missing data, and gross profit is never a substitute for it. A .DK `form` is annual (Danish GAAP) or annual/ifrs, with the period's length appended when a year is not 11-13 months (annual/15m for a long first year); interim reports are excluded.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {
Current tools
Show all 4 tool fingerprints
get_coverage
get_fundamentals_history
get_latest_fundamentals
search_companies
Watch this server yourself
If you run this server, put the proxy in front of it. It pins these exact fingerprints on first connect and stops the session if they move.
npx -y mcp-pin@0.2.3 -- <your pit-fundamentals-mcp command>
Or subscribe to this page's RSS feed to be told when it changes.
Badge
The badge states one fact about time and nothing else. It never claims a server is safe.
[](https://mcp-pin.gautamkhosla.com/servers/ec218f2da81932b9.html)