Skip to content
Join the waitlist

Zentrix MCP tool reference

The Zentrix MCP server exposes live stock market data, news, sentiment, alerts, and portfolio tools to any MCP-compatible AI assistant. Every tool below is grouped by category, with its parameters.

Authentication

Most tools operate on the authenticated user's account (watchlist, holdings, alerts, usage). A few are public and require no authentication: watchlist_default_get and market_status.

Watchlist

Scroll the table horizontally to see all columns.

Tool Description Key parameters
watchlist_get Current watchlist with live prices, day-change %, and market state. None
watchlist_add Add a ticker to the watchlist. ticker
watchlist_recap One-shot gainers/losers/news summary across the watchlist. None
watchlist_default_get Live snapshot of a curated public watchlist (e.g. "Big Tech", "AI Stocks"). name

watchlist_recap combines price data with news but excludes sentiment scores by default. Call sentiment_for_ticker separately if needed.

Portfolio

Scroll the table horizontally to see all columns.

Tool Description Key parameters
portfolio_analysis Value-weighted position and sector exposure on user-entered holdings; reports missing or stale price data explicitly. None
portfolio_changes Read the existing owner's bounded changes page, with the same event IDs, versions, facts, coverage, and exposure projection as the app. symbol, kind, cursor (all optional)
portfolio_briefing Read the latest retained factual briefing or an exact immutable snapshot and page shared with the app and email. snapshotId, version, cursor (all optional; version/cursor require snapshotId)

portfolio_analysis reports exposure; portfolio_changes and portfolio_briefing report factual changes and retained briefings. None infers suitability or presents output as a trade recommendation.

Market Data

Scroll the table horizontally to see all columns.

Tool Description Key parameters
stock_search Resolve a ticker or company name fragment to matching symbols. query
stock_chart_summary Price/volume chart data plus key metrics (open, day range, 52-week range, market cap, EPS, P/E) and a plain-English trend summary. symbol, timeframe (1D/5D/1M/6M/YTD/1Y/5Y/MAX)
market_status Whether the US market is currently open. None

News & Sentiment

Scroll the table horizontally to see all columns.

Tool Description Key parameters
news_web_search Live web-sourced headlines (6-8 most recent) with source, recency, and per-item bullish/neutral/bearish tag. ticker
news_for_ticker Structured article feed (up to 25) plus a live web-analysis summary, combined in one response. ticker, limit (default 10)
sentiment_for_ticker Aggregate 0-100 sentiment score with a short AI-generated summary; cached 24h per ticker. ticker

news_web_search is always live; sentiment_for_ticker is a cached aggregate. Use accordingly depending on whether the caller needs freshness or a single summarized score.

Alerts

Scroll the table horizontally to see all columns.

Tool Description Key parameters
alert_set Set a one-shot price alert (email on trigger). ticker, conditionType (price_below/price_above), thresholdPrice
alert_list List alerts grouped by active / triggered / paused. None
alert_update Change an existing alert's threshold/direction and re-arm it. alertId, ...
alert_pause Pause an active alert. alertId
alert_resume Re-arm a triggered or paused alert. alertId
alert_cancel Cancel a single alert. alertId
alert_cancel_all Cancel all active alerts. None

Alerts auto-pause after triggering (no repeat notifications). Only active alerts count toward the per-user alert limit; if the limit is reached, alert_set returns the active list so one can be paused to make room.

Earnings

Scroll the table horizontally to see all columns.

Tool Description Key parameters
earnings_calendar Market-wide upcoming earnings dates: company, fiscal quarter, BMO/AMC timing, EPS estimate/actual. tickers (optional filter), daysAhead (default 14, max 90)

Refreshed nightly from a bulk earnings provider; served instantly from the Zentrix database.

Account & Usage

Scroll the table horizontally to see all columns.

Tool Description Key parameters
usage_status Current daily API usage: calls used/remaining, tier, reset time. None

Returns a low-balance warning when 3 or fewer calls remain for the day.

Portfolio changes and retained briefings

These two tools require an existing, confirmed, unlocked account with an exact linked OAuth identity. The server resolves the owner from authentication; neither tool accepts an owner ID or links or creates an account. They share your existing daily MCP budget and entitlement boundaries. Reads do not change read/saved state, holdings, orders, delivery preferences, or briefings, and never compile, approve, or send an email.

Inputs and pagination

portfolio_changes: omit all arguments for the first page. Optional symbol is a followed or held ticker, at most 10 ASCII letters, digits, dots, or hyphens; it is trimmed and normalized to uppercase. Optional kind must be exactly correction_notice, threshold_crossing, issuer_release, upcoming_earnings, or cited_news.

portfolio_briefing: omit all arguments for the latest retained snapshot. Optional snapshotId is brief_ followed by 32 hexadecimal characters. Optional version is a positive integer that must match that snapshot's retained snapshotVersion; it requires snapshotId.

Both tools return at most 20 items per page. Pass the returned nextCursor as cursor without editing it (maximum 4,096 characters). For changes, keep the same symbol/kind filters; for briefings, include the same snapshot ID. Cursors are owner-bound and expire after 10 minutes. Feed cursors can become unavailable sooner after eviction or a server restart. A conflict response requires restarting pagination; a retained briefing can restart from the same snapshot ID. Unknown arguments, wrong primitive types, and excessive inputs are rejected.

Outputs and availability

Success returns the shared JSON DTO in MCP structuredContent and an identical JSON text content block. A changes page contains contractVersion, snapshotId, asOfUtc, coverage, items, and nextCursor. Each item contains its canonical event and owner projection, including exact versions, source-linked facts, correction provenance, and exposure limitations.

A retained briefing also contains ownerId, snapshotVersion, factualState, periodStartUtc, periodEndUtc, cutoffUtc, policyVersion, and holdingExposure. Its immutable snapshot ID/version and retained facts match the app and email's factual source. Independent first-page changes reads allocate separate transient feed_ pagination handles; these are not retained brief_ IDs. Continuing a protected cursor preserves the same ordered facts, IDs, and versions; newly issued cursor tokens may differ.

Watchlist-only items use relevance: "watchlist", exposureState: "none", and a null holding weight. Coverage may be complete, partial, or unavailable. Briefing factual states distinguish available, partial, quiet, no_inventory, and unavailable. An empty result during an outage is never evidence of no changes; preserve coverage, freshness, limitations, nulls, and fixture/sample labels.

The portfolio read capability can be disabled even while legacy tools remain available. A disabled capability returns disabled (503). A missing, expired, foreign, or wrong-version retained snapshot returns unavailable (404); invalid parameters return invalid_input (400), and an exhausted daily budget returns rate_limited (429). Tool failures set isError: true with a fixed safe error DTO. Invalid or expired transport authentication is rejected before the call; an unlinked or locked account cannot read private data.

Timestamp semantics

cutoffUtc is the retained briefing's evidence capture boundary, while asOfUtc is the factual view's as-of time. The period start/end label the retained briefing period. Reading an old snapshot does not refresh these values, and none is an email delivery timestamp.

Event/source observedAtUtc records observation, not publication or occurrence. Source publishedAtUtc/publishedOn and event timing.occurredAtUtc/occurredOn retain their actual precision and nulls. A date-only event does not imply midnight; BMO/AMC or unknown sessions do not supply an exact instant. Exposure and market-data as-of/retrieval times describe their own inputs.

Call and output examples

These are synthetic, abridged examples, with fields omitted for space. IDs and facts are illustrative and are not live data. The requests are tools/call parameters after an authenticated MCP handshake; outputs show the structuredContent value.

Read followed-company changes

Input

{
  "name": "portfolio_changes",
  "arguments": {
    "symbol": "AAPL",
    "kind": "upcoming_earnings"
  }
}

Abridged output

{
  "contractVersion": "1.0",
  "snapshotId": "feed_0123456789abcdef0123456789abcdef",
  "asOfUtc": "2026-10-07T08:00:00Z",
  "coverage": {
    "state": "partial",
    "coveredSymbolCount": 1,
    "totalSymbolCount": 1,
    "limitations": [
      "sample_only"
    ]
  },
  "items": [
    {
      "event": {
        "eventId": "example_earnings_aapl",
        "version": 1,
        "symbol": "AAPL",
        "kind": "upcoming_earnings",
        "origin": "sample",
        "timing": {
          "precision": "date_only",
          "occurredAtUtc": null,
          "occurredOn": "2026-10-08",
          "session": null
        },
        "observedAtUtc": "2026-10-07T08:00:00Z",
        "sources": [
          {
            "sourceId": "example_calendar",
            "publishedAtUtc": null,
            "publishedOn": "2026-10-07",
            "observedAtUtc": "2026-10-07T08:00:00Z"
          }
        ],
        "facts": [
          {
            "name": "earnings_timing",
            "valueType": "text",
            "textValue": "date_only",
            "numericValue": null,
            "sourceIds": [
              "example_calendar"
            ]
          }
        ]
      },
      "projection": {
        "eventId": "example_earnings_aapl",
        "eventVersion": 1,
        "relevance": "watchlist",
        "holdingWeightPercent": null,
        "exposureState": "none"
      }
    }
  ],
  "nextCursor": null
}

Read an exact retained briefing

Input

{
  "name": "portfolio_briefing",
  "arguments": {
    "snapshotId": "brief_0123456789abcdef0123456789abcdef",
    "version": 1
  }
}

Abridged output

{
  "contractVersion": "1.0",
  "snapshotId": "brief_0123456789abcdef0123456789abcdef",
  "snapshotVersion": 1,
  "factualState": "partial",
  "periodStartUtc": "2026-10-01T00:00:00Z",
  "periodEndUtc": "2026-10-02T00:00:00Z",
  "cutoffUtc": "2026-10-07T08:00:00Z",
  "asOfUtc": "2026-10-07T08:00:00Z",
  "coverage": {
    "state": "partial",
    "coveredSymbolCount": 1,
    "totalSymbolCount": 1,
    "limitations": [
      "sample_only"
    ]
  },
  "items": [
    {
      "event": {
        "eventId": "example_earnings_aapl",
        "version": 1,
        "symbol": "AAPL",
        "kind": "upcoming_earnings",
        "origin": "sample",
        "timing": {
          "precision": "date_only",
          "occurredAtUtc": null,
          "occurredOn": "2026-10-08",
          "session": null
        },
        "observedAtUtc": "2026-10-07T08:00:00Z",
        "sources": [
          {
            "sourceId": "example_calendar",
            "publishedAtUtc": null,
            "publishedOn": "2026-10-07",
            "observedAtUtc": "2026-10-07T08:00:00Z"
          }
        ],
        "facts": [
          {
            "name": "earnings_timing",
            "valueType": "text",
            "textValue": "date_only",
            "numericValue": null,
            "sourceIds": [
              "example_calendar"
            ]
          }
        ]
      },
      "projection": {
        "eventId": "example_earnings_aapl",
        "eventVersion": 1,
        "relevance": "watchlist",
        "holdingWeightPercent": null,
        "exposureState": "none"
      }
    }
  ],
  "nextCursor": null
}

For the latest briefing, use {"name":"portfolio_briefing","arguments":{}}. For the next briefing page, reuse the returned snapshot ID and version and add its unmodified nextCursor as cursor.

Safe missing-snapshot output (isError: true)

{
  "contractVersion": "1.0",
  "code": "unavailable",
  "message": "The requested private portfolio data is unavailable.",
  "status": 404,
  "retryable": false,
  "details": null,
  "traceId": null
}

Scope notes

  • Zentrix is a data and insight layer: quotes, charts, news, sentiment, alerts, earnings, and portfolio exposure reporting.
  • It does not place trades or manage brokerage execution. It's designed to sit alongside, not replace, an execution-capable service.
  • Data freshness varies by tool: prices and market status are live, sentiment is cached 24h, and earnings data refreshes nightly.