agentrynku-mcp 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,118 +1,95 @@
1
- # Agent Rynku MCP: Warsaw Stock Exchange (GPW) data for your AI agent
1
+ # Agent Rynku MCP: Warsaw Stock Exchange data for agents
2
2
 
3
3
  [![npm](https://img.shields.io/npm/v/agentrynku-mcp)](https://www.npmjs.com/package/agentrynku-mcp)
4
- [![MCP Registry](https://img.shields.io/badge/MCP%20Registry-pl.agentrynku%2Fgpw-blue)](https://registry.modelcontextprotocol.io/v0/servers?search=pl.agentrynku)
4
+ [![MCP Registry](https://img.shields.io/badge/MCP%20Registry-pl.agentrynku%2Fgpw-blue)](https://registry.modelcontextprotocol.io/v0.1/servers?search=pl.agentrynku%2Fgpw)
5
5
 
6
- **[Agent Rynku](https://agentrynku.pl/mcp)** is a hosted [Model Context Protocol](https://modelcontextprotocol.io) server with 93 tools for the Polish stock market: live and historical quotes, ESPI/EBI filings with an assessment of each one, quarterly KPIs extracted from company documents, earnings forecasts with a track record, and portfolio analytics in PLN.
6
+ Use GPW company financials through a hosted MCP server, without creating an account. [Agent Rynku](https://agentrynku.pl/en/mcp) returns report periods, currency, sources and quality checks. Missing data is explicit.
7
7
 
8
- Connect it to Claude, Cursor, or any MCP client and ask things like:
8
+ ## Connect without an API key
9
9
 
10
- - "What did KGHM report today, and how does it compare with the forecast?"
11
- - "Show WIG20 companies after their latest results."
12
- - "Which of my positions are above 20% concentration?"
13
- - "How much tax will I owe on this year's sales?"
10
+ The endpoint uses Streamable HTTP:
14
11
 
15
- > Polski opis jest [niżej](#po-polsku).
16
-
17
- ## Quick start
18
-
19
- **1. Get an API key.** Create a free account at [agentrynku.pl](https://agentrynku.pl/login) and generate a key in [settings](https://agentrynku.pl/settings). The free account covers unlimited data tool calls; only the LLM-backed companion queries are metered. The bridge below makes one check call per start to verify the key.
20
-
21
- **2. Connect your client.** The server speaks Streamable HTTP at:
22
-
23
- ```
12
+ ```text
24
13
  https://agentrynku.pl/api/mcp
25
14
  ```
26
15
 
27
- with the header `Authorization: Bearer YOUR_KEY`.
28
-
29
- ### Claude Code
30
-
31
- ```bash
32
- claude mcp add --transport http agentrynku https://agentrynku.pl/api/mcp \
33
- --header "Authorization: Bearer YOUR_KEY"
34
- ```
35
-
36
- ### Cursor and other clients with remote HTTP support
16
+ For clients that read this configuration format:
37
17
 
38
18
  ```json
39
19
  {
40
20
  "mcpServers": {
41
21
  "agentrynku": {
42
22
  "type": "http",
43
- "url": "https://agentrynku.pl/api/mcp",
44
- "headers": { "Authorization": "Bearer YOUR_KEY" }
23
+ "url": "https://agentrynku.pl/api/mcp"
45
24
  }
46
25
  }
47
26
  }
48
27
  ```
49
28
 
50
- ### Claude Desktop and other clients that only run local commands
51
-
52
- This package is a small stdio bridge to the hosted server (it uses [`mcp-remote`](https://www.npmjs.com/package/mcp-remote)):
29
+ For clients that launch a local command, this package bridges stdio to the hosted server using [mcp-remote](https://www.npmjs.com/package/mcp-remote). Requires Node 20.18.1 or newer:
53
30
 
54
31
  ```json
55
32
  {
56
33
  "mcpServers": {
57
34
  "agentrynku": {
58
35
  "command": "npx",
59
- "args": ["-y", "agentrynku-mcp"],
60
- "env": { "AGENTRYNKU_API_KEY": "YOUR_KEY" }
36
+ "args": ["-y", "agentrynku-mcp"]
61
37
  }
62
38
  }
63
39
  }
64
40
  ```
65
41
 
66
- More configs in [`examples/`](examples).
42
+ No Authorization header or environment variable is needed for public data.
43
+
44
+ ## Public tools
45
+
46
+ | Tool | What it returns | Request limit |
47
+ |---|---|---|
48
+ | `search_gpw_companies` | GPW companies by name, ticker, alias or ISIN, with canonical symbols and company URLs | 20 results |
49
+ | `get_quarterly_kpis` | Quarterly financials, reporting scope, currency, units, sources and quality gates | 20 quarters |
50
+ | `get_financial_ratios` | Quarterly margins and equity/assets, with formulas and reasons for unavailable values | 20 quarters |
51
+ | `get_public_earnings_calendar` | Known scheduled reports across GPW, with source and fetch date | 90 days, 100 events |
52
+ | `get_public_dividends` | Known issuer WZA dividend resolutions: amount per share, currency, dates and source | 100 events |
53
+
54
+ Start with: "Find KGHM and show its latest quarterly results with report sources." Then ask for the EBITDA margin or the next 30 days of scheduled GPW reports.
67
55
 
68
- **Try before signing up:** `initialize` and `tools/list` work without a key, so you can see the full catalogue first:
56
+ A direct public call:
69
57
 
70
58
  ```bash
71
- curl -s https://agentrynku.pl/api/mcp \
59
+ curl -sS https://agentrynku.pl/api/mcp \
72
60
  -H 'Content-Type: application/json' \
73
61
  -H 'Accept: application/json, text/event-stream' \
74
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
62
+ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_quarterly_kpis","arguments":{"symbol":"KGHM","quartersBack":1}}}'
75
63
  ```
76
64
 
77
- ## What is inside
65
+ Public calls are rate limited and have a response-size limit. HTTP 429 includes `Retry-After`. Coverage is incomplete: an empty calendar does not prove there are no reports, and an empty WZA response does not prove a company pays no dividend. Ratios are based on individual quarterly reports, with scope stated per row; they are not TTM or price-based valuation multiples. Financials cover issuer reports and GPW announcements; portal databases and portal-sourced fields are excluded. Public price history and vendor dividend history are not offered.
78
66
 
79
- | Area | Tools | Examples |
80
- |---|---|---|
81
- | Quotes and market | 10 | `get_spot_price`, `get_intraday_quote`, `get_price_series`, `whats_moving_now`, `sector_pulse_pl` |
82
- | Filings and reports | 10 | `get_news_history`, `get_report_event`, `get_quarterly_kpis`, `get_company_analysis`, `get_earnings_calendar` |
83
- | Scores, screens and rankings | 10 | `get_stock_rankings`, `get_sygnal_score`, `find_opportunities`, `find_dip_candidates`, `run_predictive_scan` |
84
- | Forecasts and drivers | 6 | `get_forecast`, `get_forecast_accuracy`, `get_drivers`, `get_factor_context` |
85
- | Signals, alerts and events | 19 | `get_alerts`, `get_asset_signals`, `track_priced_event`, `create_decision_rule` |
86
- | Portfolio and allocation | 15 | `get_portfolio_context`, `get_concentration_risk`, `recommend_position_size`, `modify_watchlist` |
87
- | Transactions and tax | 5 | `get_realized_pnl`, `get_transaction_history`, `find_tlh_opportunities` |
88
- | Market risk | 4 | `get_risk_regime`, `get_risk_dashboard`, `get_event_risks` |
89
- | Catalyst bonds | 3 | `get_bond_series`, `get_bond_orderbook`, `calculate_early_redemption` |
90
- | Account, brief and diagnostics | 11 | `get_daily_brief`, `query_companion`, `set_agent_prefs` |
67
+ ## Additional tools with a key
91
68
 
92
- Full list with descriptions: **[TOOLS.md](TOOLS.md)**. Portfolio tools read the portfolio you keep in your Agent Rynku account; key scopes decide which tools a key can see.
69
+ Portfolio, alerts, forecasts, quotes and other functions require an account and API key from [settings](https://agentrynku.pl/settings). Anonymous `tools/list` returns the five public tools. Keyed discovery returns the tools permitted by that key's scopes. The [full catalog](TOOLS.md) contains the available functions and identifies the public subset.
93
70
 
94
- ## Scope and limits
71
+ For HTTP, add `Authorization: Bearer YOUR_KEY`. For the stdio bridge, add:
95
72
 
96
- - **Polish equities only** (GPW main market and NewConnect), deliberately: filings are read in Polish, and extraction is built for the formats the GPW actually uses.
97
- - Tool names are English. Tool descriptions, the server's instructions, the web app and the source material (filings, reports) are Polish.
98
- - The server **does not place orders**, does not connect to a brokerage account and **does not give investment advice**. When data is missing it returns a refusal with a reason, never a substitute number.
99
- - Intraday quotes come from a delayed GPW feed (typically around 25 minutes behind).
73
+ ```json
74
+ "env": { "AGENTRYNKU_API_KEY": "YOUR_KEY" }
75
+ ```
100
76
 
101
- ## Links
77
+ The bridge validates a supplied key with one data call on startup. That check can consume an account allowance. It does not validate a key when none is supplied. Keep keys private: scopes can permit both reads and related writes.
102
78
 
103
- - Server page and full catalogue: [agentrynku.pl/mcp](https://agentrynku.pl/mcp) ([English](https://agentrynku.pl/en/mcp))
104
- - Methodology of the assessments: [agentrynku.pl/metodologia](https://agentrynku.pl/metodologia)
105
- - Issues and questions: [GitHub issues](https://github.com/krystiangw/agentrynku-mcp/issues)
79
+ Public calls without a key do not consume an account allowance. Keyed calls use 100 calls/month on FREE or 10,000 on PRO. `query_companion` also consumes an AI message. See [pricing](https://agentrynku.pl/cennik) and [account usage](https://agentrynku.pl/usage).
80
+
81
+ The server does not place orders or connect to a brokerage account. Source reports and many tool descriptions are in Polish. [English setup guide](https://agentrynku.pl/en/mcp), [Polish guide](https://agentrynku.pl/mcp), [methodology](https://agentrynku.pl/metodologia), [issues](https://github.com/krystiangw/agentrynku-mcp/issues).
106
82
 
107
83
  ## Po polsku
108
84
 
109
- **Agent Rynku** to serwer MCP z danymi Giełdy Papierów Wartościowych w Warszawie: 93 narzędzia, przez które Twój agent czyta notowania i świece śróddzienne, raporty ESPI i EBI z oceną każdego komunikatu, dane kwartalne wyciągnięte z dokumentów spółek, prognozy wyników z rozliczeniem trafności oraz analitykę portfela w złotych.
85
+ Dane GPW dla agenta bez konta i klucza: wyszukiwanie spółek, wyniki kwartalne, marże, publiczny kalendarz raportów i znane uchwały dywidendowe WZA. Podłącz klienta do `https://agentrynku.pl/api/mcp` bez nagłówka Authorization albo uruchom `npx -y agentrynku-mcp`.
86
+
87
+ Portfel, alerty, prognozy i notowania wymagają klucza. Klucz może dawać także prawa zapisu. Brak liczby nie oznacza zera, a brak znanego terminu nie oznacza braku raportu lub dywidendy. [Instrukcja i katalog](https://agentrynku.pl/mcp).
110
88
 
111
- 1. Załóż darmowe konto na [agentrynku.pl](https://agentrynku.pl/login) i wygeneruj klucz API w [ustawieniach](https://agentrynku.pl/settings).
112
- 2. Podłącz klienta pod adres `https://agentrynku.pl/api/mcp` z nagłówkiem `Authorization: Bearer TWOJ_KLUCZ` (przykłady wyżej). Klient, który umie uruchomić tylko lokalne polecenie (np. Claude Desktop), użyje tej paczki: `npx -y agentrynku-mcp` ze zmienną `AGENTRYNKU_API_KEY`.
89
+ ## Verification
113
90
 
114
- Serwer nie składa zleceń, nie łączy się z rachunkiem maklerskim i nie daje porady inwestycyjnej. Pełny katalog narzędzi po polsku: [agentrynku.pl/mcp](https://agentrynku.pl/mcp) i [TOOLS.md](TOOLS.md).
91
+ In this repository, after `npm ci`, run `npm run test:live` to check the live HTTP endpoint and the stdio bridge without a key. It reads public KGHM results and checks that a private write is rejected. To test a development endpoint: `npm run test:live -- http://localhost:3104/api/mcp`.
115
92
 
116
93
  ## License
117
94
 
118
- The bridge code and this documentation are MIT licensed. Data returned by the server is subject to the [Agent Rynku terms](https://agentrynku.pl/regulamin).
95
+ The bridge code and documentation are MIT licensed. Data returned by the server is subject to the [Agent Rynku terms](https://agentrynku.pl/regulamin).
package/TOOLS.md CHANGED
@@ -1,166 +1,151 @@
1
1
  # Tools / Narzędzia
2
2
 
3
- 93 tools, generated from `tools/list` of https://agentrynku.pl/api/mcp on 2026-09-25. Descriptions are the short Polish summaries the server returns without a key (the same as on https://agentrynku.pl/mcp). With an API key, `tools/list` returns full English descriptions with units and data caveats.
4
-
5
- ## Quotes and market / Notowania i rynek
6
-
7
- Kursy bieżące, świece dzienne i śróddzienne, ruchy sesji, puls sektorów i anomalie wolumenu na GPW.
8
-
9
- | Tool | Opis (PL) |
10
- |---|---|
11
- | `get_cross_market_peers` | Odpowiedniki spółki na drugim rynku, z korelacją i różnicą wyceny - do porównania GPW z USA. |
12
- | `get_spot_price` | Bieżąca cena jednej spółki, z informacją, czy pochodzi z zamknięcia, czy z kwotowania w trakcie sesji. |
13
- | `get_dividends` | Historia i znane przyszłe dywidendy spółki, z kwotą, datą, źródłem i świeżością. |
14
- | `get_price_series` | Świece OHLC i zmienność zrealizowana - do stop-lossów i wielkości pozycji. |
15
- | `get_intraday_candles` | Świece godzinowe z bieżącej i poprzednich sesji. |
16
- | `get_intraday_quote` | Kwotowanie w trakcie sesji: cena, otwarcie, zakres dnia, zmiana wobec zamknięcia. |
17
- | `get_market_anomalies` | Ruchy cen odstające od zwykłej zmienności spółki, wyłapane automatycznie. |
18
- | `sector_pulse_pl` | Puls sektorów GPW: które radzą sobie dziś lepiej, a które gorzej. |
19
- | `whats_moving_now` | Co się dziś rusza na rynku - największe zmiany sesji. |
20
- | `compare_symbols` | Porównanie kilku spółek obok siebie. |
21
-
22
- ## Filings and reports / Raporty i komunikaty spółek
23
-
24
- Raporty ESPI i EBI, dane kwartalne wyciągnięte z dokumentów, kalendarz publikacji, konferencje wynikowe i walne zgromadzenia.
25
-
26
- | Tool | Opis (PL) |
27
- |---|---|
28
- | `get_company_analysis` | Analiza fundamentalna spółki przygotowana przez model. |
29
- | `get_company_dossier` | Źródłowa pamięć decyzyjna: trwałe przewagi, słabości, otwarte ryzyka, potwierdzone wzorce i kontekst biznesowy. |
30
- | `get_report_event` | Jeden raport kwartalny jako zdarzenie: co mówi, co rozliczył, co zmienił, co zostaje otwarte, z wiekiem i źródłem każdej liczby. |
31
- | `get_conference_reminders` | Nadchodzące konferencje wynikowe spółek, które śledzisz. |
32
- | `get_quarterly_kpis` | Wyniki kwartalne spółki: przychód, zysk, bilans i przepływy, wraz z oceną jakości każdego wiersza. |
33
- | `get_conference_summary` | Streszczenie konferencji wynikowej: cytaty zarządu, prognozy i sygnały ostrzegawcze. |
34
- | `get_earnings_deepdive` | Pogłębione omówienie raportu kwartalnego: co zaskoczyło, co niepokoi, co zapowiedział zarząd. |
35
- | `get_wza_summary` | Streszczenie walnego zgromadzenia akcjonariuszy. |
36
- | `get_news_history` | Historia depesz o spółce razem z ich oceną. |
37
- | `get_earnings_calendar` | Kalendarz zbliżających się raportów okresowych. |
38
-
39
- ## Scores, screens and rankings / Oceny i rankingi
40
-
41
- Ocena Agenta Rynku na sześciu wymiarach, rankingi całego rynku i skanery szukające konkretnych układów.
42
-
43
- | Tool | Opis (PL) |
44
- |---|---|
45
- | `get_sygnal_score` | Ocena 0-100 dla spółki z GPW: siedem wymiarów z uzasadnieniem każdego. Do samej oceny wchodzą tylko wymiary z dowodem, najwyżej sześć: płynność pokazujemy osobno i nie punktujemy. |
46
- | `get_top_opportunities` | Ta sama lista spółek spoza portfela co w kafelku Top okazje na pulpicie. |
47
- | `find_opportunities` | Wyszukiwanie okazji według zadanych kryteriów. |
48
- | `find_dip_candidates` | Spółki, które mocno spadły, ale fundamenty trzymają. |
49
- | `find_overheat_candidates` | Spółki, które urosły szybciej, niż uzasadniają to wyniki. |
50
- | `run_predictive_scan` | Skan spółek pod kątem zbliżających się raportów i przewidywanego zaskoczenia. |
51
- | `get_ranking_performance` | Jak ranking sprawdzał się w przeszłości. |
52
- | `get_stock_rankings` | Ranking spółek GPW według wybranego kryterium. |
53
- | `rank_revenue_growth` | Ranking wzrostu przychodów. |
54
- | `rank_thematic` | Ranking spółek w obrębie wybranego motywu inwestycyjnego. |
55
-
56
- ## Forecasts and drivers / Prognozy wyników
57
-
58
- Prognozy przychodu i zysku na następny kwartał wraz z ich rozliczeniem po publikacji raportu oraz drivery makro.
59
-
60
- | Tool | Opis (PL) |
61
- |---|---|
62
- | `get_forecast` | Prognoza wyników spółki na najbliższe kwartały wraz z wyceną modelową. |
63
- | `get_forecast_accuracy` | Historyczna celność modeli prognostycznych i to, czy model przeszedł bramkę jakości. |
64
- | `get_drivers` | Bieżące czynniki makro: surowce, waluty, stopy, nastroje na rynku amerykańskim. |
65
- | `macro_attribution` | Co najprawdopodobniej stało za ostatnim ruchem WIG20. |
66
- | `get_evaluation_outcomes` | Rozliczenie dawnych alertów po cenach: co się sprawdziło, a co nie, na tle indeksu. |
67
- | `get_factor_context` | Deterministyczny kontekst jednej zmiany czynnika dla spółki, zakotwiczony w chwili asKnownAt. |
68
-
69
- ## Portfolio and allocation / Portfel i alokacja
70
-
71
- Pozycje z wielu rachunków, stopa zwrotu, zmienność, koncentracja i rozjazd wobec docelowych wag.
72
-
73
- | Tool | Opis (PL) |
74
- |---|---|
75
- | `get_portfolio_context` | Pełny obraz portfela użytkownika: pozycje, gotówka, watchlista i cele alokacji. |
76
- | `get_portfolio_analytics` | Krzywa kapitału portfela dzień po dniu, ze stopą zwrotu, obsunięciem, zmiennością i porównaniem z WIG-iem lub S&P 500. |
77
- | `get_total_portfolio_view` | Portfel zsumowany ze wszystkich rachunków maklerskich, przeliczony na jedną walutę. |
78
- | `get_portfolio_value_history` | Historia wartości portfela w czasie. |
79
- | `recommend_position_size` | Podpowiedź wielkości pozycji na podstawie relacji zysku do ryzyka, zmienności i koncentracji portfela. |
80
- | `compare_portfolio_risk_reward` | Ranking pozycji i watchlisty według relacji zysku do ryzyka. |
81
- | `analyze_thesis_exposure` | Rozkład portfela na ogniwa łańcucha wartości AI - gdzie masz ekspozycję, a gdzie dziurę. |
82
- | `submit_portfolio_snapshot` | Wgranie stanu rachunku z zewnętrznego brokera. |
83
- | `get_portfolio_stats` | Statystyki ryzyka i wyniku portfela liczone z historii transakcji. |
84
- | `recommend_diversification` | Propozycje dywersyfikacji tam, gdzie portfel jest skupiony. |
85
- | `suggest_order_size` | Wielkość zlecenia z uwzględnieniem dostępnej gotówki na konkretnym rachunku. |
86
- | `get_concentration_risk` | Ile portfela stoi na jednej spółce, sektorze i rynku. |
87
- | `modify_holdings` | Ręczna zmiana pozycji w portfelu. |
88
- | `set_cash_balance` | Ustawienie salda gotówki na rachunku. |
89
- | `modify_watchlist` | Dodanie lub usunięcie spółki z watchlisty. |
90
-
91
- ## Transactions and tax / Transakcje i podatki
92
-
93
- Historia realizacji, zysk zrealizowany, jakość egzekucji wobec VWAP i wyszukiwanie strat do rozliczenia podatkowego.
94
-
95
- | Tool | Opis (PL) |
96
- |---|---|
97
- | `submit_broker_transactions` | Wgranie historii transakcji do rozliczeń i podatków. |
98
- | `get_realized_pnl` | Zrealizowany wynik od początku roku i okazje do rozliczenia strat podatkowych. |
99
- | `get_transaction_history` | Historia transakcji użytkownika, od najnowszej. |
100
- | `analyze_trade_outcome` | Rozliczenie pojedynczej transakcji: co wyszło, a co nie. |
101
- | `find_tlh_opportunities` | Pozycje ze stratą, którą da się odliczyć od podatku w tym roku. |
102
-
103
- ## Signals, alerts and events / Sygnały, alerty i zdarzenia
104
-
105
- Sygnały na spółkach z rozliczeniem trafności, alerty, zdarzenia wyceniane przez rynek i własne reguły decyzyjne.
106
-
107
- | Tool | Opis (PL) |
108
- |---|---|
109
- | `get_alerts` | Alerty dostarczone temu użytkownikowi, z filtrami po spółce i klasyfikacji. |
110
- | `list_webhook_events` | Zdarzenia z webhooka - do sprawdzenia, czy TradingView dochodzi do Agenta Rynku. |
111
- | `get_asset_signals` | Szanse i ryzyka wykryte automatycznie dla spółki, każde z podpiętym dowodem w danych. |
112
- | `get_signal_prediction_performance` | Celność liczbowych przewidywań ruchu ceny: trafienia, kierunek, średni błąd. |
113
- | `submit_alert_feedback` | Ocena alertu - ten sam sygnał, co kciuki w Telegramie. |
114
- | `get_alert_delivery_stats` | Statystyki dostarczania alertów: ile poszło, ile się nie udało. |
115
- | `get_my_alert_performance` | Skuteczność alertów, które dostałeś: ile się sprawdziło. |
116
- | `track_priced_event` | Zapisanie zdarzenia, którego wpływ na cenę chcesz rozliczyć później. |
117
- | `get_priced_events` | Lista śledzonych zdarzeń wycenionych. |
118
- | `historical_event_hit_rate` | Jak podobne zdarzenia wpływały na cenę w przeszłości. |
119
- | `cancel_priced_event` | Odwołanie śledzonego zdarzenia. |
120
- | `update_priced_event` | Zmiana szczegółów śledzonego zdarzenia. |
121
- | `create_decision_rule` | Utworzenie reguły decyzyjnej, która ma pilnować warunku za Ciebie. |
122
- | `list_decision_rules` | Lista Twoich reguł decyzyjnych. |
123
- | `update_decision_rule` | Zmiana reguły decyzyjnej. |
124
- | `delete_decision_rule` | Usunięcie reguły decyzyjnej. |
125
- | `list_decision_rule_proposals` | Propozycje reguł decyzyjnych wynikające z Twojego zachowania. |
126
- | `get_activity_feed` | Ostatnie zdarzenia na Twoim koncie. |
127
- | `resolve_priced_event_now` | Natychmiastowe rozliczenie zdarzenia po bieżącej cenie. |
128
-
129
- ## Market risk / Ryzyko rynkowe
130
-
131
- Reżim rynkowy, tematy ryzyka i zdarzenia mogące uderzyć w portfel.
132
-
133
- | Tool | Opis (PL) |
134
- |---|---|
135
- | `get_risk_regime` | Reżim ryzyka na rynku: spokojny, podwyższony czy kryzysowy. |
136
- | `get_risk_themes` | Motywy ryzyka aktywne w tej chwili. |
137
- | `get_risk_dashboard` | Zbiorczy obraz ryzyka rynkowego: reżim i aktywne motywy razem. |
138
- | `get_event_risks` | Kalendarz zdarzeń makro, które mogą poruszyć rynkiem. |
139
-
140
- ## Catalyst bonds / Obligacje Catalyst
141
-
142
- Serie obligacji, arkusz zleceń i kalkulator wcześniejszego wykupu.
143
-
144
- | Tool | Opis (PL) |
145
- |---|---|
146
- | `get_bond_series` | Wyszukiwanie serii obligacji z Catalyst po emitencie, marży i terminie wykupu. |
147
- | `calculate_early_redemption` | Rachunek opłacalności wcześniejszego wykupu obligacji. |
148
- | `get_bond_orderbook` | Arkusz zleceń dla obligacji - na razie niedostępny, zwraca informację o odroczeniu. |
149
-
150
- ## Account, brief and diagnostics / Konto, odprawa i diagnostyka
151
-
152
- Dzienna odprawa rynkowa, rozmowa z asystentem, ustawienia agenta oraz stan potoku danych.
153
-
154
- | Tool | Opis (PL) |
155
- |---|---|
156
- | `get_daily_brief` | Odprawa na dziś: co się zmieniło w Twoim portfelu i na watchliście. |
157
- | `query_companion` | Zapytanie do asystenta Agenta Rynku w języku naturalnym. |
158
- | `submit_feature_request` | Zgłoszenie błędu, pomysłu albo brakujących danych do zespołu Agenta Rynku. |
159
- | `claim_feature_request` | Wzięcie zgłoszenia do pracy albo oddanie go do kolejki. |
160
- | `modify_chat_settings` | Ustawienia powiadomień: próg istotności, kanały, wyciszone klasy alertów. |
161
- | `get_pipeline_health` | Stan potoków danych: świeżość źródeł, opóźnienia, awarie. |
162
- | `set_agent_prefs` | Ustawienia zachowania agenta. |
163
- | `modify_profile` | Zmiana profilu inwestora. |
164
- | `list_feature_requests` | Lista zgłoszeń i ich stan. |
165
- | `get_codex_pipeline_stats` | Statystyki potoku ekstrakcji danych ze sprawozdań. |
166
- | `get_outcome_settlement_health` | Stan rozliczania wyników alertów i prognoz. |
3
+ 98 tools from the server registry on 2026-10-04. Short Polish summaries are shown below. Anonymous discovery returns only these public tools: `get_quarterly_kpis`, `search_gpw_companies`, `get_public_earnings_calendar`, `get_financial_ratios`, `get_public_dividends`. Additional tools require a key and are filtered by its scopes. Some descriptions and source reports are in Polish.
4
+
5
+ ## Notowania i rynek
6
+
7
+ | Tool | Access | Opis (PL) |
8
+ |---|---|---|
9
+ | `compare_symbols` | API key | Porównanie kilku spółek obok siebie. |
10
+ | `get_cross_market_peers` | API key | Odpowiedniki spółki na drugim rynku, z korelacją i różnicą wyceny - do porównania GPW z USA. |
11
+ | `get_dividends` | API key | Historia i znane przyszłe dywidendy spółki, z kwotą, datą, źródłem i świeżością. |
12
+ | `get_intraday_candles` | API key | Świece godzinowe z bieżącej i poprzednich sesji. |
13
+ | `get_intraday_quote` | API key | Kwotowanie w trakcie sesji: cena, otwarcie, zakres dnia, zmiana wobec zamknięcia. |
14
+ | `get_market_anomalies` | API key | Ruchy cen odstające od zwykłej zmienności spółki, wyłapane automatycznie. |
15
+ | `get_price_series` | API key | Świece OHLC i zmienność zrealizowana - do stop-lossów i wielkości pozycji. |
16
+ | `get_spot_price` | API key | Bieżąca cena jednej spółki, z informacją, czy pochodzi z zamknięcia, czy z kwotowania w trakcie sesji. |
17
+ | `search_gpw_companies` | Public | Wyszukiwanie spółek GPW po nazwie, tickerze, aliasie lub ISIN, bez konta i klucza. |
18
+ | `sector_pulse_pl` | API key | Puls sektorów GPW: które radzą sobie dziś lepiej, a które gorzej. |
19
+ | `whats_moving_now` | API key | Co się dziś rusza na rynku - największe zmiany sesji. |
20
+
21
+ ## Raporty i komunikaty spółek
22
+
23
+ | Tool | Access | Opis (PL) |
24
+ |---|---|---|
25
+ | `get_company_analysis` | API key | Podgląd analizy fundamentalnej spółki. Pełna treść jest dostępna w PRO. |
26
+ | `get_company_dossier` | API key | Źródłowa pamięć decyzyjna: trwałe przewagi, słabości, otwarte ryzyka, potwierdzone wzorce i kontekst biznesowy. |
27
+ | `get_conference_reminders` | API key | Nadchodzące konferencje wynikowe spółek, które śledzisz. |
28
+ | `get_conference_summary` | API key | Streszczenie konferencji wynikowej: cytaty zarządu, prognozy i sygnały ostrzegawcze. |
29
+ | `get_earnings_calendar` | API key | Kalendarz zbliżających się raportów okresowych. |
30
+ | `get_earnings_deepdive` | API key | Pogłębione omówienie raportu kwartalnego: co zaskoczyło, co niepokoi, co zapowiedział zarząd. |
31
+ | `get_financial_ratios` | Public | Marże kwartalne i udział kapitału w aktywach, z formułą, okresem raportu i powodami braku wskaźnika. |
32
+ | `get_news_history` | API key | Historia depesz o spółce razem z ich oceną. |
33
+ | `get_public_dividends` | Public | Znane uchwały dywidendowe GPW z komunikatów WZA, z kwotą na akcję, walutą, terminami i źródłem. |
34
+ | `get_public_earnings_calendar` | Public | Publiczny kalendarz zapowiedzianych raportów GPW na najbliższe 90 dni, ze źródłem i datą pobrania. |
35
+ | `get_quarterly_kpis` | Public | Wyniki kwartalne spółki: przychód, zysk, bilans i przepływy, wraz z oceną jakości każdego wiersza. |
36
+ | `get_report_event` | API key | Jeden raport kwartalny jako zdarzenie: co mówi, co rozliczył, co zmienił, co zostaje otwarte, z wiekiem i źródłem każdej liczby. |
37
+ | `get_wza_summary` | API key | Streszczenie walnego zgromadzenia akcjonariuszy. |
38
+
39
+ ## Oceny i rankingi
40
+
41
+ | Tool | Access | Opis (PL) |
42
+ |---|---|---|
43
+ | `find_dip_candidates` | API key | Spółki, które mocno spadły, ale fundamenty trzymają. |
44
+ | `find_opportunities` | API key | Wyszukiwanie okazji według zadanych kryteriów. |
45
+ | `find_overheat_candidates` | API key | Spółki, które urosły szybciej, niż uzasadniają to wyniki. |
46
+ | `get_ranking_performance` | API key | Jak ranking sprawdzał się w przeszłości. |
47
+ | `get_stock_rankings` | API key | Ranking spółek GPW według wybranego kryterium. |
48
+ | `get_sygnal_score` | API key | Ocena spółki z GPW. Dokładny wynik 0-100, wymiary i uzasadnienie są dostępne w PRO. Do oceny wchodzą tylko wymiary z dowodem, najwyżej sześć: Płynność pokazujemy osobno i nie punktujemy. |
49
+ | `get_top_opportunities` | API key | Ta sama lista spółek spoza portfela co w kafelku Top okazje na pulpicie. |
50
+ | `rank_revenue_growth` | API key | Ranking wzrostu przychodów. |
51
+ | `rank_thematic` | API key | Ranking spółek w obrębie wybranego motywu inwestycyjnego. |
52
+ | `run_predictive_scan` | API key | Skan spółek pod kątem zbliżających się raportów i przewidywanego zaskoczenia. |
53
+ | `screen_stocks` | API key | Przesiew spółek GPW po kapitalizacji, dynamice EBITDA lub przychodów r/r, powiadomieniach insiderów o nabyciu i wybiciu z maksimum na wolumenie; osobno spółki, których nie dało się ocenić. |
54
+
55
+ ## Prognozy wyników
56
+
57
+ | Tool | Access | Opis (PL) |
58
+ |---|---|---|
59
+ | `get_drivers` | API key | Bieżące czynniki makro: surowce, waluty, stopy, nastroje na rynku amerykańskim. |
60
+ | `get_evaluation_outcomes` | API key | Rozliczenie dawnych alertów po cenach: co się sprawdziło, a co nie, na tle indeksu. |
61
+ | `get_factor_context` | API key | Zmiana wybranego czynnika makro dla spółki z udokumentowanym źródłem i ekspozycją. |
62
+ | `get_forecast` | API key | Prognoza wyników spółki na najbliższe kwartały. Wycena modelowa jest dostępna w PRO. |
63
+ | `get_forecast_accuracy` | API key | Historyczna celność modeli prognostycznych i to, czy model przeszedł bramkę jakości. |
64
+ | `macro_attribution` | API key | Co najprawdopodobniej stało za ostatnim ruchem WIG20. |
65
+
66
+ ## Portfel i alokacja
67
+
68
+ | Tool | Access | Opis (PL) |
69
+ |---|---|---|
70
+ | `analyze_thesis_exposure` | API key | Rozkład portfela na ogniwa łańcucha wartości AI - gdzie masz ekspozycję, a gdzie dziurę. |
71
+ | `compare_portfolio_risk_reward` | API key | Ranking pozycji i watchlisty według relacji zysku do ryzyka. |
72
+ | `get_concentration_risk` | API key | Ile portfela stoi na jednej spółce, sektorze i rynku. |
73
+ | `get_portfolio_analytics` | API key | Krzywa kapitału portfela dzień po dniu, ze stopą zwrotu, obsunięciem, zmiennością i porównaniem z WIG-iem lub S&P 500. |
74
+ | `get_portfolio_context` | API key | Obraz portfela użytkownika: pozycje, gotówka, watchlista z oceną analityka i powodem obserwacji, cele alokacji. Analiza i wycena wymagają PRO. |
75
+ | `get_portfolio_stats` | API key | Statystyki ryzyka i wyniku portfela liczone z historii transakcji. |
76
+ | `get_portfolio_value_history` | API key | Historia wartości portfela w czasie. |
77
+ | `get_total_portfolio_view` | API key | Portfel zsumowany ze wszystkich rachunków maklerskich, przeliczony na jedną walutę. |
78
+ | `modify_holdings` | API key | Ręczna zmiana pozycji w portfelu. |
79
+ | `modify_watchlist` | API key | Dodanie lub usunięcie spółki z watchlisty. |
80
+ | `recommend_diversification` | API key | Propozycje dywersyfikacji tam, gdzie portfel jest skupiony. |
81
+ | `recommend_position_size` | API key | Podpowiedź wielkości pozycji z uwzględnieniem zmienności i koncentracji portfela. Wycena wymaga PRO. |
82
+ | `set_cash_balance` | API key | Ustawienie salda gotówki na rachunku. |
83
+ | `submit_portfolio_snapshot` | API key | Wgranie stanu rachunku z zewnętrznego brokera. |
84
+ | `suggest_order_size` | API key | Wielkość zlecenia z uwzględnieniem dostępnej gotówki na konkretnym rachunku. |
85
+
86
+ ## Transakcje i podatki
87
+
88
+ | Tool | Access | Opis (PL) |
89
+ |---|---|---|
90
+ | `analyze_trade_outcome` | API key | Rozliczenie pojedynczej transakcji: co wyszło, a co nie. |
91
+ | `find_tlh_opportunities` | API key | Pozycje ze stratą, którą da się odliczyć od podatku w tym roku. |
92
+ | `get_realized_pnl` | API key | Zrealizowany wynik od początku roku i okazje do rozliczenia strat podatkowych. |
93
+ | `get_transaction_history` | API key | Historia transakcji użytkownika, od najnowszej. |
94
+ | `submit_broker_transactions` | API key | Wgranie historii transakcji do rozliczeń i podatków. |
95
+
96
+ ## Sygnały, alerty i zdarzenia
97
+
98
+ | Tool | Access | Opis (PL) |
99
+ |---|---|---|
100
+ | `cancel_priced_event` | API key | Odwołanie śledzonego zdarzenia. |
101
+ | `create_decision_rule` | API key | Utworzenie reguły decyzyjnej, która ma pilnować warunku za Ciebie. |
102
+ | `delete_decision_rule` | API key | Usunięcie reguły decyzyjnej. |
103
+ | `get_activity_feed` | API key | Ostatnie zdarzenia na Twoim koncie. |
104
+ | `get_alert_delivery_stats` | API key | Statystyki dostarczania alertów: ile poszło, ile się nie udało. |
105
+ | `get_alerts` | API key | Alerty dostarczone temu użytkownikowi, z filtrami po spółce i klasyfikacji. |
106
+ | `get_asset_signals` | API key | Szanse i ryzyka wykryte automatycznie dla spółki, każde z podpiętym dowodem w danych. |
107
+ | `get_my_alert_performance` | API key | Skuteczność alertów, które dostałeś: ile się sprawdziło. |
108
+ | `get_priced_events` | API key | Lista śledzonych zdarzeń wycenionych. |
109
+ | `get_signal_prediction_performance` | API key | Celność liczbowych przewidywań ruchu ceny: trafienia, kierunek, średni błąd. |
110
+ | `historical_event_hit_rate` | API key | Jak podobne zdarzenia wpływały na cenę w przeszłości. |
111
+ | `list_decision_rule_proposals` | API key | Propozycje reguł decyzyjnych wynikające z Twojego zachowania. |
112
+ | `list_decision_rules` | API key | Lista Twoich reguł decyzyjnych. |
113
+ | `list_webhook_events` | API key | Zdarzenia z webhooka - do sprawdzenia, czy TradingView dochodzi do Agenta Rynku. |
114
+ | `resolve_priced_event_now` | API key | Natychmiastowe rozliczenie zdarzenia po bieżącej cenie. |
115
+ | `submit_alert_feedback` | API key | Ocena alertu - ten sam sygnał, co kciuki w Telegramie. |
116
+ | `track_priced_event` | API key | Zapisanie zdarzenia, którego wpływ na cenę chcesz rozliczyć później. |
117
+ | `update_decision_rule` | API key | Zmiana reguły decyzyjnej. |
118
+ | `update_priced_event` | API key | Zmiana szczegółów śledzonego zdarzenia. |
119
+
120
+ ## Ryzyko rynkowe
121
+
122
+ | Tool | Access | Opis (PL) |
123
+ |---|---|---|
124
+ | `get_event_risks` | API key | Kalendarz zdarzeń makro, które mogą poruszyć rynkiem. |
125
+ | `get_risk_dashboard` | API key | Zbiorczy obraz ryzyka rynkowego: jego poziom i aktywne motywy razem. |
126
+ | `get_risk_regime` | API key | Ryzyko rynkowe: spokój, lekka nerwowość, silna nerwowość czy kryzys. |
127
+ | `get_risk_themes` | API key | Motywy ryzyka aktywne w tej chwili. |
128
+
129
+ ## Obligacje Catalyst
130
+
131
+ | Tool | Access | Opis (PL) |
132
+ |---|---|---|
133
+ | `calculate_early_redemption` | API key | Rachunek opłacalności wcześniejszego wykupu obligacji. |
134
+ | `get_bond_orderbook` | API key | Arkusz zleceń dla obligacji - na razie niedostępny, zwraca informację o odroczeniu. |
135
+ | `get_bond_series` | API key | Wyszukiwanie serii obligacji z Catalyst po emitencie, marży i terminie wykupu. |
136
+
137
+ ## Konto, odprawa i diagnostyka
138
+
139
+ | Tool | Access | Opis (PL) |
140
+ |---|---|---|
141
+ | `claim_feature_request` | API key | Wzięcie zgłoszenia do pracy albo oddanie go do kolejki. |
142
+ | `get_codex_pipeline_stats` | API key | Statystyki potoku ekstrakcji danych ze sprawozdań. |
143
+ | `get_daily_brief` | API key | Odprawa na dziś: co się zmieniło w Twoim portfelu i na watchliście. |
144
+ | `get_outcome_settlement_health` | API key | Stan rozliczania wyników alertów i prognoz. |
145
+ | `get_pipeline_health` | API key | Stan potoków danych: świeżość źródeł, opóźnienia, awarie. |
146
+ | `list_feature_requests` | API key | Lista zgłoszeń i ich stan. |
147
+ | `modify_chat_settings` | API key | Ustawienia powiadomień: próg istotności, kanały, wyciszone klasy alertów. |
148
+ | `modify_profile` | API key | Zmiana profilu inwestora. |
149
+ | `query_companion` | API key | Zapytanie do asystenta Agenta Rynku w języku naturalnym. |
150
+ | `set_agent_prefs` | API key | Ustawienia zachowania agenta. |
151
+ | `submit_feature_request` | API key | Zgłoszenie błędu, pomysłu albo brakujących danych do zespołu Agenta Rynku. |
@@ -6,6 +6,7 @@
6
6
  "use strict";
7
7
 
8
8
  const { spawn } = require("node:child_process");
9
+ const { createInterface } = require("node:readline");
9
10
 
10
11
  const URL = process.env.AGENTRYNKU_MCP_URL || "https://agentrynku.pl/api/mcp";
11
12
  const key = (process.env.AGENTRYNKU_API_KEY || "").trim();
@@ -16,9 +17,13 @@ function fail(message) {
16
17
  process.exit(1);
17
18
  }
18
19
 
19
- if (!key) {
20
- fail("set AGENTRYNKU_API_KEY. Create a key after signing in: https://agentrynku.pl/settings");
21
- }
20
+ const PUBLIC_TOOLS = new Set([
21
+ "search_gpw_companies", "get_quarterly_kpis", "get_financial_ratios",
22
+ "get_public_earnings_calendar", "get_public_dividends",
23
+ ]);
24
+ const endpoint = new global.URL(URL);
25
+ if (endpoint.protocol !== "https:" && !(endpoint.protocol === "http:" && ["localhost", "127.0.0.1", "[::1]"].includes(endpoint.hostname))) fail("use HTTPS, or HTTP on localhost for development");
26
+ if (/[\r\n]/.test(key)) fail("the API key contains an invalid line break");
22
27
 
23
28
  // initialize and tools/list answer without a valid key, so a wrong key would
24
29
  // only show up at the first tool call, where a 401 sends mcp-remote into an
@@ -49,16 +54,35 @@ async function checkKey() {
49
54
  }
50
55
 
51
56
  async function main() {
52
- await checkKey();
57
+ if (key) await checkKey();
53
58
  const proxy = require.resolve("mcp-remote/dist/proxy.js");
54
59
  // The key stays out of the process arguments: mcp-remote expands
55
60
  // ${AGENTRYNKU_API_KEY} from the environment the child inherits.
56
61
  const child = spawn(
57
62
  process.execPath,
58
- [proxy, URL, "--transport", "http-only", "--header", "Authorization:Bearer ${AGENTRYNKU_API_KEY}"],
59
- { stdio: "inherit", env: { ...process.env, AGENTRYNKU_API_KEY: key } },
63
+ [proxy, URL, "--transport", "http-only", ...(key ? ["--header", "Authorization:Bearer ${AGENTRYNKU_API_KEY}"] : [])],
64
+ { stdio: ["pipe", "pipe", "inherit"], env: { ...process.env, AGENTRYNKU_API_KEY: key } },
60
65
  );
61
66
 
67
+ createInterface({ input: child.stdout }).on("line", (line) => process.stdout.write(line + "\n"));
68
+ child.stdin.on("error", () => {});
69
+ const input = createInterface({ input: process.stdin });
70
+ input.on("line", (line) => {
71
+ let request;
72
+ try { request = JSON.parse(line); } catch { child.stdin.write(line + "\n"); return; }
73
+ // A stale client catalog must not turn a missing API key into an OAuth browser flow.
74
+ const allowed = request && (request.method === "initialize" || request.method === "tools/list" || request.method === "ping" ||
75
+ (typeof request.method === "string" && request.method.startsWith("notifications/")) || (request.method === "tools/call" && PUBLIC_TOOLS.has(request.params?.name)));
76
+ if (!key && !allowed) {
77
+ if (request?.id !== undefined) process.stdout.write(JSON.stringify({ jsonrpc: "2.0", id: request.id, error: {
78
+ code: -32001, message: "This function requires an API key. Set AGENTRYNKU_API_KEY from https://agentrynku.pl/settings, then restart the bridge.",
79
+ } }) + "\n");
80
+ return;
81
+ }
82
+ child.stdin.write(line + "\n");
83
+ });
84
+ input.on("close", () => child.stdin.end());
85
+
62
86
  for (const sig of ["SIGINT", "SIGTERM"]) process.on(sig, () => child.kill(sig));
63
87
  child.on("exit", (code, signal) => {
64
88
  if (signal) {
@@ -1,4 +1,3 @@
1
1
  #!/usr/bin/env bash
2
- # Adds the hosted Agent Rynku MCP server to Claude Code.
3
- claude mcp add --transport http agentrynku https://agentrynku.pl/api/mcp \
4
- --header "Authorization: Bearer ${AGENTRYNKU_API_KEY:?set AGENTRYNKU_API_KEY}"
2
+ # Connects to public GPW data without a key.
3
+ claude mcp add --transport http agentrynku https://agentrynku.pl/api/mcp
@@ -2,8 +2,10 @@
2
2
  "mcpServers": {
3
3
  "agentrynku": {
4
4
  "command": "npx",
5
- "args": ["-y", "agentrynku-mcp"],
6
- "env": { "AGENTRYNKU_API_KEY": "YOUR_KEY" }
5
+ "args": [
6
+ "-y",
7
+ "agentrynku-mcp"
8
+ ]
7
9
  }
8
10
  }
9
11
  }
@@ -2,8 +2,7 @@
2
2
  "mcpServers": {
3
3
  "agentrynku": {
4
4
  "type": "http",
5
- "url": "https://agentrynku.pl/api/mcp",
6
- "headers": { "Authorization": "Bearer YOUR_KEY" }
5
+ "url": "https://agentrynku.pl/api/mcp"
7
6
  }
8
7
  }
9
8
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agentrynku-mcp",
3
- "version": "1.0.0",
4
- "description": "MCP server for the Warsaw Stock Exchange (GPW): quotes, ESPI/EBI filings with assessments, quarterly KPIs, forecasts and portfolio tools. Stdio bridge to the hosted Agent Rynku server.",
3
+ "version": "1.1.0",
4
+ "description": "GPW MCP data without an account: quarterly financials, ratios, company search, earnings calendar and WZA dividends. Optional API key for additional tools. Stdio bridge to Agent Rynku.",
5
5
  "mcpName": "pl.agentrynku/gpw",
6
6
  "bin": {
7
7
  "agentrynku-mcp": "bin/agentrynku-mcp.js"
@@ -40,5 +40,11 @@
40
40
  "url": "https://github.com/krystiangw/agentrynku-mcp/issues"
41
41
  },
42
42
  "author": "Agent Rynku (https://agentrynku.pl)",
43
- "license": "MIT"
43
+ "license": "MIT",
44
+ "devDependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.32.0"
46
+ },
47
+ "scripts": {
48
+ "test:live": "node test/live-smoke.mjs"
49
+ }
44
50
  }