Agent Rynku MCP

Narzędzie publiczne · get_quarterly_kpis

Wyniki kwartalne spółek GPW

Przychody, EBITDA, zysk netto, EPS, aktywa, kapitał i przepływy z raportów okresowych emitentów, do 20 ostatnich kwartałów. Każda liczba ma okres, walutę, zakres raportu i link do źródła.

Działa bez konta i klucza API przez serwer MCP pod adresem https://agentrynku.pl/api/mcp. Jak podłączyć klienta.

Kiedy użyć

Parametry

ParametrTypWymaganyDomyślnieZakresOpis
symbolstringtakTicker, nazwa, alias albo ISIN spółki z GPW, np. KGHM lub PLKGHM000017.
quartersBackintegernie81-20Ile ostatnich kwartałów zwrócić.

Przykładowe wywołanie

Agent wywoła narzędzie sam, gdy zadasz pytanie. Te same dane pobierzesz bezpośrednio przez JSON-RPC:

curl -sS https://agentrynku.pl/api/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_quarterly_kpis","arguments":{"symbol":"KGHM","quartersBack":1}}}'

Przykładowa odpowiedź

Prawdziwa odpowiedź serwera z 5 października 2026. Listy skróciliśmy do dwóch pozycji. Te same dane zobaczysz na karcie spółki na agentrynku.pl.

{
  "symbol": "KGHM",
  "assetId": "69ed03a9aed8a51a4f606dea",
  "universe": "polish-stocks",
  "companyUrl": "https://agentrynku.pl/asset/KGHM",
  "coverage": "Issuer reports and GPW announcements only. Portal databases and portal-sourced fields are excluded.",
  "storageSymbols": [
    "KGHM"
  ],
  "units": {
    "fields": {
      "quarters[].revenuePLN": "currency_millions",
      "quarters[].ebitdaPLN": "currency_millions",
      "quarters[].adjustedEbitdaPLN": "currency_millions",
      "quarters[].ebitPLN": "currency_millions",
      "quarters[].netIncomePLN": "currency_millions",
      "quarters[].netIncomeExOneOffPLN": "currency_millions",
      "quarters[].netIncomeOneOff.valuePLN": "currency_millions",
      "quarters[].netIncomeAttributableToParentPLN": "currency_millions",
      "quarters[].adjustedNetIncomePLN": "currency_millions",
      "quarters[].oneOffItemsPLN": "currency_millions",
      "quarters[].totalAssetsPLN": "currency_millions",
      "quarters[].totalEquityPLN": "currency_millions",
      "quarters[].netDebtPLN": "currency_millions",
      "quarters[].operatingCashFlowPLN": "currency_millions",
      "quarters[].capexPLN": "currency_millions",
      "quarters[].freeCashFlowPLN": "currency_millions",
      "quarters[].epsPLN": "currency_per_share",
      "quarters[].adjustedEpsPLN": "currency_per_share"
    },
    "currencyBasis": {
      "quarters[].revenuePLN": "issuer_reporting_currency",
      "quarters[].ebitdaPLN": "issuer_reporting_currency",
      "quarters[].adjustedEbitdaPLN": "issuer_reporting_currency",
      "quarters[].ebitPLN": "issuer_reporting_currency",
      "quarters[].netIncomePLN": "issuer_reporting_currency",
      "quarters[].netIncomeExOneOffPLN": "issuer_reporting_currency",
      "quarters[].netIncomeOneOff.valuePLN": "issuer_reporting_currency",
      "quarters[].netIncomeAttributableToParentPLN": "issuer_reporting_currency",
      "quarters[].adjustedNetIncomePLN": "issuer_reporting_currency",
      "quarters[].oneOffItemsPLN": "issuer_reporting_currency",
      "quarters[].totalAssetsPLN": "issuer_reporting_currency",
      "quarters[].totalEquityPLN": "issuer_reporting_currency",
      "quarters[].netDebtPLN": "issuer_reporting_currency",
      "quarters[].operatingCashFlowPLN": "issuer_reporting_currency",
      "quarters[].capexPLN": "issuer_reporting_currency",
      "quarters[].freeCashFlowPLN": "issuer_reporting_currency",
      "quarters[].epsPLN": "issuer_reporting_currency",
      "quarters[].adjustedEpsPLN": "issuer_reporting_currency"
    },
    "note": "⚠️⚠️ Amounts here are in MILLIONS: `revenuePLN: 11872` means 11.87 billion, not 11872. `get_forecast` reports `baseline.*` in BARE units, so the same company differs by 1e6 between the two tools. `epsPLN` and `adjustedEpsPLN` are per-share and therefore in bare units. ⚠️ CURRENCY IS DECLARED SEPARATELY IN `currencyBasis`, because one response mixes several bases: the `PLN` suffix is a legacy field name, not a currency assertion. `issuer_reporting_currency` = the issuer's statements (may be EUR or USD); `listing_quote_currency` = the price feed for that listing; `holding_cost_currency` = the per-position cost basis (USD for a US holding); `cost_minus_quote_difference` = a value produced by subtracting the quote from the cost, which has no single currency and is only meaningful while those two agree (measured 2026-08-05: true for 45 of 45 stored positions). An issuer that reports in EUR while trading in PLN puts two different currencies in the same response, so never subtract a quote from a reported amount without checking both entries."
  },
  "quarters": [
    {
      "publicSourceWithheldFields": [],
      "quarter": "2026-Q2",
      "reportScope": "consolidated",
      "reportedAt": "2026-08-19T15:08:36.000Z",
      "currency": "PLN",
      "revenuePLN": 12839,
      "ebitdaPLN": null,
      "adjustedEbitdaPLN": null,
      "ebitPLN": null,
      "withheldByOneOff": [],
      "withheld": [],
      "netIncomePLN": 2050,
      "netIncomeExOneOffPLN": 2050,
      "netIncomeOneOff": null,
      "netIncomeAttributableToParentPLN": null,
      "epsPLN": 10.25,
      "adjustedNetIncomePLN": null,
      "adjustedEpsPLN": null,
      "oneOffItemsPLN": null,
      "oneOffNotes": "[derived] standalone 2026-Q2 from YTD delta (ytd_delta)",
      "totalAssetsPLN": 65862,
      "totalEquityPLN": 39814,
      "netDebtPLN": null,
      "operatingCashFlowPLN": 1876,
      "capexPLN": null,
      "freeCashFlowPLN": null,
      "source": "pap",
      "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559",
      "values": {
        "revenuePLN": {
          "value": 12839,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "ręcznie",
          "evidenceCount": 1,
          "currency": "PLN",
          "unit": "mln",
          "sourceUrl": "https://kghm.com/sites/default/files/2026-08/Skonsolidowany%20raport%20p%C3%B3%C5%82roczny%20PSr%202026.pdf"
        },
        "netIncomePLN": {
          "value": 2050,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "wyliczona z raportu",
          "evidenceCount": 1,
          "currency": "PLN",
          "unit": "mln",
          "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559"
        },
        "epsPLN": {
          "value": 10.25,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "PAP",
          "evidenceCount": 1,
          "currency": "PLN",
          "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559"
        },
        "operatingCashFlowPLN": {
          "value": 1876,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "wyliczona z raportu",
          "evidenceCount": 1,
          "currency": "PLN",
          "unit": "mln",
          "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559"
        },
        "totalAssetsPLN": {
          "value": 65862,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "PAP",
          "evidenceCount": 1,
          "currency": "PLN",
          "unit": "mln",
          "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559"
        },
        "totalEquityPLN": {
          "value": 39814,
          "asOf": "2026-08-19T15:08:36.000Z",
          "source": "PAP",
          "evidenceCount": 1,
          "currency": "PLN",
          "unit": "mln",
          "sourceUrl": "https://www.gpw.pl/komunikat?geru_id=495559"
        }
      },
      "dataQuality": {
        "flagRule": null,
        "flagRuleOpis": null,
        "manualVerdict": null,
        "manualVerdictOpis": null,
        "blocksComputation": false,
        "confirmedBadFields": []
      }
    }
  ]
}

Na co uważać

O co zapytać agenta

Opis narzędzia dla modelu

Tak serwer opisuje narzędzie w tools/list. Ten tekst czyta model, wybierając narzędzie:

Quarterly financial KPIs for a symbol (revenue, EBITDA, net income, EPS, balance sheet, cash flow, adjusted vs reported). Foundation data for predictive scanner / earnings bridge / forecast calibration. Coverage varies by GPW company and quarter. Instruments are resolved from the registry by ticker, alias or ISIN, within the Polish market. Missing data is not zero. Each row includes reportScope (null when unknown); do not assume standalone and consolidated figures are comparable. ⚠️⚠️ UNITS: monetary `...PLN` fields here are in MILLIONS — `revenuePLN: 11872` for KGHM means 11.87 BILLION, not 11872. This differs from `get_forecast`, where `baseline.ttm*PLN` is in BARE units (KGHM 39296000000); the two scales differ by exactly 1e6 (verified 2026-08-05 on 6 companies), so never compare or divide a value from this tool by one from get_forecast without converting first. ⚠️⚠️ CURRENCY: despite the `PLN` suffix, these amounts are in the issuer's REPORTING currency — always read the row's `currency` field, which may be EUR or USD. The suffix is a legacy field name, not a currency assertion. EXCEPTIONS to the million rule: `epsPLN` and `adjustedEpsPLN` are per-share and therefore in bare currency units. ⚠️⚠️ DATA QUALITY: every row carries `dataQuality` with `flagRule` (our detector's rule, null when clean), `manualVerdict` (`legit` = a human confirmed the number at the source, `confirmed_bad` = a human rejected it) and `blocksComputation` (the SHARED predicate the forecast pipeline itself applies). A row with `blocksComputation: true` is one WE do not trust: quote it only with that caveat, and never feed it into a TTM sum or a growth rate. Measured 2026-08-09: of 4665 polish-stocks rows, 257 carry a detector flag and 257 have `blocksComputation: true` - the two counts match by coincidence, not by definition: the blocked set drops one flagged row a human confirmed as `legit` and adds one row a human rejected as `confirmed_bad` without any detector flag. Always read `blocksComputation`, never infer it from `flagRule`. ⭐ PROVENANCE (ARCH-3.5): every row also carries `values.<field>` = {value, currency, unit ('mln' for money, absent for per-share), asOf, source (producer label), evidenceCount, sourceUrl}. Prefer `values` over the bare `...PLN` fields: it names the currency and unit explicitly, and a field with no complete provenance is ABSENT from `values` rather than null or 0. The bare `...PLN` fields are legacy and will be removed. `withheld` lists fields returned as null (flat fields and `values`) because a data-quality flag withholds them, each with `field`, `rule` and a Polish `reason`: a profit-read flag withholds net income, parent net income, EBIT, EBITDA, EPS and their adjusted variants while revenue stays, so never read those nulls as "not reported".

Pozostałe publiczne narzędzia

Portfel, alerty, prognozy i notowania w trakcie sesji są w pełnym katalogu i wymagają klucza API.