Institutional equity research tools for Claude and other MCP clients
The pinegap MCP server exposes 45institutional-grade equity research tools directly inside Claude and any MCP-compatible client. Connect once and get access to earnings analysis, KPI tracking, SEC filing extraction, sentiment detection, comp sheets, read-throughs, investment thesis management, and more — all grounded in pinegap's curated financial data and a synthesis layer built on third-party LLM providers (see our MCP Privacy Policy for which providers process tool call data).
An active PineGap account is required. Sign up at pinegap.ai or contact us for enterprise access.
pinegap MCP uses OAuth 2.1 with WorkOS AuthKit. Most clients (Claude.ai, Claude Desktop, MCP Inspector, Cursor) handle the flow automatically.
https://mcp.pinegap.ai.{
"mcpServers": {
"pinegap": {
"type": "http",
"url": "https://mcp.pinegap.ai"
}
}
}If your client doesn't support OAuth, authenticate with a pinegap API key (format: pgap_sk_...). Contact the pinegap team to obtain one.
{
"mcpServers": {
"pinegap": {
"type": "http",
"url": "https://mcp.pinegap.ai",
"headers": {
"Authorization": "Bearer pgap_sk_YOUR_KEY"
}
}
}
}The MCP Inspector lets you explore and test tools interactively before integrating with Claude.
npx @modelcontextprotocol/inspectorhttps://mcp.pinegap.ai as the server URL.45 tools across 6 categories.
Structured data extracted from SEC filings (10-K, 10-Q, DEF-14A) and primer deep-dives.
management-compensation-driversManagement Compensation Driversread-onlyExtracts the performance drivers and explicit weightings that determine executive incentive pay — not the dollar amounts — from the latest proxy filing (falling back to 20-F/Annual Report). Produces a concise markdown summary separating short-term vs long-term incentive drivers for named executive officers, grounded solely in filing text, and can include the prior fiscal year for comparison.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| includePriorYear | boolean | no | Include prior fiscal year for comparison (default: true) |
Output
ticker, latestYear, priorYear, content (markdown report of short-term vs long-term incentive drivers and weights).
primerPrimer Dataread-onlyRetrieves the latest primer sections for a company — a deep-dive structured overview covering business model, segments, competitive dynamics, and financial framework. By default it returns all available sections; pass a list of section types via sections to scope the response for token-bounded retrieval across multiple calls. The COMP_SHEET section is the largest and is only built when requested explicitly.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| sections | string[] | no | Primer section types to return (e.g. BUSINESS_MODEL, RISKS, COMPETITORS); omit for all. COMP_SHEET must be requested explicitly. |
Output
ticker, data[] { orderingIndex, type, heading, data, stock }, isPrimerGenerating.
quality-of-earningsQuality of Earningsread-onlyScores earnings quality risk across six accounting dimensions using the most recent 10-K or 10-Q (falling back to 20-F/Annual Report), returning a per-flag status and filing-specific evidence for each raised risk. The six dimensions are revenue-recognition policy changes, disproportionate contract-asset growth, rising DSOs / slower collections, changes in significant accounting estimates, aggressive cost capitalization, and non-GAAP creep. Each flag carries a prior-period comparison to distinguish new, persistent, and resolved risks.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, documentType, documentId, year, quarter/half, analysisDate, source, flags[] { flagName, currentQuarterStatus, previousQuarterStatus, analysis }, quarterlyFlags[].
red-flag-financialFinancial Red Flagsread-onlyFlags financial and accounting risks from the latest 10-K/10-Q — including liquidity stress, earnings-quality issues, aggressive accounting or non-GAAP adjustments, control weaknesses, covenant pressure, and balance-sheet impairment triggers.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
scope: 'financial', source, documentType, redFlags[] { flag, severity, evidence, citations[] }.
red-flag-governanceGovernance Red Flagsread-onlySurfaces corporate governance and shareholder-rights red flags from proxy disclosures (DEF-14A) — board independence/oversight issues, problematic pay practices, related-party transactions, weak say-on-pay signals, and anti-shareholder provisions.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| allowAnnualFallback | boolean | no | Allow annual/20-F fallback when no DEF-14A |
Output
scope: 'governance', source, ticker, documentId, documentType, analysisDate, year, quarter/half, redFlags[] { flagName, currentQuarterStatus, previousQuarterStatus, analysis, flagCategory, flagHeadingName }, quarterlyRedFlags[].
Stock performance attribution powered by earnings context and return data.
performance-attributionPerformance Attributionread-onlyGenerates a portfolio-style attribution paragraph explaining why a stock outperformed or underperformed over a selected period, incorporating earnings transcript context and quantitative return data.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| period | string | no | Standard period (YTD | 1M | 3M | 6M | 1Y) or custom start/end dates |
Output
ticker, period, return (%), content (attribution paragraph).
Read-only access to market data, earnings analysis, SEC filings, KPIs, and financial metrics.
comp-sheetComp Sheet Tablesread-onlyRetrieves a company's comp sheet tables — competitor lists, metric columns, periods, and resolved actuals/estimates cells. Supports three modes: no-cells (tables and competitors only, smallest payload — use first to discover the available periods), full (tables plus all cells), and by-period (tables plus cells for one required period). Because a full dump can be large, call no-cells to list periods, then by-period per period to reconstruct the same data in token-bounded chunks across calls.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| mode | string | no | no-cells | full | by-period (default: full) |
| period | string | no | Exact period label, required for by-period mode (e.g. LTM, NTM) |
| userId | number | no | Pinegap internal user ID (currently ignored) |
Output
ticker, compSheets[] { columns, compSheetCompetitors[] }, cells[] (empty in no-cells mode, period-filtered in by-period), metadata { mode, totalSheets, totalCells, periods, selectedPeriod }.
company-metricsCompany Metrics & KPIsread-onlyRetrieves company-specific financial metrics and operational KPIs for a single stock from a natural-language query. AI selects the most relevant metrics from the company's actual available parameters, then fetches actuals, consensus estimates, earnings surprises, and estimate revision changes. All monetary values are in USD.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | yes | Natural-language description of the metrics or KPIs needed |
| ticker | string | yes | Stock ticker (one per call) |
Output
ticker, companyName, companyData, operationalData, consensusEstimates, surprises, revisionChanges, message.
company-profileCompany Profileread-onlyFetches key company profile fields for a ticker — market cap, currency, 52-week range, IPO date, geography, beta, and average volume from the market data provider.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
found, ticker, symbol, marketCap, currency, range, ipoDate, city, state, country, lastDividend, beta, avgVolume, message.
conference-recapConference Recapread-onlyRetrieves conference and investor-day-style document summaries for the inter-quarter window following a specified earnings period. The window starts on that period's earnings call release date and ends at the next earnings call. Pass generate:true to enqueue summaries for documents in the window that don't have one yet.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| year | number | no | Fiscal year |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
| generate | boolean | no | Enqueue missing summaries (default: false) |
Output
ticker, basePeriod, startDate, endDate, conferenceRecap[] { title, releaseDate, type, summary, citations[] }, investorDayRecap[] { title, releaseDate, executiveSummary, keyDebates[] }, message.
conference-takeawaysConference Takeawaysread-onlyRetrieves short AI-generated takeaways (one paragraph per conference) for investor/analyst conferences that occurred after a specified earnings call. The window opens on the earnings call release date and has no upper bound, so older periods may bleed across multiple subsequent quarters.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| year | number | no | Fiscal year (defaults to latest) |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
| documentId | number | no | Bypass period resolution with a specific earnings call document ID |
| maxResults | number | no | Limit number of takeaways returned |
Output
ticker, period, earningsDocumentId, conferences[] { documentId, releaseDate, title, year, quarter, half, conferenceTakeaway }, message.
dividend-historyDividend Historyread-onlyFetches dividend history for a ticker — ex-dividend dates, payment dates, and dividend amounts.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| startDate | string | no | ISO date filter start (YYYY-MM-DD) |
| endDate | string | no | ISO date filter end (YYYY-MM-DD) |
Output
found, ticker, symbol, startDate, endDate, dividends[] { date, adjDividend, dividend, recordDate, paymentDate, declarationDate }.
earnings-price-reactionsEarnings Day Price Reactionsread-onlyReturns the historical earnings-day stock-price reaction table — 1-day and 5-day post-earnings price moves for recent fiscal periods, ordered most-recent-first. Reaction and surprise values are null when no genuine data exists for a period; nothing is fabricated. found is true only when the ticker resolved and at least one reaction is available.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
found, ticker, reactions[] { quarter, reportedDate, earningsDate, marketStatus, oneDayReactionPct, fiveDayReactionPct, revenueSurprisePct, epsSurprisePct, ebitdaSurprisePct } (null where unavailable), implied, message.
earnings-recapEarnings RecapwriteRetrieves a comprehensive post-earnings analysis for a completed earnings period. Analyzes earnings call transcripts and press releases to produce a narrative summary of key themes, a metrics table comparing actuals vs consensus (revenue, EPS, and key metrics), and guidance highlights. Pass generate:true to enqueue recap generation when none is stored yet.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| year | number | no | Fiscal year (defaults to latest) |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
| generate | boolean | no | Enqueue recap generation when none is stored (default: false) |
Output
ticker, period, takeaway (AI narrative), table[] (metric, actual, consensus, beat/miss %), summary, summaryCitations[], message.
earnings-takeawayEarnings Takeawayread-onlyReturns a structured post-earnings scorecard — price reactions (1-day, 5-day), implied move, beat/miss metrics, estimate revisions, and guidance direction — for one or more tickers at once. Lighter than earnings-recap; pass metricsOnly:true to skip the AI key-debates/guidance-commentary and return only the numeric cells.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | string[] | yes | Stock tickers to fetch data for |
| year | number | no | Fiscal year (auto-resolves if omitted) |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
| agentUserTopologyId | number | no | Use topology-specific beat/miss and estimate-revision columns |
| metricsOnly | boolean | no | Skip AI generation, return numeric scorecard only (default: false) |
Output
results[] { Ticker, Sector, Industry, Earnings Quarter, 1-D Reaction, 5-D Reaction, Implied Move, Metric (Beat/Miss), Estimate Revisions Next Quarter, Estimate Revisions Current Year, Actuals, Key Debates, Guidance, Guidance Commentary, status }.
estimates-comparisonEstimates Comparisonread-onlyRetrieves consensus estimate history for a ticker across one or more Pinegap Data IDs (pgids) and calendar years, comparing the consensus as of a historical date against the latest consensus — in a single call. Replaces repeated per-metric/per-year revision-chart calls. A year with no revision activity in its lookback window returns null for that side with a row-level note rather than failing the whole request.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| asOfDate | string | yes | Historical comparison date (YYYY-MM-DD); must not be in the future |
| years | number[] | yes | Calendar years to compare (e.g. [2024, 2025, 2026]) |
| pgids | string[] | yes | Pinegap Data IDs for the metrics to include |
Output
found, ticker, resolvedTicker, asOfDate, years, pgids, rows[] { pgid, year, consensusAsOfDate, consensusToday, message }, ambiguousSuffixMatches, message.
fetch-documentFetch Company Documentread-onlyRetrieves a company document's full text — earnings call transcripts, press releases, 10-K/10-Q, 8-K, and SEC filings (Form 3/4/5/13F). Call either by documentIds (exact stored documents, re-openable from citation IDs) or by ticker + documentTypes with optional periods. A single document returns paginatable content; several return a documents[] array. deliveryMode defaults to content; viewer and download return a URL only (no text).
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| documentIds | number[] | no | Pinegap document IDs; cannot combine with ticker/documentTypes/periods |
| ticker | string | no | Stock ticker (use with documentTypes) |
| documentTypes | string[] | no | One or more document types to fetch |
| periods | object | no | Array of fiscal periods { year, quarter?, half? }; omit for the latest of each type |
| page | number | no | Page for a single document (default: 1) |
| paginate | boolean | no | Single-document paging; false returns full text (default: true) |
| deliveryMode | string | no | content | viewer | download (default: content) |
Output
mode (content | content_batch | viewer_link | download_link), metadata { documentsCount, documents[] }, content, documents[], truncated, pagination, notFound[], failures[], viewer, download, message.
guidanceManagement Guidanceread-onlyAdvanced guidance extraction that captures all forward-looking statements from management across earnings calls — from precise quantitative targets (revenue, EPS, margins) to qualitative directional commentary — for one or more tickers at once. Classifies each item as RAISED, LOWERED, MAINTAINED, or NEW. Pass generate:true to enqueue extraction when none is stored.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | string[] | yes | Stock tickers to fetch data for |
| year | number | no | Fiscal year (defaults to latest per ticker) |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
| generate | boolean | no | Enqueue extraction when none is stored (default: false) |
Output
results[] { ticker, period, guidance[] { metric, value, period, outcome, commentary, consensus, verdict, citations[] }, status, message }, message.
key-debatesKey Debatesread-onlyRetrieves the most discussed topics and key debates from earnings calls, for one or more tickers at once — the themes management and analysts focused on, surfaced through frequency analysis and importance weighting. Each debate summary embeds inline [n] citation markers linking to the source text.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | string[] | yes | Stock tickers to fetch data for |
| year | number | no | Fiscal year (defaults to latest per ticker) |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) |
Output
results[] { ticker, period, keyDebates[] { topic, summary, tag, citations[] { index, documentId, quote, doc_type, doc_date, link } }, renderHints, status, message }, message.
latest-periodLatest Fiscal Periodread-onlyReturns fiscal period information for a ticker. In latest mode (no year supplied) it returns the most recent period for which content is available. In exists mode (year + quarter/half supplied) it confirms whether a document exists for that specific period. Defaults to earnings calls; pass documentType for another type.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| documentType | string | no | Document type to resolve (defaults to Earnings call; many types supported) |
| year | number | no | Fiscal year to check |
| quarter | number | no | Quarter (1–4) |
| half | number | no | Half (1–2) for semi-annual reporters |
Output
ticker, documentType, mode (latest | exists), exists, period { year, quarter, half, periodString }, document { id, title, releaseDate }, message.
market-quoteMarket Quoteread-onlyFetches the latest market quote for a ticker — current price, daily change percentage, session high/low, and 52-week range.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
found, ticker, symbol, price, changesPercentage, dayLow, dayHigh, yearLow, yearHigh.
podcastPodcast Intelligenceread-onlyUnified access to investment-focused podcasts — browse podcasts and episodes, fetch transcripts (JSON or text), retrieve AI-extracted equity insights, and scan one or more tickers for mentions across episodes. The mode field selects the operation.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| mode | string | yes | list-podcasts | list-episodes | get-episode | get-transcript | get-insights | ticker-mentions |
| podcastId | number | no | Required for episode/transcript/insight modes |
| episodeId | number | no | Required for get-episode, get-transcript, get-insights |
| ticker | string | no | Single ticker for ticker-mentions |
| tickers | string[] | no | Multiple tickers to scan in one ticker-mentions call |
| startDate | string | no | ISO date; defaults to last 30 days for ticker-mentions |
| endDate | string | no | ISO date (inclusive) |
| transcriptFormat | string | no | json | text (default: json) |
| includeRawAnalysis | boolean | no | Include raw tagged analysis text (default: false) |
Output
mode, podcasts[], episodes[], episode, executiveSummary, fullAnalysis, topics[], insights[], transcriptItems[] or transcriptText, tickerMentions[], metadata, message.
quant-metricsQuantitative Metricsread-onlyReturns standardized quantitative metrics for one or more tickers from a natural-language query — historical actuals and forward estimates, valuation multiples (P/E, EV/EBITDA, Price/Book, FCF yield), market data (market cap, enterprise value), consensus estimates with dispersion, estimate revisions, and earnings surprises. All monetary values are in USD.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | yes | Natural-language description of the financial metrics needed |
| tickers | string[] | yes | Stock tickers to fetch data for |
Output
tickers, notFound[], standardizedData, valuationMetrics, marketData, estimatesData, revisionsData, surprisesData, message.
readthroughsRead-Throughsread-onlyReturns quotes from other companies' recent earnings calls and press releases that mention or link to a target ticker. Each read-through includes inferred impact direction and relationship context — useful for building a mosaic across the value chain.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Target ticker |
| lookBackDays | number | no | Days to look back (default: 30) |
| sourceSectors | string[] | no | Filter by source company sector |
| sourceMarkets | string[] | no | Filter by source market |
| sourceMarketCap | string | no | LargeCap | MidCap | SmallCap |
| targetKinds | string[] | no | customer | supplier | competitor | partner |
Output
ticker, filters, count, data[] { readthroughOrder, classification, topic, quote, citations[] }.
risksRisk Factorsread-onlyReturns risk factors from a company's 10-K/10-Q filing. Mode 'new' returns risks classified as NEW or UPDATED in the specified filing. Mode 'active' returns the full active risk set through the resolved filing.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| mode | string | yes | new | active |
| year | number | no | Fiscal year (defaults to latest) |
| quarter | number | no | Quarter (1–4) |
| documentId | number | no | Specific 10-K/10-Q document ID |
Output
ticker, mode, period, documentId, count, risks[] { title, description, summary, category, severity, status }.
screener-statusScreener StatuswriteRetrieves the latest running screener by default, or lists all screeners for the user, returning progress, final tickers, metrics, and optional per-company report content. When a screener has completed, pass watchlistName to save its results into a new watchlist.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| conversationId | number | no | Screener conversation ID; omit to resolve the latest |
| mode | string | no | latest | list (default: latest) |
| reportThreshold | number | no | Score threshold for including report content |
| includeReports | boolean | no | Include per-company reports in the response |
| reportTickers | string[] | no | Only include reports for these tickers |
| watchlistName | string | no | Save completed results into a new watchlist (1–255 chars) |
Output
mode, conversationId, query, refinedQuery, state, status { toolStats, latestStep, hasFinalResult }, list[], results[] { stockTicker, stockName, metrics[], reportContent }, tickers[], totalResults, finalMessage, savedWatchlist, watchlistMessage.
short-interestShort Interest Historyread-onlyFetches short-interest history (% of float, bi-monthly settlement data) for a single ticker over the trailing ~89 days. Bundles a renderHints block for drawing a step-after time-series chart. found is true only when the ticker resolved and the window has at least one point.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
found, ticker, unit, source, points[] { date, percentOfFloat }, renderHints, message.
stock-lookupStock Lookupread-onlyRetrieves stock information by ticker symbol, Bloomberg ticker, Nasdaq ticker, or company name. Returns company metadata including ID, name, exchange, country, sector/industry classification, reporting frequency, and external data-provider identifiers. Ticker lookup tries an exact match then suffixed variants (e.g. MND_US); name search is fuzzy. Use it first to verify a ticker before calling other tools.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | no | Exchange ticker (e.g. AAPL) |
| bloombergTicker | string | no | Bloomberg ticker |
| nasdaqTicker | string | no | Nasdaq ticker |
| name | string | no | Company name (fuzzy search) |
Output
found, ticker/bloombergTicker/nasdaqTicker/query (echo of the term used), stock (single exact match) or stocks[] with count (name search / suffix fallback), message.
value-chainValue Chainread-onlyRetrieves the ordered value-chain peer list for a ticker — the related companies (customers, suppliers, competitors, partners) as configured in pinegap for the authenticated user.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, topologyId, count, members[] { ticker, name, orderingIndex, type, subType, metadata }.
AI-powered analysis generated fresh from earnings transcripts, SEC filings, and financial data. These tools call third-party LLM providers (see the MCP Privacy Policy) and are rate-limited to 10 req/min.
capital-allocationCapital Allocationread-onlyAnalyzes capital allocation strategy covering liquidity, reinvestment, debt philosophy, shareholder returns (dividends/buybacks), and M&A approach. Grounded in the latest 10-K and proxy filing.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, content (markdown capital allocation analysis).
competitive-landscapeCompetitive Landscaperead-onlyGenerates a competitor identification and competitive landscape analysis from the latest 10-K/20-F filings. Covers market position, key differentiators, and competitive dynamics.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, content (markdown competitive landscape analysis).
earnings-previewEarnings PreviewwriteGenerates a comprehensive pre-earnings analysis for an upcoming report. Combines consensus estimates and historical beat/miss patterns, recent news summarized by AI, and an AI-generated preview takeaway. Best used 1–2 weeks before an earnings call.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| generate | boolean | no | Generate preview data and takeaway when the DB entry is missing (default: false — DB-only) |
| includeCharts | boolean | no | Skip the charts[] array (valuation revision and short-interest series) when false. Defaults to true |
Output
ticker, basePeriod, upcomingPeriod, previewData (estimates, guidance, performance context), takeaway (AI narrative), takeawayStatus, newsRecap, conferenceTakeaways, competitorSnapshot, brokerRatingChanges, brokerEstimateChanges, charts.
executive-biosExecutive Profilesread-onlyGenerates detailed profiles for the C-Suite leadership team — synthesizing proxy statements, 8-K filings, and web research for background, tenure, and prior roles.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, summary (leadership team overview), data (executive and board profiles).
management-followupManagement Follow-Up Questionsread-onlyFetches management follow-up questions for the latest earnings call, grouped by thematic section (financial performance, operations, strategy, etc.). Useful for preparing for management meetings or building a monitoring framework.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, documentId, content (markdown follow-up questions grouped by section), year, quarter, half, documentType.
operating-metrics-commentaryOperating Metrics Commentaryread-onlyPulls verbatim management quotes from a single source document — the latest earnings call transcript, or the latest press release as a fallback — organised into 12 operational categories such as volume, pricing, retention, sales efficiency, capital allocation, and forward indicators. Every bullet is a direct excerpt; nothing is paraphrased or generated.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| year | number | no | Fiscal year |
| quarter | number | no | Quarter |
| half | number | no | Half |
Output
ticker, period, year, quarter, half, content (markdown with 12 bolded section headings of verbatim quotes), documentId, sourceDocumentType.
proxy-reviewProxy Reviewread-onlyGenerates a markdown proxy review covering board oversight and composition, ownership and voting control, executive compensation structure and performance linkage, and notable shareholder proposals. Grounded solely in DEF-14A filing text.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
| allowAnnualFallback | boolean | no | Fall back to 20-F/Annual Report if no DEF-14A (default: false) |
Output
ticker, documentId, documentTypeUsed, content (markdown proxy review).
proxy-votingProxy Voting Mattersread-onlySummarizes the voting matters in a company's latest DEF 14A proxy statement — each proposal and the board's own stated position on it — for research. This is descriptive: it does not recommend how to vote and returns no AI vote recommendation.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| ticker | string | yes | Stock ticker |
Output
ticker, documentId, eventDate, resultJson (per-proposal summary: proposal text, the board's stated position, and any web sources used — no recommended vote).
screener-startStart Screener ConversationwriteCreates or continues an AI-powered screener conversation. Describe the investment criteria in natural language; the screener interprets them, may request follow-up answers via elicitation (or return questions to ask the user), and runs asynchronously. Poll screener-status with the returned conversationId for results.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| query | string | no | Natural-language screening criteria to start a new conversation |
| filters | object | no | Structured universe filters: sectors, industries, documentTypes, marketCap { lt, gt }, markets, watchlistIds, alphaSearchId |
| conversationId | number | no | Continue an existing conversation |
| followUp | object | no | Array of { question, answer } entries answering prior follow-up questions |
Output
conversationId, needsFollowUp (boolean), questions[] (if follow-up needed), status { state, toolStats, latestStep, hasFinalResult }, message. Poll screener-status with the conversationId for results.
sentiment-analysisSentiment Analysisread-onlyTracks how management sentiment around specific keywords shifts across consecutive earnings calls, for one or more tickers at once. Compares the current and previous periods to surface changes in tone, emphasis, confidence, and language, with verbatim supporting excerpts. Omit keywords to return each ticker's stored curated keyword set.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | string[] | yes | Stock tickers to analyze sentiment for |
| keywords | string[] | no | Keywords to track across the tickers; omit to fetch each ticker's curated keyword set |
| year | number | no | Fiscal year |
| quarter | number | no | Quarter |
| half | number | no | Half |
| generate | boolean | no | Generate keywords not yet stored in the background (default: true); set false to only look up stored sentiment |
Output
results[] { ticker, period, status, sentimentByKeyword{} (change, managementConfidence, managementLanguage, changeReason with citations), pendingKeywords[], missingKeywords[], keywordSources }, message.
unusual-disclosureUnusual Disclosureread-onlyDetects unusual, novel, escalated, or suppressed management disclosures by comparing the latest earnings call or press release against prior periods, for one or more tickers at once. An AI pass surfaces disclosures that are newly added, escalated, withdrawn, or downgraded.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| tickers | string[] | yes | Stock tickers to analyze |
| documentTypes | string[] | no | Source document types (Earnings call, Press Release). Omit to analyze whichever is most recent (one row per ticker); provide one or both for a row per ticker per type |
Output
results[] { ticker, status, eventDate, documentType, period, resultJson { new_and_escalated[], withdrawn_and_suppressed[], disclosure_balance_assessment }, message }.
Server diagnostics and connectivity verification.
healthHealth Checkread-onlyVerifies the MCP server is running and its database connection is active. Use to diagnose connectivity issues before making other requests.
Output
status (ok | degraded | error), dbConnected, timestamp, version.
Create and manage saved watchlists of tickers.
watchlist-createCreate WatchlistwriteCreates a new watchlist for the current user with an optional initial set of tickers. When enableNotifications is true, all supported stock-level notifications are turned on for each added ticker.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | yes | Watchlist name (1–255 characters) |
| enableNotifications | boolean | no | Enable all supported stock-level notifications for each added ticker (default: false) |
| tickers | string[] | no | Initial tickers to add |
Output
watchlist { id, name, tickers[] }, created.
watchlist-listList Watchlistsread-onlyReturns all watchlists for the current user. Optionally supply documentTypes to enrich each ticker with the latest release date for the selected document types.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| documentTypes | string[] | no | Optional multi-select list of document types; when provided, each ticker is returned with its latest release date per type |
Output
watchlists[] { id, name, tickers[] }, count. When documentTypes is supplied, each ticker becomes an object with ticker and latestReleaseDates.
watchlist-updateUpdate WatchlistwriteUpdates an existing watchlist's name and/or ticker list for the current user. Supplying tickers replaces the entire existing ticker list.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| watchlistId | number | yes | Watchlist ID from watchlist-list |
| name | string | no | New name for the watchlist (1–255 characters) |
| tickers | string[] | no | New full ticker list (replaces existing) |
Output
watchlist { id, name, tickers[] }, updated.
watchlist-deleteDelete WatchlistwriteDeletes one of the current user's watchlists, removing it and its stocks from all views. The default watchlist and agent-managed watchlists cannot be deleted, and a watchlist that does not exist or belongs to another user returns a not-found error.
Inputs
| Parameter | Type | Required | Description |
|---|---|---|---|
| watchlistId | number | yes | ID of the watchlist to delete |
Output
watchlistId, deleted.
All errors follow a standard envelope: { error: true, code: string, message: string }
| Code | Description |
|---|---|
| VALIDATION_ERROR | One or more input fields failed validation |
| MISSING_REQUIRED_FIELD | A required input field was not provided |
| INVALID_FIELD_VALUE | A field value is outside the allowed range or format |
| CONFLICTING_PARAMETERS | Two supplied parameters are mutually exclusive |
| NOT_FOUND | The requested resource could not be found |
| STOCK_NOT_FOUND | No stock matching the supplied ticker or name was found |
| DOCUMENT_NOT_FOUND | The requested document does not exist in pinegap's database |
| PERIOD_NOT_FOUND | No data exists for the specified fiscal period |
| EXTERNAL_SERVICE_ERROR | Upstream data provider returned an error |
| DATABASE_ERROR | Internal database query failed |
| AI_SERVICE_ERROR | LLM or AI synthesis step failed |
| S3_ERROR | File storage retrieval failed |
| RATE_LIMITED | Request rate limit exceeded — retry after the indicated delay |
| INTERNAL_ERROR | Unexpected server error |
| UNKNOWN_ERROR | An unclassified error occurred |
| Problem | Fix |
|---|---|
| Can't sign in after OAuth redirect | Ensure your account is active on app.pinegap.ai |
401 Unauthorized | Token missing, expired, or malformed — re-authenticate |
403 Forbidden | Account not recognised — contact support@pinegap.us |
RATE_LIMITED error | AI synthesis tools cap at 10 req/min. Wait and retry. |
STOCK_NOT_FOUND for a valid ticker | Try stock-lookup first to verify the exact ticker in pinegap's database |
DOCUMENT_NOT_FOUND | Use latest-period to confirm the period exists before calling document tools |
Questions or access issues? Email support@pinegap.us.