Agent Rynku - Warsaw Stock Exchange (GPW) data for your agent
Qué hace este MCP
Provides Warsaw Stock Exchange market data, company filings, financial KPIs, forecasts, portfolio analysis, alerts, and investment research tools.
Herramientas
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Cap result size. Default 20, max 50.'}, 'symbol': {'type': 'string', 'description': 'Filter by symbol (canonicalised server-side).'}, 'dateIso': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD) — analyze all trades on that day.'}, 'externalId': {'type': 'string', 'description': 'Specific broker order ID to analyze.'}}}
Esquema de entrada
{'type': 'object', 'required': ['series', 'holdingsValuePLN'], 'properties': {'series': {'type': 'string', 'description': 'Catalyst series ticker, e.g. BST0930.'}, 'holdingsValuePLN': {'type': 'number', 'description': "User's bond position value at par: number of bonds × faceValue."}, 'redemptionPricePct': {'type': 'number', 'description': 'Redemption price as percent of par. Defaults to lastPricePct, then 100.'}}}
Esquema de entrada
{'type': 'object', 'required': ['eventId'], 'properties': {'reason': {'type': 'string', 'description': "Optional free-text reason ≤500 chars (overwrites the event's note field)."}, 'eventId': {'type': 'string', 'description': 'ObjectId hex of the priced event to cancel.'}}}
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Full 24-character feature request ObjectId or its final 8-character suffix.'}, 'owner': {'type': 'string', 'description': 'Optional handle of the agent claiming or releasing the request. Defaults to the API key identity.'}, 'release': {'type': 'boolean', 'description': 'Set to true to release a request you currently hold; defaults to false to claim it.'}, 'pomiarDzis': {'type': 'string', '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)."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max symbols to return, default 25'}, 'includeWatchlist': {'type': 'boolean', 'description': 'Include watchlist symbols alongside holdings'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbols'], 'properties': {'metrics': {'type': 'array', 'items': {'type': 'string'}, '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.'}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': '2-10 tickers. Server canonicalizes.'}}}
Esquema de entrada
{'type': 'object', 'required': ['ruleName', 'trigger', 'action'], 'properties': {'action': {'type': 'object', '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."}, 'trigger': {'type': 'object', '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."}, 'ruleName': {'type': 'string', 'description': 'Human-readable name, <=120 chars.'}, 'expiresAt': {'type': 'string', 'description': 'Optional ISO expiry. Null/omitted means no expiry.'}, 'cooldownMinutes': {'type': 'number', 'description': '0-43200. Default 60.'}}}
Esquema de entrada
{'type': 'object', 'required': ['ruleId'], 'properties': {'ruleId': {'type': 'string', 'description': 'ObjectId hex of the rule.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Default 50, max 200.'}, 'scope': {'enum': ['watchlist', 'portfolio', 'both', 'universe'], 'type': 'string', 'description': "Default 'both' (watchlist + portfolio). 'universe' scans the selected universe filter (expensive)."}, 'anchor': {'enum': ['52w_high', 'blended_avg_cost'], 'type': 'string', '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."}, 'minScore': {'type': 'number', 'description': 'PRO only. Default 55. Minimum overall Agent Rynku score, to avoid value traps. FREE uses the default.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks', 'all'], 'type': 'string', 'description': 'Alias of `universeFilter` (FR 063b45f0). Use whichever feels natural.'}, 'minDrawdownPct': {'type': 'number', 'description': "Default 15. Min drawdown % from 52w high to qualify as 'dip'."}, 'universeFilter': {'enum': ['polish-stocks', 'us-stocks', 'all'], 'type': 'string', 'description': "Default 'all' (mixed PL+US). Use 'polish-stocks' or 'us-stocks' to scope. Accepts `universe` as alias."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max results. Default 10, max 50.'}, 'sectorFilter': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional sector whitelist (e.g. ['Banki','Energetyka']). Empty = all sectors."}, 'excludeSymbols': {'type': 'array', 'items': {'type': 'string'}, 'description': "Symbols to exclude (e.g. user's current portfolio when looking for new ideas). Server canonicalizes."}, 'minSentimentAvg30d': {'type': 'number', 'description': 'Minimum sentimentAvg30d (-5..+5). Default unset (no sentiment gate). Use to bias towards momentum (e.g. 1).'}, 'minImpliedUpsidePct': {'type': 'number', 'description': 'PRO only: minimum forecast.impliedUpsidePct (vs spot) to include. Default 5; ignored for FREE when FREE/PRO is enabled.'}, 'forecastFreshnessDays': {'type': 'number', '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.'}, 'maxPriceSessionsMissed': {'type': 'number', '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."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Default 50, max 200.'}, 'scope': {'enum': ['watchlist', 'portfolio', 'both', 'universe'], 'type': 'string', 'description': "Default 'both' (watchlist + portfolio). 'universe' scans the selected universe filter (expensive)."}, 'maxScore': {'type': 'number', '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.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks', 'all'], 'type': 'string', 'description': 'Alias of `universeFilter` (FR 063b45f0). Use whichever feels natural.'}, 'minRunUpPct': {'type': 'number', 'description': 'Default 25.'}, 'universeFilter': {'enum': ['polish-stocks', 'us-stocks', 'all'], 'type': 'string', 'description': "Default 'all' (mixed PL+US). Use 'polish-stocks' or 'us-stocks' to scope. Accepts `universe` as alias."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'maxResults': {'type': 'number', 'description': 'Cap on opportunities returned (sorted by tax shield desc). Default 10, max 25.'}, 'minLossPLN': {'type': 'number', 'description': 'Min |unrealized loss| PLN to surface. Default 1000. Filters tiny noise positions.'}, 'sameSector': {'type': 'boolean', 'description': 'If true (default), include suggestedReplacement same-sector. False = pure loss listing without replacements.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'kind': {'type': 'string', 'description': 'all | thesis_attached | thesis_evaluated | thesis_status_change | event_resolved. Default all.'}, 'limit': {'type': 'number', 'description': '1-200, default 30.'}, 'sinceIso': {'type': 'string', 'description': 'Optional ISO timestamp — only entries after this point.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'channel': {'type': 'string', 'description': "Filter to one channel: 'telegram' | 'email' | 'webhook'. Default 'telegram'. Pass 'all' to mix."}, 'windowDays': {'type': 'number', 'description': 'Lookback window in days. Default 7, max 90.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max results. Default 20, max 100.'}, 'symbol': {'type': 'string', 'description': 'Optional symbol filter, e.g. KGHM.'}, 'sinceIso': {'type': 'string', 'description': 'ISO date. Return alerts after this date. Default: 7 days ago.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', '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.'}, 'classification': {'type': 'string', 'description': 'Optional: earnings | preliminary_results | earnings_conference | regulatory | ma | guidance | operational | other.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'symbol': {'type': 'string', 'description': 'Ticker spółki; serwer kanonikalizuje aliasy GPW.'}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, '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.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', '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.'}}}
Esquema de entrada
{'type': 'object', 'required': ['series'], 'properties': {'series': {'type': 'string', 'description': 'Catalyst series ticker, e.g. KRU1130.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max results. Default 25, max 100.'}, 'issuer': {'type': 'string', 'description': "Optional case-insensitive issuer substring, e.g. 'kruk' matches 'KRUK SA'."}, 'sector': {'enum': ['real_estate', 'consumer_finance', 'banking', 'industrial', 'renewables', 'logistics', 'health', 'other'], 'type': 'string'}, 'couponPctMin': {'type': 'number', 'description': 'Minimum current annual coupon percentage. Works for floating and fixed rate types.'}, 'marginPctMin': {'type': 'number', 'description': 'Minimum margin over the floating reference rate. Read referenceRate in each result for the exact tenor. Default unset.'}, 'includeMatured': {'type': 'boolean', 'description': 'If true include already matured series. Default false.'}, 'issuerEquitySymbol': {'type': 'string', 'description': 'Optional exact listed equity ticker, e.g. KRUK returns KRUK SA bonds.'}, 'maturityWithinDays': {'type': 'number', 'description': 'Only return series maturing within this many days from now.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}, 'perCategoryLimit': {'type': 'number', 'description': 'Max entries per category. Default 10.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'thresholds': {'type': 'object', 'properties': {'warningPct': {'type': 'number'}, 'criticalPct': {'type': 'number'}}, 'description': 'Optional override of {warningPct, criticalPct}. Default tied to risk tolerance. Apply same threshold to all 3 axes if provided.'}, 'topDriversPerSymbol': {'type': 'number', 'description': 'How many drivers per symbol to count toward driver-level exposure. Default 1 (primary), max 3.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'symbol': {'type': 'string', 'description': 'Optional single-symbol filter (canonicalized server-side).'}, 'daysAhead': {'type': 'number', 'description': 'Window in days. Default 60, max 365.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'limit': {'type': 'number', 'description': 'Max meetings (newest-first). Default 1.'}, 'symbol': {'type': 'string', 'description': 'Required. Server canonicalizes.'}, 'conferenceDate': {'type': 'string', 'description': 'Optional ISO date for a specific past conference. If omitted, returns the latest.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'market': {'enum': ['us-stocks', 'european-stocks'], 'type': 'string', 'description': 'Optional peer market filter.'}, 'symbol': {'type': 'string', 'description': 'Either side of the PL<->US mapping; server canonicalizes.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': 'Ticker spółki.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': "Symbols for forumSentyment, e.g. ['KGHM','XTB']. Max 20."}, 'includeForumSentiment': {'type': 'boolean', 'description': 'When true, append driver-like forumSentyment rows for provided symbols.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': "Optional filter. Server resolves canonical symbols before lookup. Default: all user's holdings and watchlist."}, 'daysAhead': {'type': 'number', 'description': 'Window in days. Default 60, max 365.'}, 'includePast': {'type': 'boolean', 'description': 'If true also returns lastEarningsDate alongside upcoming (default false — upcoming only).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max results (newest-first). Default 1.'}, 'symbol': {'type': 'string', 'description': 'Required. Server canonicalizes.'}, 'quarter': {'type': 'string', 'description': "Optional 'YYYY-Qn' (e.g. '2026-Q1'). Default: latest."}, 'symbols': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Opcjonalna lista tickerów do pobrania w jednym wywołaniu dla całego portfela.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Rolling calendar-day window over evaluatedAt (market time); takes precedence over sinceIso.'}, 'limit': {'type': 'number', 'description': 'Default 20, max 100. Response includes effectiveLimit and truncated=true when a larger request is capped.'}, 'symbol': {'type': 'string', 'description': 'Filter by single symbol (canonicalized server-side, e.g. KGH.PL → KGHM).'}, 'sinceIso': {'type': 'string', 'description': 'ISO8601 lower bound for evaluatedAt. Default: 90 days ago. Ignored when days is provided.'}, 'hitBandOnly': {'type': 'boolean', 'description': 'If true, only outcomes where hitBand=true (alerts that landed inside their predicted range).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'daysAhead': {'type': 'number', 'description': 'Forward window in calendar days. Default 30.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol', 'seriesId', 'currentObservationKey', 'asKnownAt'], 'properties': {'symbol': {'type': 'string', 'description': 'Symbol GPW, np. UNIMOT.'}, 'seriesId': {'type': 'string', 'description': 'Id serii z rejestru, np. fx.usd_pln_legacy_mixed.'}, 'asKnownAt': {'type': 'string', 'description': 'Kotwica wiedzy w ISO 8601.'}, 'currentObservationKey': {'type': 'string', 'description': 'Dokładny observationKey bieżącej obserwacji.'}, 'baselineObservationKey': {'type': 'string', 'description': 'Opcjonalny observationKey podstawy porównania.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Leaderboard size, 1-50 (default 10).'}, 'symbol': {'type': 'string', 'description': 'Optional GPW ticker.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'period': {'enum': ['1d', '1w'], 'type': 'string', 'description': "Lookback window. '1d' = last 24h, '1w' = last 7d. Default '1d'."}, 'symbol': {'type': 'string'}, 'intervalSec': {'enum': [3600], 'type': 'number', 'description': 'Bar interval in seconds. Only 3600 (1h) supported in Faza B; 15m/5m planned for a later phase.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbols'], 'properties': {'symbols': {'type': 'array', 'items': {'type': 'string'}, 'description': "1-10 tickers (e.g. ['KGHM','CDPROJEKT'])."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'symbolsScope': {'enum': ['portfolio', 'watchlist', 'both', 'all_covered'], 'type': 'string', '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."}, 'withSynthesis': {'type': 'boolean', '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.'}, 'sigmaThreshold': {'type': 'number', 'description': 'Min |move|/σ to flag. Default 1.5 (catches mid-magnitude moves). Use 2 for stricter, 1 for noisier.'}, 'includeMarketContext': {'type': 'boolean', 'description': "If true, also return WIG / WIG20 / mWIG40 / sWIG80 today's change as context. Default true."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'days': {'type': 'number', 'maximum': 365, 'minimum': 1, 'description': 'Lookback window in days. Default 90, max 365. Preferred over the legacy windowDays alias.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', '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.'}, 'windowDays': {'type': 'number', 'maximum': 365, 'minimum': 1, 'description': 'Deprecated alias for days, retained for existing clients. Do not pass both unless the values match.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'limit': {'type': 'number', 'description': 'Max results. Default 20, max 100.'}, 'symbol': {'type': 'string', 'description': 'Required. Server canonicalizes.'}, 'sources': {'type': 'array', 'items': {'enum': ['gpw-espi', 'gpw-espi-archive', 'pap:biznes', 'strefa-inwestorow', 'bankier:gielda', 'comparic:feed', 'stockwatch:forum', 'eodhd-news'], 'type': 'string'}, '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."}, 'sinceIso': {'type': 'string', 'description': 'ISO date. Default 30 days ago.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', '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.'}, 'classification': {'type': 'string', 'description': 'Optional: earnings | preliminary_results | earnings_conference | regulatory | ma | guidance | operational | sentiment | macro | management | other.'}, 'includeOtherSubjects': {'type': 'boolean', '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."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'windowHours': {'type': 'number', '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).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'period': {'enum': ['30d', '90d', '1y', 'ytd'], 'type': 'string', 'default': '30d', 'description': 'Lookback period. Default 30d.'}, 'benchmark': {'enum': ['WIG', 'SPY', 'QQQ'], 'type': 'string', 'description': 'Optional benchmark series. WIG (polish-stocks beta), SPY (broad US beta), QQQ (US growth/AI tilt).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'include': {'type': 'array', 'items': {'enum': ['holdings', 'profile', 'watchlist', 'alerts', 'snapshots', 'drivers', 'risk'], 'type': 'string'}, '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.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'broker': {'type': 'string', 'description': 'Optional broker filter, e.g. xtb or bossa.'}, 'account': {'type': 'string', 'description': 'Optional account filter.'}, 'curveLimit': {'type': 'number', 'description': 'Max equityCurve points returned. Default 260, max 750.'}, 'periodDays': {'type': 'number', 'description': 'Lookback window in calendar days. Default 365, max 1825.'}, 'excludeTestBrokers': {'type': 'boolean', 'description': 'Default true for combined scope. Excludes broker/account test or audit rows unless explicitly disabled.'}, 'includeOpeningBalance': {'type': 'boolean', 'description': 'Default true. Adds synthetic opening-balance buys from current holdings when broker_transactions history is incomplete.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'days': {'type': 'number', 'default': 180, 'maximum': 730, 'minimum': 1, 'description': 'Lookback in calendar days. Default 180, maximum 730.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': '1-200, default 50.'}, 'status': {'type': 'string', 'description': 'pending | resolved | cancelled | all. Default: pending.'}, 'symbol': {'type': 'string', 'description': 'Optional symbol filter.'}, 'universe': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', 'description': 'Optional universe scope. Joins through assets to restrict by symbol universe. Accepts `universeFilter` as alias.'}, 'eventType': {'type': 'string', 'description': 'Optional event-type filter.'}, 'universeFilter': {'enum': ['polish-stocks', 'us-stocks'], 'type': 'string', 'description': 'Alias of `universe`.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'Exact rolling lookback in calendar days; takes precedence over period. Max 365 for daily and 7 for intraday intervals.'}, 'period': {'enum': ['1d', '1w', '30d', '90d', '1y'], 'type': 'string', 'description': 'Lookback period (default 30d for daily, 1d for intraday)'}, 'symbol': {'type': 'string'}, 'interval': {'enum': ['1d', '1h', '15min', '5min'], 'type': 'string', 'description': "Bar size. '1d' (default) -> daily candles, period 30d/90d/1y. '1h'/'15min'/'5min' -> intraday, period clamped to 1d/1w. Requires EODHD intraday subscription."}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string', 'description': "Required. XTB-style 'KGH.PL' canonicalized."}, 'quartersBack': {'type': 'number', 'description': 'How many recent quarters to return. Default 8, max 20.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'horizonDays': {'type': 'number', 'default': 21, 'maximum': 120, 'minimum': 1, 'description': 'Horyzont zwrotu forward w dniach kalendarzowych. Default 21. Ta sama liczba wyznacza odstep, przy ktorym okna uznaje sie za niezalezne.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'year': {'type': 'number', 'description': 'Calendar year (default current)'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}, 'eventId': {'type': 'string', 'description': 'Exact report-event id (24 hex chars) when you already have one; overrides `quarter`.'}, 'quarter': {'type': 'string', 'description': "Target quarter as YYYY-Qn, e.g. 2026-Q2. Omit for the company's most recent report."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'kind': {'type': 'string', 'description': 'Opcjonalny filtr rodzaju sygnału, np. opportunity | risk.'}, 'symbol': {'type': 'string', 'description': 'Opcjonalny ticker; serwer kanonikalizuje aliasy GPW.'}, 'universe': {'type': 'string', 'description': 'Opcjonalne uniwersum: polish-stocks | us-stocks. Domyślnie wszystkie.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'default': 20, 'maximum': 50, 'description': 'Maksymalna liczba pozycji. Default 20, max 50.'}, 'runId': {'type': 'string', 'pattern': '^[a-fA-F0-9]{24}$', 'description': 'Identyfikator opublikowanego runu wybranej kategorii.'}, 'dateKey': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Data opublikowanego runu wybranej kategorii. Brak nigdy nie wraca do bieżącego dnia.'}, 'category': {'enum': ['overall', 'defensive', 'dividend', 'growth'], 'type': 'string', 'default': 'overall', 'description': 'Ranking category. overall sorts by Agent Rynku score; growth, dividend, and defensive sort by category fit. Default: overall.'}, 'minAdvPLN': {'type': 'number', '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).'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'days': {'type': 'number', 'description': 'Price-history lookback window for momentum/risk. Default 365, min 90, max 730.'}, 'symbol': {'type': 'string', 'description': 'GPW symbol or broker alias, e.g. KGHM, KGH.PL, ASBIS.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Maksymalna liczba wyników. Domyślnie 5, maksymalnie 20.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'topN': {'type': 'number', 'description': 'Default 10. Max concentration rows in response.'}, 'baseCurrency': {'enum': ['PLN', 'USD'], 'type': 'string', 'description': "Default 'PLN'. USD requires usdPlnRate driver - falls back to PLN with warning if missing."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'side': {'enum': ['buy', 'sell'], 'type': 'string', 'description': 'Optional transaction side filter.'}, 'limit': {'type': 'number', 'maximum': 200, 'minimum': 1, 'description': 'Maximum rows to return. Default 50, max 200.'}, 'broker': {'type': 'string', 'description': 'Optional broker filter (normalized to lowercase).'}, 'symbol': {'type': 'string', 'description': 'Optional symbol filter (normalized to uppercase).'}, 'sinceIso': {'type': 'string', 'description': 'Optional ISO timestamp; only transactions at or after it are returned.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol'], 'properties': {'limit': {'type': 'number', 'description': 'Max meetings to return (newest-first). Default 1. Use 5+ for historical comparison.'}, 'symbol': {'type': 'string', 'description': 'Required. Server canonicalizes.'}, 'wzaDate': {'type': 'string', 'description': 'Optional ISO date for a specific past WZA. If omitted, returns the latest.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol', 'eventType'], 'properties': {'symbol': {'type': 'string', 'description': 'Alias OR canonical symbol.'}, 'eventType': {'type': 'string', 'description': 'earnings_beat | earnings_miss | dividend | regulatory | ma_close | guidance_raise | product_launch | capacity_addition | contract_award.'}, 'lookbackQuarters': {'type': 'number', 'description': '1-20, default 8 (≈2 years for dividends — typical GPW issuers pay annually so this captures 1-2 events per stock).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': '1-100, default 20.'}, 'ruleId': {'type': 'string', 'description': 'Optional ObjectId filter to a specific rule.'}, 'status': {'enum': ['pending', 'confirmed', 'rejected', 'all'], 'type': 'string', 'description': 'Default pending.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Default 50, max 200.'}, 'statusFilter': {'enum': ['active', 'paused', 'expired'], 'type': 'string', 'description': 'Optional status filter.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'sort': {'enum': ['priority', 'newest', 'oldest'], 'type': 'string', '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."}, 'brief': {'type': 'boolean', 'description': 'Headline mode: id, type, status, title, priority, createdAt, updatedAt, truncated founderNote, autoImplAttempts. Omits description and autoImplLastError.'}, 'limit': {'type': 'number', 'description': 'Default 20, max 50.'}, 'owner': {'type': 'string', 'description': "Optional filter by owner handle. 'operator' finds what needs a human decision, 'unassigned' finds requests nobody owns."}, 'offset': {'type': 'number', '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."}, 'status': {'enum': ['pending', 'reviewing', 'triaged', 'planned', 'in_progress', 'implemented', 'blocked', 'deferred', 'shipped', 'wontdo', 'duplicate'], 'type': 'string', 'description': 'Optional filter.'}, 'priority': {'enum': ['P0', 'P1', 'P2', 'P3'], 'type': 'string', '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."}, 'reporter': {'type': 'string', '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."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': '1-100, default 20.'}, 'sourceFilter': {'enum': ['tradingview', 'n8n', 'custom'], 'type': 'string', 'description': 'Optional source filter.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'date': {'type': 'string', 'description': 'Optional YYYY-MM-DD. Defaults to latest WIG20 driver history date.'}, 'topN': {'type': 'number', 'description': 'How many ranked drivers to return. Default 6, max 12.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'channels': {'type': 'array', 'items': {'enum': ['telegram', 'email', 'webhook'], 'type': 'string'}, 'description': 'Active alert channels. SMS not yet supported. Empty array silences alerts entirely.'}, 'alertWeighting': {'enum': ['flat', 'portfolio_first'], 'type': 'string', '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."}, 'notificationEmail': {'type': 'string', 'description': 'Override email (null clears, falling back to UserDoc.email).'}, 'impactThresholdPct': {'type': 'number', '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.'}, 'espiCommunicationsEnabled': {'type': 'boolean', '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.'}, 'mutedAlertClassifications': {'type': 'array', 'items': {'enum': ['earnings', 'preliminary_results', 'earnings_conference', 'guidance', 'ma', 'regulatory', 'management', 'operational', 'macro', 'sentiment', 'other'], 'type': 'string'}, 'description': 'Mute-lista klasyfikacji alertów — te typy nie będą wysyłane jako alerty o nowych zdarzeniach. Pusta = nic nie wyciszone.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'add': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol', 'quantity'], 'properties': {'notes': {'type': 'string'}, 'symbol': {'type': 'string'}, 'quantity': {'type': 'number'}, 'universe': {'type': 'string'}, 'avgCostPLN': {'type': 'number'}}}}, 'remove': {'type': 'array', 'items': {'oneOf': [{'type': 'string'}, {'type': 'object', 'required': ['symbol', 'broker'], 'properties': {'broker': {'type': 'string'}, 'symbol': {'type': 'string'}, 'account': {'type': 'string'}}}]}, 'description': 'A symbol string removes only manual entries. Use {symbol, broker, account?} to remove a specific broker-synced position.'}, 'update': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol'], 'properties': {'notes': {'type': 'string'}, 'broker': {'type': 'string', 'description': 'Broker identifier for a broker-synced position. Omit for manual-only matching.'}, 'symbol': {'type': 'string'}, 'account': {'type': 'string', 'description': 'Broker account identifier. Defaults to an empty string when broker is provided.'}, 'quantity': {'type': 'number'}, 'avgCostPLN': {'type': 'number'}}}}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'about': {'type': 'string', 'description': 'Free-form self-description, ≤2000 chars.'}, 'confirmed': {'type': 'boolean', '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.'}, 'constraints': {'type': 'string', 'description': 'Constraints / no-go list, ≤2000 chars.'}, 'tradingStyle': {'enum': ['long-term', 'swing', 'day-trade', 'mixed'], 'type': 'string'}, 'riskTolerance': {'enum': ['conservative', 'moderate', 'aggressive'], 'type': 'string'}, 'defaultHorizonMonths': {'type': 'number', 'description': '1..120. Investment horizon in months.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'add': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Symbols to add (uppercased server-side).'}, 'remove': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Symbols to remove.'}, 'setAlarm': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol', 'price'], 'properties': {'price': {'type': ['number', 'null'], 'description': "Price in the market's native currency. Pass null to clear the alarm."}, 'symbol': {'type': 'string'}, 'direction': {'enum': ['above', 'below'], 'type': 'string', 'description': 'Optional crossing direction; inferred from the latest known price when omitted.'}}}, 'description': "Set, re-arm, or clear one-shot price alarms. Example: `setAlarm: [{symbol: 'KGHM', price: 130, direction: 'below'}]`."}, 'universe': {'type': 'string', '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."}, 'setThreshold': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol'], 'properties': {'symbol': {'type': 'string'}, 'minImpactPct': {'type': 'number', '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.'}, 'minSentimentAbs': {'type': 'number', 'description': 'Minimum |sentiment| (0..5) to fire — independent of impact. 0 = no gate.'}}}, 'description': 'Set per-asset notification threshold for one or more symbols already in the watchlist. Symbols not yet on the watchlist are auto-added.'}}}
Esquema de entrada
{'type': 'object', 'required': ['message'], 'properties': {'silent': {'type': 'boolean', 'description': 'If true, neither user message nor reply is persisted. Use for cron-driven agent checks. Default false.'}, 'message': {'type': 'string', 'description': 'Question/message in Polish.'}, 'agentLabel': {'type': 'string', 'description': "Optional tag (e.g. 'Claude-makler', 'PortfolioBot-1'). Persists the call but flags it as agent-origin so summarizer + RAG skip it."}, 'reasoningMode': {'enum': ['minimal', 'standard', 'verbose'], 'type': 'string', 'description': 'Anti-slop guardrail: minimal = final answer only, standard = default natural prose, verbose = explicit data→fakt→implikacja→wniosek chain with ≥3 sources cited.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max rows, default 20, max 50'}, 'minAdvPLN': {'type': 'number', 'default': 1000000, 'minimum': 0, 'description': 'Minimum average daily turnover in PLN. Default 1000000; set 0 to disable.'}, 'maxQuarterAgeDays': {'type': 'number', 'default': 180, 'minimum': 0, '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.'}, 'minBaseRevenuePLN': {'type': 'number', 'default': 5000000, 'minimum': 0, 'description': 'Minimum revenue in the comparison quarter, in PLN. Default 5000000; set 0 to retain micro-base rows (flagged with microBase).'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Maksymalna liczba spółek. Default 20, max 50.'}, 'theme': {'type': 'string', 'description': 'Opcjonalny id tematu, np. ai, gaming, defense. Bez argumentu narzędzie zwraca tematy dostępne do rankingu.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'exclude': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Symbols to omit from this response. The server canonicalizes GPW and broker aliases; this list is not stored.'}, 'candidatesPerSector': {'type': 'number', 'description': 'How many ranked candidates to return per under-represented sector. Default 2, max 5.'}, 'minImpliedUpsidePct': {'type': 'number', 'description': 'Forwarded to the underlying find_opportunities scoring. Default 5.'}, 'underweightThresholdPct': {'type': 'number', 'description': 'Sector treated as under-represented when current weight < threshold. Default 5pp.'}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol', 'conviction'], 'properties': {'symbol': {'type': 'string', 'description': 'Required ticker. Server canonicalizes GPW aliases.'}, 'account': {'type': 'object', 'required': ['broker'], 'properties': {'broker': {'type': 'string', 'description': 'Broker key as returned in availableCashByAccount, e.g. bossa, xtb, mbank.'}, 'account': {'type': 'string', 'description': 'Account id or type, e.g. 164655 or IKE. Omit to sum every account of that broker.'}}, '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).'}, 'conviction': {'oneOf': [{'enum': ['high', 'medium', 'low'], 'type': 'string'}, {'type': 'number', 'maximum': 10, 'minimum': 1}], 'description': 'Conviction level. Strings high/medium/low or numeric 1-10 (7-10 high, 4-6 medium, 1-3 low).'}, 'stopLossPct': {'type': 'number', 'maximum': 100, '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}, 'availableCash': {'type': 'number', 'description': 'Cash available for the position, in PLN. Optional; defaults to portfolio cash when omitted. Mutually exclusive with `account`.'}, 'holdingPeriodMonths': {'type': 'number', 'description': 'Optional intended holding period. Defaults to user.profile.defaultHorizonMonths; reserved for future horizon-aware tuning.'}}}
Esquema de entrada
{'type': 'object', 'required': ['eventId'], 'properties': {'eventId': {'type': 'string', 'description': 'ObjectId hex of the priced event to resolve.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'number', 'description': 'Max candidates. Default 8, max 100.'}, 'universe': {'type': 'string', 'description': "Universe to scan. Default 'polish-stocks' (currently supported universe)."}, 'peThreshold': {'type': 'number', 'description': 'Max forward P/E to include. Default 15; symbols above threshold are dropped.'}, 'excludeSectors': {'type': 'array', 'items': {'type': 'string'}, 'description': "Sector names to omit, e.g. ['Energetyka']."}, 'excludeSymbols': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Symbols to omit. Server canonicalizes XTB-style tickers.'}, 'pricingInPenaltyWeight': {'type': 'number', '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.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'limit': {'type': 'integer', 'default': 30, 'maximum': 50, 'minimum': 1, 'description': 'Ile spółek spełniających warunki (i osobno nierozstrzygniętych) pokazać.'}, 'wybicie': {'type': 'boolean', 'description': 'true: tylko spółki z wybiciem, czyli zamknięciem powyżej maksimum okna przy wolumenie powyżej krotności średniej.'}, 'wybicieMiesiecy': {'type': 'integer', 'default': 6, 'maximum': 12, 'minimum': 1, 'description': 'Długość okna maksimum w miesiącach. Tylko razem z wybicie: true.'}, 'insiderzyNabycia': {'type': 'boolean', '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).'}, 'insiderzyOknoDni': {'type': 'integer', 'default': 90, 'maximum': 365, 'minimum': 1, 'description': 'Okno powiadomień insiderów w dniach. Tylko razem z insiderzyNabycia: true.'}, 'wybicieSesjiWstecz': {'type': 'integer', 'default': 1, 'maximum': 10, 'minimum': 1, 'description': 'Wybicie w którejkolwiek z tylu ostatnich sesji. Tylko razem z wybicie: true.'}, 'wybicieWolumenRazy': {'type': 'number', 'default': 2, 'maximum': 10, 'description': 'Ile razy wolumen sesji ma przewyższać średnią z 20 poprzednich sesji (porównanie ścisłe). Tylko razem z wybicie: true.', 'exclusiveMinimum': 1}, 'kapitalizacjaMaxPLN': {'type': 'number', 'minimum': 0, 'description': 'Maksymalna kapitalizacja w złotych, włącznie.'}, 'kapitalizacjaMinPLN': {'type': 'number', 'minimum': 0, 'description': 'Minimalna kapitalizacja w złotych (np. 200000000 dla 200 mln zł), włącznie.'}, 'dynamikaEbitdaRrMaxPct': {'type': 'number', 'description': 'Maksymalna zmiana EBITDA rok do roku w procentach, włącznie.'}, 'dynamikaEbitdaRrMinPct': {'type': 'number', 'description': 'Minimalna zmiana EBITDA ostatniego kwartału wobec tego samego kwartału rok wcześniej, w procentach (np. 20 dla +20%), włącznie.'}, 'dynamikaPrzychodowRrMaxPct': {'type': 'number', 'description': 'Maksymalna zmiana przychodów rok do roku w procentach, włącznie.'}, 'dynamikaPrzychodowRrMinPct': {'type': 'number', 'description': 'Minimalna zmiana przychodów ostatniego kwartału wobec tego samego kwartału rok wcześniej, w procentach, włącznie.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'universe': {'enum': ['all_covered', 'portfolio', 'watchlist', 'both'], 'type': 'string', '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."}, 'topMoversPerSector': {'type': 'number', 'description': 'How many extreme movers to return per sector (sorted by |change|). Default 2, max 5.'}, 'minSymbolsPerSector': {'type': 'number', 'description': "Skip sectors with fewer covered symbols than this. Default 2 (avoids 1-stock 'sectors'). Max 10."}, 'includeMarketContext': {'type': 'boolean', 'description': "If true, also return WIG / WIG20 / mWIG40 / sWIG80 today's change for cross-reference. Default true."}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'tone': {'enum': ['kumpel', 'neutralny', 'formalny'], 'type': 'string', 'description': 'kumpel = luźny forumowicz-trader, neutralny = rzeczowo, formalny = profesjonalny rejestr.'}, 'emoji': {'type': 'boolean', 'description': 'true = emoji dozwolone, false = całkowicie bez emoji.'}, 'focus': {'type': 'array', 'items': {'enum': ['portfel', 'makro', 'tezy', 'ryzyko', 'newsy'], 'type': 'string'}, 'description': 'Obszary na których agent ma się skupiać. Pusta tablica = wszystko.'}, 'jargon': {'enum': ['laik', 'standard', 'pro'], 'type': 'string', 'description': 'laik = tłumacz terminy, pro = pełny żargon rynkowy bez tłumaczenia.'}, 'verbosity': {'enum': ['zwiezle', 'standard', 'szczegolowo'], 'type': 'string', 'description': 'Długość odpowiedzi.'}}}
Esquema de entrada
{'type': 'object', 'required': ['broker', 'account', 'currency', 'amount'], 'properties': {'amount': {'type': 'number', 'minimum': 0, 'description': 'Stan po zmianie w walucie natywnej (nie delta).'}, 'broker': {'type': 'string', 'description': 'Identyfikator brokera, np. xtb.'}, 'account': {'type': 'string', 'description': 'Numer lub alias konta.'}, 'currency': {'enum': ['PLN', 'USD', 'EUR'], 'type': 'string'}}}
Esquema de entrada
{'type': 'object', 'required': ['verdict'], 'properties': {'alertId': {'type': 'string', 'description': 'Hex alertId from get_alerts. Server resolves the underlying evaluationId.'}, 'verdict': {'enum': ['hit', 'miss', 'spam'], 'type': 'string', '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)."}, 'evaluationId': {'type': 'string', 'description': 'Alternative: hex evaluationId directly.'}}}
Esquema de entrada
{'type': 'object', 'required': ['broker', 'account', 'transactions'], 'properties': {'broker': {'type': 'string'}, 'account': {'type': 'string'}, 'transactions': {'type': 'array', 'items': {'type': 'object', 'required': ['externalId', 'symbol', 'side', 'quantity', 'pricePLN', 'tsIso'], 'properties': {'side': {'enum': ['buy', 'sell'], 'type': 'string'}, 'notes': {'type': 'string', 'description': 'Optional audit note, e.g. import batch id or user-entered trade rationale.'}, 'tsIso': {'type': 'string'}, 'feePLN': {'type': 'number'}, 'source': {'enum': ['manual', 'broker_api', 'broker_screenshot_ocr', 'telegram_bot', 'csv_import'], 'type': 'string', 'description': 'Optional source of the transaction row. Defaults to broker_api.'}, 'symbol': {'type': 'string'}, 'pricePLN': {'type': 'number'}, 'quantity': {'type': 'number'}, 'externalId': {'type': 'string'}}}}}}
Esquema de entrada
{'type': 'object', 'required': ['type', 'title', 'description'], 'properties': {'type': {'enum': ['feature', 'bug', 'improvement', 'question'], 'type': 'string'}, 'owner': {'type': 'string', '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."}, 'title': {'type': 'string', 'description': 'Krótki tytuł (3-200 znaków)'}, 'context': {'type': 'string', 'description': 'Optional: co próbowałeś, expected vs actual behavior'}, 'priority': {'enum': ['P0', 'P1', 'P2', 'P3'], 'type': 'string', 'description': 'Optional declared urgency: P0 is most urgent, P3 least urgent. Omit only when the request has not been ranked.'}, 'reporter': {'type': 'string', '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."}, 'description': {'type': 'string', 'description': 'Pełny opis (10-5000 znaków)'}, 'callback_url': {'type': 'string', 'description': 'Optional URL. Agent Rynku will POST { id, status, founderNote, updatedAt } when status changes.'}}}
Esquema de entrada
{'type': 'object', 'required': ['broker', 'account', 'asOfIso', 'holdings'], 'properties': {'notes': {'type': 'string'}, 'broker': {'type': 'string', 'description': "Broker identifier: 'xtb', 'bossa', 'mbank', etc."}, 'account': {'type': 'string', 'description': "Account identifier: number, alias, or ''."}, 'asOfIso': {'type': 'string', 'description': 'ISO 8601 timestamp from broker API.'}, 'cashPLN': {'type': 'number', 'description': 'PLN cash balance (optional, legacy single-currency field).'}, 'holdings': {'type': 'array', 'items': {'type': 'object', 'required': ['symbol', 'quantity'], 'properties': {'symbol': {'type': 'string'}, 'quantity': {'type': 'number'}, 'universe': {'type': 'string', 'description': 'Optional asset universe. Defaults to polish-stocks.'}, 'avgPricePLN': {'type': 'number', 'description': "Average cost in PLN (broker's reporting currency)."}}}}, 'cashByCurrency': {'type': 'object', '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.', 'additionalProperties': {'type': ['number', 'null']}}, 'totalEquityPLN': {'type': 'number', 'description': 'Total equity for sanity check.'}}}
Esquema de entrada
{'type': 'object', 'required': ['broker', 'intent', 'targetQty'], 'properties': {'broker': {'enum': ['bossa', 'xtb', 'mbm'], 'type': 'string', '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)."}, 'intent': {'enum': ['buy', 'sell'], 'type': 'string', 'description': 'Direction. Affects commission for some brokers (currently none — symmetric — but kept for future).'}, 'symbol': {'type': 'string', 'description': 'Ticker. Used for commission calculation only — server canonicalizes for diagnostics.'}, 'targetQty': {'type': 'number', 'description': 'How many shares to transact total.'}, 'currentPrice': {'type': 'number', 'description': 'Last known price PLN/share. If omitted, server reads price_history_daily.'}, 'xtbCurrentMtdEur': {'type': 'number', '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."}}}
Esquema de entrada
{'type': 'object', 'required': ['symbol', 'eventType', 'expectedDateIso', 'expectedDirection', 'expectedMagnitudePct'], 'properties': {'note': {'type': 'string', 'description': 'Free-text user note <=500 chars.'}, 'symbol': {'type': 'string', 'description': 'Alias OR canonical symbol - server canonicalises.'}, 'alertRef': {'type': 'string', 'description': 'Optional ObjectId of the alert that triggered this flag.'}, 'eventType': {'type': 'string', 'description': 'earnings_beat | earnings_miss | dividend | regulatory | ma_close | guidance_raise | product_launch | capacity_addition | contract_award.'}, 'thesisRef': {'type': 'string', 'description': 'Optional legacy user thesis id (old position_theses id, still recorded on the ledger claim).'}, 'expectedDateIso': {'type': 'string', 'description': 'ISO date or datetime when event is expected to occur.'}, 'expectedDirection': {'type': 'string', 'description': 'up | down - direction of expected price impact.'}, 'probabilityEstimate': {'type': 'number', 'description': '0-100 confidence event will occur. Default 50.'}, 'expectedMagnitudePct': {'type': 'number', 'description': 'Absolute magnitude in pct (e.g. 5 = 5%, sign in expectedDirection).'}}}
Esquema de entrada
{'type': 'object', 'required': ['ruleId', 'patch'], 'properties': {'patch': {'type': 'object', 'description': 'Allowed fields: status active|paused|expired, cooldownMinutes 0-43200, expiresAt ISO|null.'}, 'ruleId': {'type': 'string', 'description': 'ObjectId hex of the rule.'}}}
Esquema de entrada
{'type': 'object', 'required': ['eventId'], 'properties': {'note': {'type': 'string', 'description': 'Free-text ≤500 chars (overwrites).'}, 'eventId': {'type': 'string', 'description': 'ObjectId hex of the event to update.'}, 'thesisRef': {'type': 'string', '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.'}, 'expectedDateIso': {'type': 'string', 'description': 'New expected date (ISO).'}, 'expectedDirection': {'type': 'string', 'description': 'up | down.'}, 'probabilityEstimate': {'type': 'number', 'description': '0-100.'}, 'expectedMagnitudePct': {'type': 'number', 'description': '0 < magnitude ≤ 100.'}}}
Esquema de entrada
{'type': 'object', 'required': [], 'properties': {'topAlerts': {'type': 'number', 'description': 'How many recent material alerts (last 24h) to surface. Default 3, max 10.'}, 'topSectors': {'type': 'number', 'description': 'How many sectors (by abs median move) to surface. Default 3, max 5.'}, 'topAnomalies': {'type': 'number', 'description': 'How many σ-anomalies (from all_covered scan) to surface. Default 5, max 10.'}, 'withNarrative': {'type': 'boolean', '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.'}, 'sigmaThreshold': {'type': 'number', 'description': 'Min |move|/σ for the anomaly leg. Default 1.5.'}}}
Cambios recientes en herramientas
Servidores MCP similares
AlpineDataWorks Intelligence Server
Provides economic, market, supply-chain, real-estate, energy, consumer, labor, and other scored intelligence indices with histori…
Stratalize Finance
Provides financial, macroeconomic, banking, credit, commodities, M&A, ESG, labor, and regulatory benchmarks for analysis and plan…
Valuein — SEC EDGAR Fundamentals & Smart-Money Data
Provides point-in-time SEC EDGAR fundamentals, filings, ownership signals, financial analysis, valuation models, research reports…
equibles
Provides equity and market research tools covering SEC filings, company financials, portfolios, prices, options, macroeconomic da…
DFX Real Estate Intelligence
Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…
simplefunctions
Provides prediction-market data, thesis analysis, market signals, portfolio tracking, and automated intent-based trading workflow…
EventTrader MCP
Provides prediction-market research and trading capabilities, including real-time event-market data, CLOB execution paths, fund i…
Signal8
Provides SEC filings, dilution data, insider and institutional ownership, and political-trade data.