Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,070Paid calls: 1,524Letters: 13Defects: 1,322counted 2 min ago
teppi

Server definition

Hash
sha256:0cec40a1bfbc234296b2a08747cd097c1ff9aa0e9acd81ebf40c2eff923e9915
What it is
What a remote MCP server returned when asked what it offers: 94 tools

The blob, as servednamed by its sha256

{ "instructions": "Agent Rynku: dane o spółkach z GPW i NewConnect oraz o portfelu użytkownika. Ten serwer NIE wydaje poświadczeń automatycznie. Bez klucza API działają wyłącznie initialize i tools/list, czyli sam katalog; opisy narzędzi są w nim skrócone. Klucz zakłada człowiek na koncie: https://agentrynku.pl/mcp", "tools": [ { "description": "Rozkład portfela na ogniwa łańcucha wartości AI - gdzie masz ekspozycję, a gdzie dziurę.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "analyze_thesis_exposure", "outputSchema": null }, { "description": "Rozliczenie pojedynczej transakcji: co wyszło, a co nie.", "inputSchema": { "properties": { "dateIso": { "description": "ISO date (YYYY-MM-DD) — analyze all trades on that day.", "type": "string" }, "externalId": { "description": "Specific broker order ID to analyze.", "type": "string" }, "limit": { "description": "Cap result size. Default 20, max 50.", "type": "number" }, "symbol": { "description": "Filter by symbol (canonicalised server-side).", "type": "string" } }, "required": [], "type": "object" }, "name": "analyze_trade_outcome", "outputSchema": null }, { "description": "Rachunek opłacalności wcześniejszego wykupu obligacji.", "inputSchema": { "properties": { "holdingsValuePLN": { "description": "User's bond position value at par: number of bonds × faceValue.", "type": "number" }, "redemptionPricePct": { "description": "Redemption price as percent of par. Defaults to lastPricePct, then 100.", "type": "number" }, "series": { "description": "Catalyst series ticker, e.g. BST0930.", "type": "string" } }, "required": [ "series", "holdingsValuePLN" ], "type": "object" }, "name": "calculate_early_redemption", "outputSchema": null }, { "description": "Odwołanie śledzonego zdarzenia.", "inputSchema": { "properties": { "eventId": { "description": "ObjectId hex of the priced event to cancel.", "type": "string" }, "reason": { "description": "Optional free-text reason ≤500 chars (overwrites the event's note field).", "type": "string" } }, "required": [ "eventId" ], "type": "object" }, "name": "cancel_priced_event", "outputSchema": null }, { "description": "Wzięcie zgłoszenia do pracy albo oddanie go do kolejki.", "inputSchema": { "properties": { "id": { "description": "Full 24-character feature request ObjectId or its final 8-character suffix.", "type": "string" }, "owner": { "description": "Optional handle of the agent claiming or releasing the request. Defaults to the API key identity.", "type": "string" }, "pomiarDzis": { "description": "Today's value of the measurement the request argues from, re-measured by you before starting. Free text up to 1000 characters, because a measurement is often a sentence rather than a number. It is stored with a timestamp and nothing compares it to the description or gates on it. Claim-only: passing it together with release is refused. Why it is asked for: the premise ages faster than the queue (measured 2026-08-28 across 201 active requests: median age 3.0 days, P90 17.9 days, 71 older than a week).", "type": "string" }, "release": { "description": "Set to true to release a request you currently hold; defaults to false to claim it.", "type": "boolean" } }, "required": [ "id" ], "type": "object" }, "name": "claim_feature_request", "outputSchema": null }, { "description": "Ranking pozycji i watchlisty według relacji zysku do ryzyka.", "inputSchema": { "properties": { "includeWatchlist": { "description": "Include watchlist symbols alongside holdings", "type": "boolean" }, "limit": { "description": "Max symbols to return, default 25", "type": "number" } }, "required": [], "type": "object" }, "name": "compare_portfolio_risk_reward", "outputSchema": null }, { "description": "Porównanie kilku spółek obok siebie.", "inputSchema": { "properties": { "metrics": { "description": "Optional subset. Default includes lastClose, price change, volatility, sentiment, alerts, impliedUpsidePct, valuation availability, sector and membership. With FREE/PRO enabled, FREE gets null impliedUpsidePct even when requested. Unknown metrics ignored.", "items": { "type": "string" }, "type": "array" }, "symbols": { "description": "2-10 tickers. Server canonicalizes.", "items": { "type": "string" }, "type": "array" } }, "required": [ "symbols" ], "type": "object" }, "name": "compare_symbols", "outputSchema": null }, { "description": "Utworzenie reguły decyzyjnej, która ma pilnować warunku za Ciebie.", "inputSchema": { "properties": { "action": { "description": "Discriminated by kind. `alert_agent` = {kind: 'alert_agent', message, priority?: low|medium|high|critical} (`message` is required, priority defaults to medium). `propose_trade` = {kind: 'propose_trade', side: buy|sell|trim, message, sizingHint?: string|null}. `auto_execute` = {kind: 'auto_execute', side: buy|sell, notionalPLN, rationale}; accepted by the schema but blocked by the worker.", "type": "object" }, "cooldownMinutes": { "description": "0-43200. Default 60.", "type": "number" }, "expiresAt": { "description": "Optional ISO expiry. Null/omitted means no expiry.", "type": "string" }, "ruleName": { "description": "Human-readable name, <=120 chars.", "type": "string" }, "trigger": { "description": "Discriminated by kind: position_drawdown, thesis_validity, news_classification, or price_level. ⛔ `price_level` = {symbol, universe, operator: lte|gte, price, basis?: last|close} — the plain [alert me when X crosses P] rule the other three cannot express: position_drawdown needs you to ALREADY HOLD the name (so it cannot express a BUY ladder rung), thesis_validity talks about a thesis, news_classification about a headline. **`universe` is REQUIRED** and takes a registered universe: `polish-stocks`, `czech-stocks`, `hungarian-stocks`, `romanian-stocks`, `us-stocks`, `german-stocks`, or `crypto`. The same ticker can live on multiple markets (PEP is Pepco in Warsaw and PepsiCo in New York), so without the market a threshold of 390 names neither an instrument nor a currency, and the rule is rejected at creation. Price-level evaluation currently has quote support for `polish-stocks` and `us-stocks`; a registered market without a quote adapter is retained but does not fire. **`price` is in the QUOTE CURRENCY, not PLN** — us-stocks quotes and candles are stored in dollars, so [AVGO below 390] means 390 USD; the fired event carries `currencyNote` saying so. `basis` defaults to `last` (newest `price_quotes` row, ~15 min delayed); it falls back to the daily close and says so in `basisUsed`. A price older than the freshness window does NOT fire — it refuses with a reason, because a rung proposed on yesterday's quote is a trade at a price that no longer exists.", "type": "object" } }, "required": [ "ruleName", "trigger", "action" ], "type": "object" }, "name": "create_decision_rule", "outputSchema": null }, { "description": "Usunięcie reguły decyzyjnej.", "inputSchema": { "properties": { "ruleId": { "description": "ObjectId hex of the rule.", "type": "string" } }, "required": [ "ruleId" ], "type": "object" }, "name": "delete_decision_rule", "outputSchema": null }, { "description": "Spółki, które mocno spadły, ale fundamenty trzymają.", "inputSchema": { "properties": { "anchor": { "description": "What the drawdown is measured FROM. Default '52w_high' (unchanged behaviour). 'blended_avg_cost' measures it from YOUR quantity-weighted average purchase price - the same blend the tax-loss tool uses - which is the reference that matters once you already hold the position. Two consequences to know before using it: (a) a company you do NOT hold has no anchor, so its row comes back as no_dip with that reason rather than silently falling back to the 52-week high (one list, one measure); (b) the default 15% threshold was calibrated for the 52-week anchor - being 15% below your own average is a much rarer event - so pass minDrawdownPct explicitly (e.g. 0 for 'anything below my average'). Every row for a held company carries blendedAvgCostPLN and vsBlendedAvgCostPct regardless of the anchor; negative vsBlendedAvgCostPct means the price is BELOW your average.", "enum": [ "52w_high", "blended_avg_cost" ], "type": "string" }, "limit": { "description": "Default 50, max 200.", "type": "number" }, "minDrawdownPct": { "description": "Default 15. Min drawdown % from 52w high to qualify as 'dip'.", "type": "number" }, "minScore": { "description": "PRO only. Default 55. Minimum overall Agent Rynku score, to avoid value traps. FREE uses the default.", "type": "number" }, "scope": { "description": "Default 'both' (watchlist + portfolio). 'universe' scans the selected universe filter (expensive).", "enum": [ "watchlist", "portfolio", "both", "universe" ], "type": "string" }, "universe": { "description": "Alias of `universeFilter` (FR 063b45f0). Use whichever feels natural.", "enum": [ "polish-stocks", "us-stocks", "all" ], "type": "string" }, "universeFilter": { "description": "Default 'all' (mixed PL+US). Use 'polish-stocks' or 'us-stocks' to scope. Accepts `universe` as alias.", "enum": [ "polish-stocks", "us-stocks", "all" ], "type": "string" } }, "required": [], "type": "object" }, "name": "find_dip_candidates", "outputSchema": null }, { "description": "Wyszukiwanie okazji według zadanych kryteriów.", "inputSchema": { "properties": { "excludeSymbols": { "description": "Symbols to exclude (e.g. user's current portfolio when looking for new ideas). Server canonicalizes.", "items": { "type": "string" }, "type": "array" }, "forecastFreshnessDays": { "description": "Max age of the FUNDAMENTAL baseline (asset_forecasts.baseline.asOf) in days. Default 400, max 800. Baselines refresh on ANNUAL reports, so a 60-day window returned an empty list for most of the year (FR 0aa64bc4). Each result carries baselineAsOf + baselineAgeDays so you can tell the user how old the fundamentals are.", "type": "number" }, "limit": { "description": "Max results. Default 10, max 50.", "type": "number" }, "maxPriceSessionsMissed": { "description": "Drop symbols whose last daily candle is older than N CLOSED sessions (weekends/holidays don't count). Default 3 — guards against upside computed against a zombie quote from a delisted or suspended ticker.", "type": "number" }, "minImpliedUpsidePct": { "description": "PRO only: minimum forecast.impliedUpsidePct (vs spot) to include. Default 5; ignored for FREE when FREE/PRO is enabled.", "type": "number" }, "minSentimentAvg30d": { "description": "Minimum sentimentAvg30d (-5..+5). Default unset (no sentiment gate). Use to bias towards momentum (e.g. 1).", "type": "number" }, "sectorFilter": { "description": "Optional sector whitelist (e.g. ['Banki','Energetyka']). Empty = all sectors.", "items": { "type": "string" }, "type": "array" } }, "required": [], "type": "object" }, "name": "find_opportunities", "outputSchema": null }, { "description": "Spółki, które urosły szybciej, niż uzasadniają to wyniki.", "inputSchema": { "properties": { "limit": { "description": "Default 50, max 200.", "type": "number" }, "maxScore": { "description": "PRO only. Default 50. This controls one of three confirmations for `trim_candidate`, not whether a symbol is included. The separate `trend_continuation` rule uses score >=55 and is unaffected. FREE uses the default.", "type": "number" }, "minRunUpPct": { "description": "Default 25.", "type": "number" }, "scope": { "description": "Default 'both' (watchlist + portfolio). 'universe' scans the selected universe filter (expensive).", "enum": [ "watchlist", "portfolio", "both", "universe" ], "type": "string" }, "universe": { "description": "Alias of `universeFilter` (FR 063b45f0). Use whichever feels natural.", "enum": [ "polish-stocks", "us-stocks", "all" ], "type": "string" }, "universeFilter": { "description": "Default 'all' (mixed PL+US). Use 'polish-stocks' or 'us-stocks' to scope. Accepts `universe` as alias.", "enum": [ "polish-stocks", "us-stocks", "all" ], "type": "string" } }, "required": [], "type": "object" }, "name": "find_overheat_candidates", "outputSchema": null }, { "description": "Pozycje ze stratą, którą da się odliczyć od podatku w tym roku.", "inputSchema": { "properties": { "maxResults": { "description": "Cap on opportunities returned (sorted by tax shield desc). Default 10, max 25.", "type": "number" }, "minLossPLN": { "description": "Min |unrealized loss| PLN to surface. Default 1000. Filters tiny noise positions.", "type": "number" }, "sameSector": { "description": "If true (default), include suggestedReplacement same-sector. False = pure loss listing without replacements.", "type": "boolean" } }, "required": [], "type": "object" }, "name": "find_tlh_opportunities", "outputSchema": null }, { "description": "Ostatnie zdarzenia na Twoim koncie.", "inputSchema": { "properties": { "kind": { "description": "all | thesis_attached | thesis_evaluated | thesis_status_change | event_resolved. Default all.", "type": "string" }, "limit": { "description": "1-200, default 30.", "type": "number" }, "sinceIso": { "description": "Optional ISO timestamp — only entries after this point.", "type": "string" } }, "required": [], "type": "object" }, "name": "get_activity_feed", "outputSchema": null }, { "description": "Statystyki dostarczania alertów: ile poszło, ile się nie udało.", "inputSchema": { "properties": { "channel": { "description": "Filter to one channel: 'telegram' | 'email' | 'webhook'. Default 'telegram'. Pass 'all' to mix.", "type": "string" }, "windowDays": { "description": "Lookback window in days. Default 7, max 90.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_alert_delivery_stats", "outputSchema": null }, { "description": "Alerty dostarczone temu użytkownikowi, z filtrami po spółce i klasyfikacji.", "inputSchema": { "properties": { "classification": { "description": "Optional: earnings | preliminary_results | earnings_conference | regulatory | ma | guidance | operational | other.", "type": "string" }, "limit": { "description": "Max results. Default 20, max 100.", "type": "number" }, "sinceIso": { "description": "ISO date. Return alerts after this date. Default: 7 days ago.", "type": "string" }, "symbol": { "description": "Optional symbol filter, e.g. KGHM.", "type": "string" }, "universe": { "description": "Optional market filter: polish-stocks (GPW) or us-stocks. Applied in the DATABASE query, so asking for 20 polish alerts scans past the US ones instead of returning whatever fits in the first page - on a measured account 85% of alerts are US, so a post-filter would have looked like [that is all there is]. An alert whose market cannot be determined (rule alert on a symbol absent from the assets table) is EXCLUDED, not passed through. An unknown value is an error listing the allowed ones, never a silently ignored filter.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" } }, "required": [], "type": "object" }, "name": "get_alerts", "outputSchema": null }, { "description": "Szanse i ryzyka wykryte automatycznie dla spółki, każde z podpiętym dowodem w danych.", "inputSchema": { "properties": { "symbol": { "description": "Ticker spółki; serwer kanonikalizuje aliasy GPW.", "type": "string" }, "symbols": { "description": "Opcjonalna lista tickerów. Dla pytania o cały portfel użyj jednego wywołania z tą listą zamiast wielu wywołań symbol po symbolu.", "items": { "type": "string" }, "maxItems": 20, "type": "array" }, "universe": { "description": "Opcjonalny rynek. Podaj, gdy ten sam kod istnieje na obu rynkach; bez tego wygrywa GPW, ale WYŁĄCZNIE spośród wierszy aktywnych. Inna wartość niż te dwie to błąd, nie ciche puste.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" } }, "required": [], "type": "object" }, "name": "get_asset_signals", "outputSchema": null }, { "description": "Arkusz zleceń dla obligacji - na razie niedostępny, zwraca informację o odroczeniu.", "inputSchema": { "properties": { "series": { "description": "Catalyst series ticker, e.g. KRU1130.", "type": "string" } }, "required": [ "series" ], "type": "object" }, "name": "get_bond_orderbook", "outputSchema": null }, { "description": "Wyszukiwanie serii obligacji z Catalyst po emitencie, marży i terminie wykupu.", "inputSchema": { "properties": { "couponPctMin": { "description": "Minimum current annual coupon percentage. Works for floating and fixed rate types.", "type": "number" }, "includeMatured": { "description": "If true include already matured series. Default false.", "type": "boolean" }, "issuer": { "description": "Optional case-insensitive issuer substring, e.g. 'kruk' matches 'KRUK SA'.", "type": "string" }, "issuerEquitySymbol": { "description": "Optional exact listed equity ticker, e.g. KRUK returns KRUK SA bonds.", "type": "string" }, "limit": { "description": "Max results. Default 25, max 100.", "type": "number" }, "marginPctMin": { "description": "Minimum margin over the floating reference rate. Read referenceRate in each result for the exact tenor. Default unset.", "type": "number" }, "maturityWithinDays": { "description": "Only return series maturing within this many days from now.", "type": "number" }, "sector": { "enum": [ "real_estate", "consumer_finance", "banking", "industrial", "renewables", "logistics", "health", "other" ], "type": "string" } }, "required": [], "type": "object" }, "name": "get_bond_series", "outputSchema": null }, { "description": "Statystyki potoku ekstrakcji danych ze sprawozdań.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_codex_pipeline_stats", "outputSchema": null }, { "description": "Podgląd analizy fundamentalnej spółki. Pełna treść jest dostępna w PRO.", "inputSchema": { "properties": { "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_company_analysis", "outputSchema": null }, { "description": "Źródłowa pamięć decyzyjna: trwałe przewagi, słabości, otwarte ryzyka, potwierdzone wzorce i kontekst biznesowy.", "inputSchema": { "properties": { "perCategoryLimit": { "description": "Max entries per category. Default 10.", "type": "number" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_company_dossier", "outputSchema": null }, { "description": "Ile portfela stoi na jednej spółce, sektorze i rynku.", "inputSchema": { "properties": { "thresholds": { "description": "Optional override of {warningPct, criticalPct}. Default tied to risk tolerance. Apply same threshold to all 3 axes if provided.", "properties": { "criticalPct": { "type": "number" }, "warningPct": { "type": "number" } }, "type": "object" }, "topDriversPerSymbol": { "description": "How many drivers per symbol to count toward driver-level exposure. Default 1 (primary), max 3.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_concentration_risk", "outputSchema": null }, { "description": "Nadchodzące konferencje wynikowe spółek, które śledzisz.", "inputSchema": { "properties": { "daysAhead": { "description": "Window in days. Default 60, max 365.", "type": "number" }, "symbol": { "description": "Optional single-symbol filter (canonicalized server-side).", "type": "string" } }, "required": [], "type": "object" }, "name": "get_conference_reminders", "outputSchema": null }, { "description": "Streszczenie konferencji wynikowej: cytaty zarządu, prognozy i sygnały ostrzegawcze.", "inputSchema": { "properties": { "conferenceDate": { "description": "Optional ISO date for a specific past conference. If omitted, returns the latest.", "type": "string" }, "limit": { "description": "Max meetings (newest-first). Default 1.", "type": "number" }, "symbol": { "description": "Required. Server canonicalizes.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_conference_summary", "outputSchema": null }, { "description": "Odpowiedniki spółki na drugim rynku, z korelacją i różnicą wyceny - do porównania GPW z USA.", "inputSchema": { "properties": { "market": { "description": "Optional peer market filter.", "enum": [ "us-stocks", "european-stocks" ], "type": "string" }, "symbol": { "description": "Either side of the PL<->US mapping; server canonicalizes.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_cross_market_peers", "outputSchema": null }, { "description": "Odprawa na dziś: co się zmieniło w Twoim portfelu i na watchliście.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_daily_brief", "outputSchema": null }, { "description": "Historia i znane przyszłe dywidendy spółki, z kwotą, datą, źródłem i świeżością.", "inputSchema": { "properties": { "symbol": { "description": "Ticker spółki.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_dividends", "outputSchema": null }, { "description": "Bieżące czynniki makro: surowce, waluty, stopy, nastroje na rynku amerykańskim.", "inputSchema": { "properties": { "includeForumSentiment": { "description": "When true, append driver-like forumSentyment rows for provided symbols.", "type": "boolean" }, "symbols": { "description": "Symbols for forumSentyment, e.g. ['KGHM','XTB']. Max 20.", "items": { "type": "string" }, "type": "array" } }, "required": [], "type": "object" }, "name": "get_drivers", "outputSchema": null }, { "description": "Kalendarz zbliżających się raportów okresowych.", "inputSchema": { "properties": { "daysAhead": { "description": "Window in days. Default 60, max 365.", "type": "number" }, "includePast": { "description": "If true also returns lastEarningsDate alongside upcoming (default false — upcoming only).", "type": "boolean" }, "symbols": { "description": "Optional filter. Server resolves canonical symbols before lookup. Default: all user's holdings and watchlist.", "items": { "type": "string" }, "type": "array" } }, "required": [], "type": "object" }, "name": "get_earnings_calendar", "outputSchema": null }, { "description": "Pogłębione omówienie raportu kwartalnego: co zaskoczyło, co niepokoi, co zapowiedział zarząd.", "inputSchema": { "properties": { "limit": { "description": "Max results (newest-first). Default 1.", "type": "number" }, "quarter": { "description": "Optional 'YYYY-Qn' (e.g. '2026-Q1'). Default: latest.", "type": "string" }, "symbol": { "description": "Required. Server canonicalizes.", "type": "string" }, "symbols": { "description": "Opcjonalna lista tickerów do pobrania w jednym wywołaniu dla całego portfela.", "items": { "type": "string" }, "maxItems": 20, "type": "array" } }, "required": [], "type": "object" }, "name": "get_earnings_deepdive", "outputSchema": null }, { "description": "Rozliczenie dawnych alertów po cenach: co się sprawdziło, a co nie, na tle indeksu.", "inputSchema": { "properties": { "days": { "description": "Rolling calendar-day window over evaluatedAt (market time); takes precedence over sinceIso.", "maximum": 365, "minimum": 1, "type": "integer" }, "hitBandOnly": { "description": "If true, only outcomes where hitBand=true (alerts that landed inside their predicted range).", "type": "boolean" }, "limit": { "description": "Default 20, max 100. Response includes effectiveLimit and truncated=true when a larger request is capped.", "type": "number" }, "sinceIso": { "description": "ISO8601 lower bound for evaluatedAt. Default: 90 days ago. Ignored when days is provided.", "type": "string" }, "symbol": { "description": "Filter by single symbol (canonicalized server-side, e.g. KGH.PL → KGHM).", "type": "string" } }, "required": [], "type": "object" }, "name": "get_evaluation_outcomes", "outputSchema": null }, { "description": "Kalendarz zdarzeń makro, które mogą poruszyć rynkiem.", "inputSchema": { "properties": { "daysAhead": { "description": "Forward window in calendar days. Default 30.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_event_risks", "outputSchema": null }, { "description": "Zmiana wybranego czynnika makro dla spółki z udokumentowanym źródłem i ekspozycją.", "inputSchema": { "properties": { "asKnownAt": { "description": "Kotwica wiedzy w ISO 8601.", "type": "string" }, "baselineObservationKey": { "description": "Opcjonalny observationKey podstawy porównania.", "type": "string" }, "currentObservationKey": { "description": "Dokładny observationKey bieżącej obserwacji.", "type": "string" }, "seriesId": { "description": "Id serii z rejestru, np. fx.usd_pln_legacy_mixed.", "type": "string" }, "symbol": { "description": "Symbol GPW, np. UNIMOT.", "type": "string" } }, "required": [ "symbol", "seriesId", "currentObservationKey", "asKnownAt" ], "type": "object" }, "name": "get_factor_context", "outputSchema": null }, { "description": "Prognoza wyników spółki na najbliższe kwartały. Wycena modelowa jest dostępna w PRO.", "inputSchema": { "properties": { "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_forecast", "outputSchema": null }, { "description": "Historyczna celność modeli prognostycznych i to, czy model przeszedł bramkę jakości.", "inputSchema": { "properties": { "limit": { "description": "Leaderboard size, 1-50 (default 10).", "type": "number" }, "symbol": { "description": "Optional GPW ticker.", "type": "string" } }, "required": [], "type": "object" }, "name": "get_forecast_accuracy", "outputSchema": null }, { "description": "Świece godzinowe z bieżącej i poprzednich sesji.", "inputSchema": { "properties": { "intervalSec": { "description": "Bar interval in seconds. Only 3600 (1h) supported in Faza B; 15m/5m planned for a later phase.", "enum": [ 3600 ], "type": "number" }, "period": { "description": "Lookback window. '1d' = last 24h, '1w' = last 7d. Default '1d'.", "enum": [ "1d", "1w" ], "type": "string" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_intraday_candles", "outputSchema": null }, { "description": "Kwotowanie w trakcie sesji: cena, otwarcie, zakres dnia, zmiana wobec zamknięcia.", "inputSchema": { "properties": { "symbols": { "description": "1-10 tickers (e.g. ['KGHM','CDPROJEKT']).", "items": { "type": "string" }, "type": "array" } }, "required": [ "symbols" ], "type": "object" }, "name": "get_intraday_quote", "outputSchema": null }, { "description": "Ruchy cen odstające od zwykłej zmienności spółki, wyłapane automatycznie.", "inputSchema": { "properties": { "includeMarketContext": { "description": "If true, also return WIG / WIG20 / mWIG40 / sWIG80 today's change as context. Default true.", "type": "boolean" }, "sigmaThreshold": { "description": "Min |move|/σ to flag. Default 1.5 (catches mid-magnitude moves). Use 2 for stricter, 1 for noisier.", "type": "number" }, "symbolsScope": { "description": "What universe to scan. Default 'both' (portfolio + watchlist). ⛔ 'all_covered' now means EVERY ACTIVE polish-stocks name - 392 as measured 2026-08-19. Until then it meant [symbols that happen to have a forecast document], which was 35 names, i.e. 8.4% of the market, and a criterion unrelated to price movement: of the ten largest moves that day, ZERO were inside the scan. The same label already meant [every GPW name with a sector tag] in sector_pulse_pl, so this removes a 12x split between two populations sharing one name. Cost measured before the change: candle read 35 docs / 110 kB / 163 ms versus 389 docs / 1169 kB / 356 ms; the live-quote fan-out runs under a 20 s budget and falls back to daily closes past it, so the scan cannot hang the response.", "enum": [ "portfolio", "watchlist", "both", "all_covered" ], "type": "string" }, "withSynthesis": { "description": "If true, run a Sonnet 4.6 call per flagged anomaly to write a 1-2 sentence Polish hypothesis (~$0.05 per anomaly). Default false — caller can synthesize itself or post-hoc.", "type": "boolean" } }, "required": [], "type": "object" }, "name": "get_market_anomalies", "outputSchema": null }, { "description": "Skuteczność alertów, które dostałeś: ile się sprawdziło.", "inputSchema": { "properties": { "days": { "description": "Lookback window in days. Default 90, max 365. Preferred over the legacy windowDays alias.", "maximum": 365, "minimum": 1, "type": "number" }, "universe": { "description": "Optional market filter. Every number in the response is then computed on that market ALONE, and the response carries `universe` plus `alertsOutsideUniverse` so the scope is readable after the fact. Why it matters: the unfiltered hit rate is an average over two markets with very different source coverage (PAP/ESPI for GPW vs an EODHD firehose for US) - measured on one account over 90 days, 1655 settled US outcomes against 284 PL. Without this filter the question [are the GPW alerts worth reading] cannot be answered from this tool. Alerts whose market cannot be determined are excluded from the filtered set.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" }, "windowDays": { "description": "Deprecated alias for days, retained for existing clients. Do not pass both unless the values match.", "maximum": 365, "minimum": 1, "type": "number" } }, "required": [], "type": "object" }, "name": "get_my_alert_performance", "outputSchema": null }, { "description": "Historia depesz o spółce razem z ich oceną.", "inputSchema": { "properties": { "classification": { "description": "Optional: earnings | preliminary_results | earnings_conference | regulatory | ma | guidance | operational | sentiment | macro | management | other.", "type": "string" }, "includeOtherSubjects": { "description": "Default false. When true, also returns evaluations written about OTHER companies that merely tag this ticker (pre-2026-08-18 behaviour). Use only when you want the full article context, not this company's own newsflow.", "type": "boolean" }, "limit": { "description": "Max results. Default 20, max 100.", "type": "number" }, "sinceIso": { "description": "ISO date. Default 30 days ago.", "type": "string" }, "sources": { "description": "Optional allowlist of source values. Applied before limit; e.g. ['gpw-espi', 'gpw-espi-archive', 'pap:biznes'] returns ESPI and PAP without forum rows. Omit to preserve the default of all sources.", "items": { "enum": [ "gpw-espi", "gpw-espi-archive", "pap:biznes", "strefa-inwestorow", "bankier:gielda", "comparic:feed", "stockwatch:forum", "eodhd-news" ], "type": "string" }, "type": "array" }, "symbol": { "description": "Required. Server canonicalizes.", "type": "string" }, "universe": { "description": "Opcjonalny rynek symbolu. Ten sam ticker może należeć do spółek na obu rynkach, więc podaj universe, aby wskazać właściwy instrument; bez niego jednoznaczny symbol rozstrzyga kolekcja assets, a homograf domyślnie wybiera polish-stocks. Odpowiedź zawsze zwraca universeUsed, a przy domyślnym wyborze homografu także universeNote.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_news_history", "outputSchema": null }, { "description": "Stan rozliczania wyników alertów i prognoz.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_outcome_settlement_health", "outputSchema": null }, { "description": "Stan potoków danych: świeżość źródeł, opóźnienia, awarie.", "inputSchema": { "properties": { "windowHours": { "description": "Lookback window for the recent-evals check. Default 2. NIE dotyczy `alerts_recent` - ten mierzy alerty OD OTWARCIA SESJI i wydaje werdykt dopiero po 16:00, bo okno dwugodzinne dawalo ostrzezenie w 53% przebiegow (po pivocie GPW-only mediana to 8 alertow na cala sesje).", "type": "number" } }, "required": [], "type": "object" }, "name": "get_pipeline_health", "outputSchema": null }, { "description": "Krzywa kapitału portfela dzień po dniu, ze stopą zwrotu, obsunięciem, zmiennością i porównaniem z WIG-iem lub S&P 500.", "inputSchema": { "properties": { "benchmark": { "description": "Optional benchmark series. WIG (polish-stocks beta), SPY (broad US beta), QQQ (US growth/AI tilt).", "enum": [ "WIG", "SPY", "QQQ" ], "type": "string" }, "period": { "default": "30d", "description": "Lookback period. Default 30d.", "enum": [ "30d", "90d", "1y", "ytd" ], "type": "string" } }, "required": [], "type": "object" }, "name": "get_portfolio_analytics", "outputSchema": null }, { "description": "Obraz portfela użytkownika: pozycje, gotówka, watchlista z oceną analityka i powodem obserwacji, cele alokacji. Analiza i wycena wymagają PRO.", "inputSchema": { "properties": { "include": { "description": "Sekcje do zwrócenia. Pominięcie = pełna odpowiedź (jak dotąd). Nieznana nazwa to BŁĄD z listą dozwolonych, nie ciche pominięcie.", "items": { "enum": [ "holdings", "profile", "watchlist", "alerts", "snapshots", "drivers", "risk" ], "type": "string" }, "type": "array" } }, "required": [], "type": "object" }, "name": "get_portfolio_context", "outputSchema": null }, { "description": "Statystyki ryzyka i wyniku portfela liczone z historii transakcji.", "inputSchema": { "properties": { "account": { "description": "Optional account filter.", "type": "string" }, "broker": { "description": "Optional broker filter, e.g. xtb or bossa.", "type": "string" }, "curveLimit": { "description": "Max equityCurve points returned. Default 260, max 750.", "type": "number" }, "excludeTestBrokers": { "description": "Default true for combined scope. Excludes broker/account test or audit rows unless explicitly disabled.", "type": "boolean" }, "includeOpeningBalance": { "description": "Default true. Adds synthetic opening-balance buys from current holdings when broker_transactions history is incomplete.", "type": "boolean" }, "periodDays": { "description": "Lookback window in calendar days. Default 365, max 1825.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_portfolio_stats", "outputSchema": null }, { "description": "Historia wartości portfela w czasie.", "inputSchema": { "properties": { "days": { "default": 180, "description": "Lookback in calendar days. Default 180, maximum 730.", "maximum": 730, "minimum": 1, "type": "number" } }, "required": [], "type": "object" }, "name": "get_portfolio_value_history", "outputSchema": null }, { "description": "Świece OHLC i zmienność zrealizowana - do stop-lossów i wielkości pozycji.", "inputSchema": { "properties": { "days": { "description": "Exact rolling lookback in calendar days; takes precedence over period. Max 365 for daily and 7 for intraday intervals.", "maximum": 365, "minimum": 1, "type": "integer" }, "interval": { "description": "Bar size. '1d' (default) -> daily candles, period 30d/90d/1y. '1h'/'15min'/'5min' -> intraday, period clamped to 1d/1w. Requires EODHD intraday subscription.", "enum": [ "1d", "1h", "15min", "5min" ], "type": "string" }, "period": { "description": "Lookback period (default 30d for daily, 1d for intraday)", "enum": [ "1d", "1w", "30d", "90d", "1y" ], "type": "string" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_price_series", "outputSchema": null }, { "description": "Lista śledzonych zdarzeń wycenionych.", "inputSchema": { "properties": { "eventType": { "description": "Optional event-type filter.", "type": "string" }, "limit": { "description": "1-200, default 50.", "type": "number" }, "status": { "description": "pending | resolved | cancelled | all. Default: pending.", "type": "string" }, "symbol": { "description": "Optional symbol filter.", "type": "string" }, "universe": { "description": "Optional universe scope. Joins through assets to restrict by symbol universe. Accepts `universeFilter` as alias.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" }, "universeFilter": { "description": "Alias of `universe`.", "enum": [ "polish-stocks", "us-stocks" ], "type": "string" } }, "required": [], "type": "object" }, "name": "get_priced_events", "outputSchema": null }, { "description": "Wyniki kwartalne spółki: przychód, zysk, bilans i przepływy, wraz z oceną jakości każdego wiersza.", "inputSchema": { "properties": { "quartersBack": { "description": "How many recent quarters to return. Default 8, max 20.", "type": "number" }, "symbol": { "description": "Required. XTB-style 'KGH.PL' canonicalized.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_quarterly_kpis", "outputSchema": null }, { "description": "Jak ranking sprawdzał się w przeszłości.", "inputSchema": { "properties": { "horizonDays": { "default": 21, "description": "Horyzont zwrotu forward w dniach kalendarzowych. Default 21. Ta sama liczba wyznacza odstep, przy ktorym okna uznaje sie za niezalezne.", "maximum": 120, "minimum": 1, "type": "number" } }, "required": [], "type": "object" }, "name": "get_ranking_performance", "outputSchema": null }, { "description": "Zrealizowany wynik od początku roku i okazje do rozliczenia strat podatkowych.", "inputSchema": { "properties": { "year": { "description": "Calendar year (default current)", "type": "number" } }, "required": [], "type": "object" }, "name": "get_realized_pnl", "outputSchema": null }, { "description": "Jeden raport kwartalny jako zdarzenie: co mówi, co rozliczył, co zmienił, co zostaje otwarte, z wiekiem i źródłem każdej liczby.", "inputSchema": { "properties": { "eventId": { "description": "Exact report-event id (24 hex chars) when you already have one; overrides `quarter`.", "type": "string" }, "quarter": { "description": "Target quarter as YYYY-Qn, e.g. 2026-Q2. Omit for the company's most recent report.", "type": "string" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_report_event", "outputSchema": null }, { "description": "Zbiorczy obraz ryzyka rynkowego: jego poziom i aktywne motywy razem.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_risk_dashboard", "outputSchema": null }, { "description": "Ryzyko rynkowe: spokój, lekka nerwowość, silna nerwowość czy kryzys.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_risk_regime", "outputSchema": null }, { "description": "Motywy ryzyka aktywne w tej chwili.", "inputSchema": { "properties": {}, "required": [], "type": "object" }, "name": "get_risk_themes", "outputSchema": null }, { "description": "Celność liczbowych przewidywań ruchu ceny: trafienia, kierunek, średni błąd.", "inputSchema": { "properties": { "kind": { "description": "Opcjonalny filtr rodzaju sygnału, np. opportunity | risk.", "type": "string" }, "symbol": { "description": "Opcjonalny ticker; serwer kanonikalizuje aliasy GPW.", "type": "string" }, "universe": { "description": "Opcjonalne uniwersum: polish-stocks | us-stocks. Domyślnie wszystkie.", "type": "string" } }, "required": [], "type": "object" }, "name": "get_signal_prediction_performance", "outputSchema": null }, { "description": "Bieżąca cena jednej spółki, z informacją, czy pochodzi z zamknięcia, czy z kwotowania w trakcie sesji.", "inputSchema": { "properties": { "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_spot_price", "outputSchema": null }, { "description": "Ranking spółek GPW według wybranego kryterium.", "inputSchema": { "properties": { "category": { "default": "overall", "description": "Ranking category. overall sorts by Agent Rynku score; growth, dividend, and defensive sort by category fit. Default: overall.", "enum": [ "overall", "defensive", "dividend", "growth" ], "type": "string" }, "dateKey": { "description": "Data opublikowanego runu wybranej kategorii. Brak nigdy nie wraca do bieżącego dnia.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "limit": { "default": 20, "description": "Maksymalna liczba pozycji. Default 20, max 50.", "maximum": 50, "type": "number" }, "minAdvPLN": { "description": "Dodatkowy filtr ADV w PLN. Zawęża opublikowanych członków bez zmiany ich rang. Próg samego przebiegu to od 29.09.2026 50000 w overall, growth, dividend i defensive (plus obrót w 80% z 63 sesji).", "type": "number" }, "runId": { "description": "Identyfikator opublikowanego runu wybranej kategorii.", "pattern": "^[a-fA-F0-9]{24}$", "type": "string" } }, "required": [], "type": "object" }, "name": "get_stock_rankings", "outputSchema": null }, { "description": "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.", "inputSchema": { "properties": { "days": { "description": "Price-history lookback window for momentum/risk. Default 365, min 90, max 730.", "type": "number" }, "symbol": { "description": "GPW symbol or broker alias, e.g. KGHM, KGH.PL, ASBIS.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_sygnal_score", "outputSchema": null }, { "description": "Ta sama lista spółek spoza portfela co w kafelku Top okazje na pulpicie.", "inputSchema": { "properties": { "limit": { "description": "Maksymalna liczba wyników. Domyślnie 5, maksymalnie 20.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_top_opportunities", "outputSchema": null }, { "description": "Portfel zsumowany ze wszystkich rachunków maklerskich, przeliczony na jedną walutę.", "inputSchema": { "properties": { "baseCurrency": { "description": "Default 'PLN'. USD requires usdPlnRate driver - falls back to PLN with warning if missing.", "enum": [ "PLN", "USD" ], "type": "string" }, "topN": { "description": "Default 10. Max concentration rows in response.", "type": "number" } }, "required": [], "type": "object" }, "name": "get_total_portfolio_view", "outputSchema": null }, { "description": "Historia transakcji użytkownika, od najnowszej.", "inputSchema": { "properties": { "broker": { "description": "Optional broker filter (normalized to lowercase).", "type": "string" }, "limit": { "description": "Maximum rows to return. Default 50, max 200.", "maximum": 200, "minimum": 1, "type": "number" }, "side": { "description": "Optional transaction side filter.", "enum": [ "buy", "sell" ], "type": "string" }, "sinceIso": { "description": "Optional ISO timestamp; only transactions at or after it are returned.", "type": "string" }, "symbol": { "description": "Optional symbol filter (normalized to uppercase).", "type": "string" } }, "required": [], "type": "object" }, "name": "get_transaction_history", "outputSchema": null }, { "description": "Streszczenie walnego zgromadzenia akcjonariuszy.", "inputSchema": { "properties": { "limit": { "description": "Max meetings to return (newest-first). Default 1. Use 5+ for historical comparison.", "type": "number" }, "symbol": { "description": "Required. Server canonicalizes.", "type": "string" }, "wzaDate": { "description": "Optional ISO date for a specific past WZA. If omitted, returns the latest.", "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "name": "get_wza_summary", "outputSchema": null }, { "description": "Jak podobne zdarzenia wpływały na cenę w przeszłości.", "inputSchema": { "properties": { "eventType": { "description": "earnings_beat | earnings_miss | dividend | regulatory | ma_close | guidance_raise | product_launch | capacity_addition | contract_award.", "type": "string" }, "lookbackQuarters": { "description": "1-20, default 8 (≈2 years for dividends — typical GPW issuers pay annually so this captures 1-2 events per stock).", "type": "number" }, "symbol": { "description": "Alias OR canonical symbol.", "type": "string" } }, "required": [ "symbol", "eventType" ], "type": "object" }, "name": "historical_event_hit_rate", "outputSchema": null }, { "description": "Propozycje reguł decyzyjnych wynikające z Twojego zachowania.", "inputSchema": { "properties": { "limit": { "description": "1-100, default 20.", "type": "number" }, "ruleId": { "description": "Optional ObjectId filter to a specific rule.", "type": "string" }, "status": { "description": "Default pending.", "enum": [ "pending", "confirmed", "rejected", "all" ], "type": "string" } }, "required": [], "type": "object" }, "name": "list_decision_rule_proposals", "outputSchema": null }, { "description": "Lista Twoich reguł decyzyjnych.", "inputSchema": { "properties": { "limit": { "description": "Default 50, max 200.", "type": "number" }, "statusFilter": { "description": "Optional status filter.", "enum": [ "active", "paused", "expired" ], "type": "string" } }, "required": [], "type": "object" }, "name": "list_decision_rules", "outputSchema": null }, { "description": "Lista zgłoszeń i ich stan.", "inputSchema": { "properties": { "brief": { "description": "Headline mode: id, type, status, title, priority, createdAt, updatedAt, truncated founderNote, autoImplAttempts. Omits description and autoImplLastError.", "type": "boolean" }, "limit": { "description": "Default 20, max 50.", "type": "number" }, "offset": { "description": "Skip this many rows IN THE SELECTED ORDER before returning the page. Default 0. With the default sort:'priority' that means skipping queue-ordered rows (so a large offset skips urgent work, not old history) - pass sort:'newest' when you want to page back through history. Combine with total/hasMore to walk the whole list.", "type": "number" }, "owner": { "description": "Optional filter by owner handle. 'operator' finds what needs a human decision, 'unassigned' finds requests nobody owns.", "type": "string" }, "priority": { "description": "Optional filter by declared priority. Matches legacy spellings of the same rank too (P1 also finds 1 and 'high'). Requests nobody ranked are NOT returned by any value - absent priority is a separate state.", "enum": [ "P0", "P1", "P2", "P3" ], "type": "string" }, "reporter": { "description": "Optional filter by reporter handle. Pass your own session name to see everything YOU filed, whoever ended up owning it. 'unassigned' finds requests filed before reporters were recorded.", "type": "string" }, "sort": { "description": "Ordering. 'priority' (default) = queue order: P0 first, oldest first within a rank, unranked treated as P2. 'newest' = createdAt desc (what this tool did before). 'oldest' = createdAt asc.", "enum": [ "priority", "newest", "oldest" ], "type": "string" }, "status": { "description": "Optional filter.", "enum": [ "pending", "reviewing", "triaged", "planned", "in_progress", "implemented", "blocked", "deferred", "shipped", "wontdo", "duplicate" ], "type": "string" } }, "required": [], "type": "object" }, "name": "list_feature_requests", "outputSchema": null }, { "description": "Zdarzenia z webhooka - do sprawdzenia, czy TradingView dochodzi do Agenta Rynku.", "inputSchema": { "properties": { "limit": { "description": "1-100, default 20.", "type": "number" }, "sourceFilter": { "description": "Optional source filter.", "enum": [ "tradingview", "n8n", "custom" ], "type": "string" } }, "required": [], "type": "object" }, "name": "list_webhook_events", "outputSchema": null }, { "description": "Co najprawdopodobniej stało za ostatnim ruchem WIG20.", "inputSchema": { "properties": { "date": { "description": "Optional YYYY-MM-DD. Defaults to latest WIG20 driver history date.", "type": "string" }, "topN": { "description": "How many ranked drivers to return. Default 6, max 12.", "type": "number" } }, "required": [], "type": "object" }, "name": "macro_attribution", "outputSchema": null }, { "description": "Ustawienia powiadomień: próg istotności, kanały, wyciszone klasy alertów.", "inputSchema": { "properties": { "alertWeighting": { "description": "How the per-ticker daily alert cap treats companies you do NOT hold. 'flat' (default, unchanged behaviour): every ticker gets the same 5/day cap. 'portfolio_first': tickers absent from your holdings get 2/day instead; positions you hold keep 5/day. Measured on a real 90-day account (3875 candidates): 1840 alerts under flat vs 1482 under portfolio_first, with a watchlist-only ticker dropping 186 → 95 and the largest position unchanged at 5 (its cap was never the binding constraint — it had 5 candidates in 90 days). Alias-aware: a position stored as KGH counts as held when the news says KGHM. With an empty holdings list this setting does nothing, so it cannot mute everything.", "enum": [ "flat", "portfolio_first" ], "type": "string" }, "channels": { "description": "Active alert channels. SMS not yet supported. Empty array silences alerts entirely.", "items": { "enum": [ "telegram", "email", "webhook" ], "type": "string" }, "type": "array" }, "espiCommunicationsEnabled": { "description": "Send every official ESPI/EBI filing for watched companies. These entries are marked as communications, not alerts, and do not enter alert limits or performance history.", "type": "boolean" }, "impactThresholdPct": { "description": "Minimum extent of the predicted range from zero in percentage points: max(|rangeLowPct|, |rangeHighPct|) (default 2, ≥ 0). This filters range extent, not the expected directional move.", "type": "number" }, "mutedAlertClassifications": { "description": "Mute-lista klasyfikacji alertów — te typy nie będą wysyłane jako alerty o nowych zdarzeniach. Pusta = nic nie wyciszone.", "items": { "enum": [ "earnings", "preliminary_results", "earnings_conference", "guidance", "ma", "regulatory", "management", "operational", "macro", "sentiment", "other" ], "type": "string" }, "type": "array" }, "notificationEmail": { "description": "Override email (null clears, falling back to UserDoc.email).", "type": "string" } }, "required": [], "type": "object" }, "name": "modify_chat_settings", "outputSchema": null }, { "description": "Ręczna zmiana pozycji w portfelu.", "inputSchema": { "properties": { "add": { "items": { "properties": { "avgCostPLN": { "type": "number" }, "notes": { "type": "string" }, "quantity": { "type": "number" }, "symbol": { "type": "string" }, "universe": { "type": "string" } }, "required": [ "symbol", "quantity" ], "type": "object" }, "type": "array" }, "remove": { "description": "A symbol string removes only manual entries. Use {symbol, broker, account?} to remove a specific broker-synced position.", "items": { "oneOf": [ { "type": "string" }, { "properties": { "account": { "type": "string" }, "broker": { "type": "string" }, "symbol": { "type": "string" } }, "required": [ "symbol", "broker" ], "type": "object" } ] }, "type": "array" }, "update": { "items": { "properties": { "account": { "description": "Broker account identifier. Defaults to an empty string when broker is provided.", "type": "string" }, "avgCostPLN": { "type": "number" }, "broker": { "description": "Broker identifier for a broker-synced position. Omit for manual-only matching.", "type": "string" }, "notes": { "type": "string" }, "quantity": { "type": "number" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "type": "array" } }, "required": [], "type": "object" }, "name": "modify_holdings", "outputSchema": null }, { "description": "Zmiana profilu inwestora.", "inputSchema": { "properties": { "about": { "description": "Free-form self-description, ≤2000 chars.", "type": "string" }, "confirmed": { "default": false, "description": "false/omitted = preview only, no profile write. true = consume a matching, non-expired preview and persist exactly its fields once; otherwise refuse.", "type": "boolean" }, "constraints": { "description": "Constraints / no-go list, ≤2000 chars.", "type": "string" }, "defaultHorizonMonths": { "description": "1..120. Investment horizon in months.", "type": "number" }, "riskTolerance": { "enum": [ "conservative", "moderate", "aggressive" ], "type": "string" }, "tradingStyle": { "enum": [ "long-term", "swing", "day-trade", "mixed" ], "type": "string" } }, "required": [], "type": "object" }, "name": "modify_profile", "outputSchema": null }, { "description": "Dodanie lub usunięcie spółki z watchlisty.", "inputSchema": { "properties": { "add": { "description": "Symbols to add (uppercased server-side).", "items": { "type": "string" }, "type": "array" }, "remove": { "description": "Symbols to remove.", "items": { "type": "string" }, "type": "array" }, "setAlarm": { "description": "Set, re-arm, or clear one-shot price alarms. Example: `setAlarm: [{symbol: 'KGHM', price: 130, direction: 'below'}]`.", "items": { "properties": { "direction": { "description": "Optional crossing direction; inferred from the latest known price when omitted.", "enum": [ "above", "below" ], "type": "string" }, "price": { "description": "Price in the market's native currency. Pass null to clear the alarm.", "type": [ "number", "null" ] }, "symbol": { "type": "string" } }, "required": [ "symbol", "price" ], "type": "object" }, "type": "array" }, "setThreshold": { "description": "Set per-asset notification threshold for one or more symbols already in the watchlist. Symbols not yet on the watchlist are auto-added.", "items": { "properties": { "minImpactPct": { "description": "Override of the global minimum predicted-range extent from zero for this symbol: max(|rangeLowPct|, |rangeHighPct|). It is not an expected directional move. 0 = no range-extent gate. Pass null to clear.", "type": "number" }, "minSentimentAbs": { "description": "Minimum |sentiment| (0..5) to fire — independent of impact. 0 = no gate.", "type": "number" }, "symbol": { "type": "string" } }, "required": [ "symbol" ], "type": "object" }, "type": "array" }, "universe": { "description": "Asset universe. Default: 'polish-stocks'. ROZSTRZYGA HOMOGRAF: ten sam kod bywa dwiema spółkami (CRM to Cormay na GPW i Salesforce w USA), a wpis watchlisty jest parą (rynek, symbol). Bez tego pola operacja na kodzie, który użytkownik trzyma na OBU rynkach, nie zgaduje strony - wraca w polu `niejednoznaczne` z prośbą o rynek i nie zmienia niczego.", "type": "string" } }, "required": [], "type": "object" }, "name": "modify_watchlist", "outputSchema": null }, { "description": "Zapytanie do asystenta Agenta Rynku w języku naturalnym.", "inputSchema": { "properties": { "agentLabel": { "description": "Optional tag (e.g. 'Claude-makler', 'PortfolioBot-1'). Persists the call but flags it as agent-origin so summarizer + RAG skip it.", "type": "string" }, "message": { "description": "Question/message in Polish.", "type": "string" }, "reasoningMode": { "description": "Anti-slop guardrail: minimal = final answer only, standard = default natural prose, verbose = explicit data→fakt→implikacja→wniosek chain with ≥3 sources cited.", "enum": [ "minimal", "standard", "verbose" ], "type": "string" }, "silent": { "description": "If true, neither user message nor reply is persisted. Use for cron-driven agent checks. Default false.", "type": "boolean" } }, "required": [ "message" ], "type": "object" }, "name": "query_companion", "outputSchema": null }, { "description": "Ranking wzrostu przychodów.", "inputSchema": { "properties": { "limit": { "description": "Max rows, default 20, max 50", "type": "number" }, "maxQuarterAgeDays": { "default": 180, "description": "Maximum age in full days of the latest report used for a row. Default 180. Rows without reportedAt cannot be age-filtered and remain eligible.", "minimum": 0, "type": "number" }, "minAdvPLN": { "default": 1000000, "description": "Minimum average daily turnover in PLN. Default 1000000; set 0 to disable.", "minimum": 0, "type": "number" }, "minBaseRevenuePLN": { "default": 5000000, "description": "Minimum revenue in the comparison quarter, in PLN. Default 5000000; set 0 to retain micro-base rows (flagged with microBase).", "minimum": 0, "type": "number" } }, "required": [], "type": "object" }, "name": "rank_revenue_growth", "outputSchema": null }, { "description": "Ranking spółek w obrębie wybranego motywu inwestycyjnego.", "inputSchema": { "properties": { "limit": { "description": "Maksymalna liczba spółek. Default 20, max 50.", "type": "number" }, "theme": { "description": "Opcjonalny id tematu, np. ai, gaming, defense. Bez argumentu narzędzie zwraca tematy dostępne do rankingu.", "type": "string" } }, "required": [], "type": "object" }, "name": "rank_thematic", "outputSchema": null }, { "description": "Propozycje dywersyfikacji tam, gdzie portfel jest skupiony.", "inputSchema": { "properties": { "candidatesPerSector": { "description": "How many ranked candidates to return per under-represented sector. Default 2, max 5.", "type": "number" }, "exclude": { "description": "Symbols to omit from this response. The server canonicalizes GPW and broker aliases; this list is not stored.", "items": { "type": "string" }, "type": "array" }, "minImpliedUpsidePct": { "description": "Forwarded to the underlying find_opportunities scoring. Default 5.", "type": "number" }, "underweightThresholdPct": { "description": "Sector treated as under-represented when current weight < threshold. Default 5pp.", "type": "number" } }, "required": [], "type": "object" }, "name": "recommend_diversification", "outputSchema": null }, { "description": "Podpowiedź wielkości pozycji z uwzględnieniem zmienności i koncentracji portfela. Wycena wymaga PRO.", "inputSchema": { "properties": { "account": { "description": "Optional cash scope: size the position from ONE account instead of the sum over all of them. Use when the order goes to a specific brokerage account (a retirement account cannot fund a purchase on a standard one).", "properties": { "account": { "description": "Account id or type, e.g. 164655 or IKE. Omit to sum every account of that broker.", "type": "string" }, "broker": { "description": "Broker key as returned in availableCashByAccount, e.g. bossa, xtb, mbank.", "type": "string" } }, "required": [ "broker" ], "type": "object" }, "availableCash": { "description": "Cash available for the position, in PLN. Optional; defaults to portfolio cash when omitted. Mutually exclusive with `account`.", "type": "number" }, "conviction": { "description": "Conviction level. Strings high/medium/low or numeric 1-10 (7-10 high, 4-6 medium, 1-3 low).", "oneOf": [ { "enum": [ "high", "medium", "low" ], "type": "string" }, { "maximum": 10, "minimum": 1, "type": "number" } ] }, "holdingPeriodMonths": { "description": "Optional intended holding period. Defaults to user.profile.defaultHorizonMonths; reserved for future horizon-aware tuning.", "type": "number" }, "stopLossPct": { "description": "Optional stop-loss percent (>0). When provided, sizing also respects risk-per-trade R-multiple budget. Omit (or pass null) to skip R-multiple sizing.", "exclusiveMinimum": 0, "maximum": 100, "type": "number" }, "symbol": { "description": "Required ticker. Server canonicalizes GPW aliases.", "type": "string" } }, "required": [ "symbol", "conviction" ], "type": "object" }, "name": "recommend_position_size", "outputSchema": null }, { "description": "Natychmiastowe rozliczenie zdarzenia po bieżącej cenie.", "inputSchema": { "properties": { "eventId": { "description": "ObjectId hex of the priced event to resolve.", "type": "string" } }, "required": [ "eventId" ], "type": "object" }, "name": "resolve_priced_event_now", "outputSchema": null }, { "description": "Skan spółek pod kątem zbliżających się raportów i przewidywanego zaskoczenia.", "inputSchema": { "properties": { "excludeSectors": { "description": "Sector names to omit, e.g. ['Energetyka'].", "items": { "type": "string" }, "type": "array" }, "excludeSymbols": { "description": "Symbols to omit. Server canonicalizes XTB-style tickers.", "items": { "type": "string" }, "type": "array" }, "limit": { "description": "Max candidates. Default 8, max 100.", "type": "number" }, "peThreshold": { "description": "Max forward P/E to include. Default 15; symbols above threshold are dropped.", "type": "number" }, "pricingInPenaltyWeight": { "description": "PRO only. Weight applied to the pricing-in penalty. Default 1.0; set 0 to disable. FREE uses the default and receives ranking order without exact score.", "type": "number" }, "universe": { "description": "Universe to scan. Default 'polish-stocks' (currently supported universe).", "type": "string" } }, "required": [], "type": "object" }, "name": "run_predictive_scan", "outputSchema": null }, { "description": "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ć.", "inputSchema": { "properties": { "dynamikaEbitdaRrMaxPct": { "description": "Maksymalna zmiana EBITDA rok do roku w procentach, włącznie.", "type": "number" }, "dynamikaEbitdaRrMinPct": { "description": "Minimalna zmiana EBITDA ostatniego kwartału wobec tego samego kwartału rok wcześniej, w procentach (np. 20 dla +20%), włącznie.", "type": "number" }, "dynamikaPrzychodowRrMaxPct": { "description": "Maksymalna zmiana przychodów rok do roku w procentach, włącznie.", "type": "number" }, "dynamikaPrzychodowRrMinPct": { "description": "Minimalna zmiana przychodów ostatniego kwartału wobec tego samego kwartału rok wcześniej, w procentach, włącznie.", "type": "number" }, "insiderzyNabycia": { "description": "true: tylko spółki, w których osoby z zarządu lub rady zgłosiły w oknie wyłącznie nabycia (kierunek z tytułu powiadomienia, bez wolumenów).", "type": "boolean" }, "insiderzyOknoDni": { "default": 90, "description": "Okno powiadomień insiderów w dniach. Tylko razem z insiderzyNabycia: true.", "maximum": 365, "minimum": 1, "type": "integer" }, "kapitalizacjaMaxPLN": { "description": "Maksymalna kapitalizacja w złotych, włącznie.", "minimum": 0, "type": "number" }, "kapitalizacjaMinPLN": { "description": "Minimalna kapitalizacja w złotych (np. 200000000 dla 200 mln zł), włącznie.", "minimum": 0, "type": "number" }, "limit": { "default": 30, "description": "Ile spółek spełniających warunki (i osobno nierozstrzygniętych) pokazać.", "maximum": 50, "minimum": 1, "type": "integer" }, "wybicie": { "description": "true: tylko spółki z wybiciem, czyli zamknięciem powyżej maksimum okna przy wolumenie powyżej krotności średniej.", "type": "boolean" }, "wybicieMiesiecy": { "default": 6, "description": "Długość okna maksimum w miesiącach. Tylko razem z wybicie: true.", "maximum": 12, "minimum": 1, "type": "integer" }, "wybicieSesjiWstecz": { "default": 1, "description": "Wybicie w którejkolwiek z tylu ostatnich sesji. Tylko razem z wybicie: true.", "maximum": 10, "minimum": 1, "type": "integer" }, "wybicieWolumenRazy": { "default": 2, "description": "Ile razy wolumen sesji ma przewyższać średnią z 20 poprzednich sesji (porównanie ścisłe). Tylko razem z wybicie: true.", "exclusiveMinimum": 1, "maximum": 10, "type": "number" } }, "required": [], "type": "object" }, "name": "screen_stocks", "outputSchema": null }, { "description": "Puls sektorów GPW: które radzą sobie dziś lepiej, a które gorzej.", "inputSchema": { "properties": { "includeMarketContext": { "description": "If true, also return WIG / WIG20 / mWIG40 / sWIG80 today's change for cross-reference. Default true.", "type": "boolean" }, "minSymbolsPerSector": { "description": "Skip sectors with fewer covered symbols than this. Default 2 (avoids 1-stock 'sectors'). Max 10.", "type": "number" }, "topMoversPerSector": { "description": "How many extreme movers to return per sector (sorted by |change|). Default 2, max 5.", "type": "number" }, "universe": { "description": "Which symbols to aggregate. Default 'all_covered' = every polish-stocks asset carrying a sector tag - 412 as measured 2026-08-02 with the handler's own predicate, NOT the ~197 this description claimed for months (so coverage is roughly double what an agent reading the old text would assume). 'both' = portfolio ∪ watchlist (personalised view). 'portfolio'/'watchlist' restricts to one set.", "enum": [ "all_covered", "portfolio", "watchlist", "both" ], "type": "string" } }, "required": [], "type": "object" }, "name": "sector_pulse_pl", "outputSchema": null }, { "description": "Ustawienia zachowania agenta.", "inputSchema": { "properties": { "emoji": { "description": "true = emoji dozwolone, false = całkowicie bez emoji.", "type": "boolean" }, "focus": { "description": "Obszary na których agent ma się skupiać. Pusta tablica = wszystko.", "items": { "enum": [ "portfel", "makro", "tezy", "ryzyko", "newsy" ], "type": "string" }, "type": "array" }, "jargon": { "description": "laik = tłumacz terminy, pro = pełny żargon rynkowy bez tłumaczenia.", "enum": [ "laik", "standard", "pro" ], "type": "string" }, "tone": { "description": "kumpel = luźny forumowicz-trader, neutralny = rzeczowo, formalny = profesjonalny rejestr.", "enum": [ "kumpel", "neutralny", "formalny" ], "type": "string" }, "verbosity": { "description": "Długość odpowiedzi.", "enum": [ "zwiezle", "standard", "szczegolowo" ], "type": "string" } }, "required": [], "type": "object" }, "name": "set_agent_prefs", "outputSchema": null }, { "description": "Ustawienie salda gotówki na rachunku.", "inputSchema": { "properties": { "account": { "description": "Numer lub alias konta.", "type": "string" }, "amount": { "description": "Stan po zmianie w walucie natywnej (nie delta).", "minimum": 0, "type": "number" }, "broker": { "description": "Identyfikator brokera, np. xtb.", "type": "string" }, "currency": { "enum": [ "PLN", "USD", "EUR" ], "type": "string" } }, "required": [ "broker", "account", "currency", "amount" ], "type": "object" }, "name": "set_cash_balance", "outputSchema": null }, { "description": "Ocena alertu - ten sam sygnał, co kciuki w Telegramie.", "inputSchema": { "properties": { "alertId": { "description": "Hex alertId from get_alerts. Server resolves the underlying evaluationId.", "type": "string" }, "evaluationId": { "description": "Alternative: hex evaluationId directly.", "type": "string" }, "verdict": { "description": "hit = direction matched and was actionable; miss = wrong / unactionable; spam = routine ESPI noise that shouldn't have alerted at all (drives future filter tightening).", "enum": [ "hit", "miss", "spam" ], "type": "string" } }, "required": [ "verdict" ], "type": "object" }, "name": "submit_alert_feedback", "outputSchema": null }, { "description": "Wgranie historii transakcji do rozliczeń i podatków.", "inputSchema": { "properties": { "account": { "type": "string" }, "broker": { "type": "string" }, "transactions": { "items": { "properties": { "externalId": { "type": "string" }, "feePLN": { "type": "number" }, "notes": { "description": "Optional audit note, e.g. import batch id or user-entered trade rationale.", "type": "string" }, "pricePLN": { "type": "number" }, "quantity": { "type": "number" }, "side": { "enum": [ "buy", "sell" ], "type": "string" }, "source": { "description": "Optional source of the transaction row. Defaults to broker_api.", "enum": [ "manual", "broker_api", "broker_screenshot_ocr", "telegram_bot", "csv_import" ], "type": "string" }, "symbol": { "type": "string" }, "tsIso": { "type": "string" } }, "required": [ "externalId", "symbol", "side", "quantity", "pricePLN", "tsIso" ], "type": "object" }, "type": "array" } }, "required": [ "broker", "account", "transactions" ], "type": "object" }, "name": "submit_broker_transactions", "outputSchema": null }, { "description": "Zgłoszenie błędu, pomysłu albo brakujących danych do zespołu Agenta Rynku.", "inputSchema": { "properties": { "callback_url": { "description": "Optional URL. Agent Rynku will POST { id, status, founderNote, updatedAt } when status changes.", "type": "string" }, "context": { "description": "Optional: co próbowałeś, expected vs actual behavior", "type": "string" }, "description": { "description": "Pełny opis (10-5000 znaków)", "type": "string" }, "owner": { "description": "WHO WORKS ON IT. Optional: defaults to the main coding agent, which is correct for almost every request. Override only when the work clearly belongs elsewhere, or pass 'operator' when the request exists purely to get a human decision. Unlike `reporter`, this moves as the work moves.", "type": "string" }, "priority": { "description": "Optional declared urgency: P0 is most urgent, P3 least urgent. Omit only when the request has not been ranked.", "enum": [ "P0", "P1", "P2", "P3" ], "type": "string" }, "reporter": { "description": "WHO IS FILING THIS: your own session name, e.g. 'BOSSA makler', 'XTB makler', 'AR PM'. Spaces and capitals are fine, they are folded for you ('AR PM' becomes 'ar-pm'). NEVER CHANGES afterwards - it is the record of where the report came from. A broker agent is a reporter on many tickets and the owner of none.", "type": "string" }, "title": { "description": "Krótki tytuł (3-200 znaków)", "type": "string" }, "type": { "enum": [ "feature", "bug", "improvement", "question" ], "type": "string" } }, "required": [ "type", "title", "description" ], "type": "object" }, "name": "submit_feature_request", "outputSchema": null }, { "description": "Wgranie stanu rachunku z zewnętrznego brokera.", "inputSchema": { "properties": { "account": { "description": "Account identifier: number, alias, or ''.", "type": "string" }, "asOfIso": { "description": "ISO 8601 timestamp from broker API.", "type": "string" }, "broker": { "description": "Broker identifier: 'xtb', 'bossa', 'mbank', etc.", "type": "string" }, "cashByCurrency": { "additionalProperties": { "type": [ "number", "null" ] }, "description": "Native multi-currency cash, keyed by ISO code, e.g. {\"PLN\": 22578, \"USD\": 144}. Preferred over cashPLN for multi-currency accounts (keeps USD/EUR cash in native currency — no manual FX conversion). Values are numbers or null; non-ISO keys ignored.", "type": "object" }, "cashPLN": { "description": "PLN cash balance (optional, legacy single-currency field).", "type": "number" }, "holdings": { "items": { "properties": { "avgPricePLN": { "description": "Average cost in PLN (broker's reporting currency).", "type": "number" }, "quantity": { "type": "number" }, "symbol": { "type": "string" }, "universe": { "description": "Optional asset universe. Defaults to polish-stocks.", "type": "string" } }, "required": [ "symbol", "quantity" ], "type": "object" }, "type": "array" }, "notes": { "type": "string" }, "totalEquityPLN": { "description": "Total equity for sanity check.", "type": "number" } }, "required": [ "broker", "account", "asOfIso", "holdings" ], "type": "object" }, "name": "submit_portfolio_snapshot", "outputSchema": null }, { "description": "Wielkość zlecenia z uwzględnieniem dostępnej gotówki na konkretnym rachunku.", "inputSchema": { "properties": { "broker": { "description": "Broker fee schedule to use. 'bossa' (0.291% min 5 PLN), 'xtb' (0% to 100k EUR MTD turnover, then 0.2% min 10 EUR), 'mbm' (0.39% min 5 PLN).", "enum": [ "bossa", "xtb", "mbm" ], "type": "string" }, "currentPrice": { "description": "Last known price PLN/share. If omitted, server reads price_history_daily.", "type": "number" }, "intent": { "description": "Direction. Affects commission for some brokers (currently none — symmetric — but kept for future).", "enum": [ "buy", "sell" ], "type": "string" }, "symbol": { "description": "Ticker. Used for commission calculation only — server canonicalizes for diagnostics.", "type": "string" }, "targetQty": { "description": "How many shares to transact total.", "type": "number" }, "xtbCurrentMtdEur": { "description": "XTB only: user's MTD stocks turnover EUR. Default 0 (assume tier-1 free). Used to compute when remaining order cliffs into 0.2% paid tier.", "type": "number" } }, "required": [ "broker", "intent", "targetQty" ], "type": "object" }, "name": "suggest_order_size", "outputSchema": null }, { "description": "Zapisanie zdarzenia, którego wpływ na cenę chcesz rozliczyć później.", "inputSchema": { "properties": { "alertRef": { "description": "Optional ObjectId of the alert that triggered this flag.", "type": "string" }, "eventType": { "description": "earnings_beat | earnings_miss | dividend | regulatory | ma_close | guidance_raise | product_launch | capacity_addition | contract_award.", "type": "string" }, "expectedDateIso": { "description": "ISO date or datetime when event is expected to occur.", "type": "string" }, "expectedDirection": { "description": "up | down - direction of expected price impact.", "type": "string" }, "expectedMagnitudePct": { "description": "Absolute magnitude in pct (e.g. 5 = 5%, sign in expectedDirection).", "type": "number" }, "note": { "description": "Free-text user note <=500 chars.", "type": "string" }, "probabilityEstimate": { "description": "0-100 confidence event will occur. Default 50.", "type": "number" }, "symbol": { "description": "Alias OR canonical symbol - server canonicalises.", "type": "string" }, "thesisRef": { "description": "Optional legacy user thesis id (old position_theses id, still recorded on the ledger claim).", "type": "string" } }, "required": [ "symbol", "eventType", "expectedDateIso", "expectedDirection", "expectedMagnitudePct" ], "type": "object" }, "name": "track_priced_event", "outputSchema": null }, { "description": "Zmiana reguły decyzyjnej.", "inputSchema": { "properties": { "patch": { "description": "Allowed fields: status active|paused|expired, cooldownMinutes 0-43200, expiresAt ISO|null.", "type": "object" }, "ruleId": { "description": "ObjectId hex of the rule.", "type": "string" } }, "required": [ "ruleId", "patch" ], "type": "object" }, "name": "update_decision_rule", "outputSchema": null }, { "description": "Zmiana szczegółów śledzonego zdarzenia.", "inputSchema": { "properties": { "eventId": { "description": "ObjectId hex of the event to update.", "type": "string" }, "expectedDateIso": { "description": "New expected date (ISO).", "type": "string" }, "expectedDirection": { "description": "up | down.", "type": "string" }, "expectedMagnitudePct": { "description": "0 < magnitude ≤ 100.", "type": "number" }, "note": { "description": "Free-text ≤500 chars (overwrites).", "type": "string" }, "probabilityEstimate": { "description": "0-100.", "type": "number" }, "thesisRef": { "description": "Cross-link to a legacy user thesis id (old position_theses id still recorded on the ledger claim, must belong to user). Empty string clears the link.", "type": "string" } }, "required": [ "eventId" ], "type": "object" }, "name": "update_priced_event", "outputSchema": null }, { "description": "Co się dziś rusza na rynku - największe zmiany sesji.", "inputSchema": { "properties": { "sigmaThreshold": { "description": "Min |move|/σ for the anomaly leg. Default 1.5.", "type": "number" }, "topAlerts": { "description": "How many recent material alerts (last 24h) to surface. Default 3, max 10.", "type": "number" }, "topAnomalies": { "description": "How many σ-anomalies (from all_covered scan) to surface. Default 5, max 10.", "type": "number" }, "topSectors": { "description": "How many sectors (by abs median move) to surface. Default 3, max 5.", "type": "number" }, "withNarrative": { "description": "If true, run a single Sonnet 4.6 call (~$0.05) that weaves sectors+anomalies+alerts+market context into a 2-4 sentence Polish hypothesis (LABELED). Default false.", "type": "boolean" } }, "required": [], "type": "object" }, "name": "whats_moving_now", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0cec40a1bfbc234296b2a08747cd097c1ff9aa0e9acd81ebf40c2eff923e9915 | sha256sum