← Back to all apps

FactSet AI-Ready Data

Financeby FactSet Research Systems
Launched May 29, 2026 on ChatGPTLaunched Feb 20, 2026 on Claude

Access, comprehensive financial data and analytics through AI-powered tools. Connect to FactSet global prices, fundamental analysis, earnings estimates, and research insights into Claude, to enhance your financial analysis, earning estimates and investment research with trusted, institutional-quality data.

17ChatGPT Tools
16Claude Tools
FactSet Research SystemsDeveloper
FinanceCategory

Use Cases

financial-services

Available Tools

Fact Set Calendar Events

FactSet_CalendarEvents
Full Description

FactSet Events Tool

  • Comprehensive corporate calendar event data.

CRITICAL: MAXIMUM 365-DAY SPAN between startDateTime and endDateTime (calculated to the second, not calendar days). The API enforces: (endDateTime - startDateTime) <= exactly 365 days (31,536,000 seconds). The difference between start and end dates must not exceed 365 days. Make sure startDateTime and endDateTime are always set to 00:00:00 (midnight) instead of 23:59:59 to stay within limit. For future earnings release use ProjectedEarningsRelease. Examples:

  • startDateTime='2024-01-01T00:00:00Z', endDateTime='2024-12-31T00:00:00Z' PASS (exactly 365 days)
  • startDateTime='2024-01-01T00:00:00Z', endDateTime='2024-12-31T23:59:59Z' FAIL (365 days + 23:59:59
  • FAILS)
  • startDateTime='2024-01-01T00:00:00Z', endDateTime='2025-12-31T23:59:59Z' FAIL (730 days
  • FAILS)

WHEN TO USE THIS TOOL:

  • Questions like "When was Microsoft's last earnings call?" or "When is Apple's next earnings?"
  • Corporate event calendars, investor meetings, conference schedules
  • Questions about "When is [company]'s earnings call?" or "Upcoming investor events"
  • Event calendar tracking, earnings schedules, investor meeting coordination
  • Corporate action dates (splits, dividends)
  • Conference and presentation schedules

CRITICAL: For queries like "When was [company]'s last earnings call?", use this tool BEFORE web search.

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "When is [company]'s earnings call?"
  • "Upcoming events for [company]"
  • "[Company] event calendar"
  • "Earnings schedule for [companies]"
  • "Investor meetings this week/month"
  • "Recent event changes"
  • Any variation of corporate event queries

DATA COVERAGE & SCOPE:

  • Global corporate event calendar from November 1st, 2022 onwards
  • Earnings calls, investor meetings, conferences, corporate actions
  • Contact information and webcast links for events
  • Historical and future events (up to 365 days ahead)
  • Real-time schedule updates and modifications

SINGLE ENDPOINT: This tool routes to the FactSet Events API calendar events endpoint:

CALENDAR EVENTS ENDPOINT (/events):

  • Use Case: Retrieve corporate event schedules and details
  • Returns: Event timing, company info, contacts, webcast links, unique identifiers
  • Best For: Event calendar tracking, earnings planning, investor coordination
  • Example: "Show me Apple's upcoming earnings calls" or "Events this week for MSFT"

CRITICAL CONSTRAINTS:

DATE RANGE LIMITATION:

  • MAXIMUM 365-DAY SPAN between startDateTime and endDateTime
  • For longer periods: Make multiple requests for different 365-day windows
  • Example: Multi-year analysis may require multiple API calls

MUTUALLY EXCLUSIVE PARAMETERS:

  • CANNOT use both dateTime range AND lastModifiedWithin
  • Choose ONE approach based on use case:
    • Use dateTime for specific historical periods or future planning
    • Use lastModifiedWithin for recent schedule changes and updates

AVAILABLE EVENT TYPES:

EARNINGS & FINANCIAL:

  • Earnings: Quarterly earnings calls and results
  • ConfirmedEarningsRelease: Officially confirmed earnings dates
  • ProjectedEarningsRelease: Estimated earnings dates
  • SalesRevenueCall: Sales-focused conference calls
  • SalesRevenueRelease: Sales/revenue press releases
  • GuidanceCall: Forward guidance communications

MEETINGS & PRESENTATIONS:

  • AnalystsInvestorsMeeting: Analyst and investor gatherings
  • ShareholdersMeeting: Shareholder meetings and voting events
  • Conference: Industry conferences and presentations

CORPORATE ACTIONS:

  • SpecialSituation: M&A, restructuring, special corporate events
  • Split: Stock split announcements and effective dates
  • Dividend: Dividend declarations and payment dates

UNIVERSE TYPES:

TICKERS (RECOMMENDED):

  • Individual company symbols
  • Most efficient for targeted queries
  • Best performance and accuracy
  • Example: symbols=['AAPL-US', 'MSFT-US']

INDEX:

  • Market index constituents
  • All companies in specified index
  • Example: symbols=['SP50'] for S&P 50

ETF:

  • Exchange-traded fund holdings
  • All companies held in ETF
  • Example: symbols=['SPY-US']

ALLCOMPANIES:

  • All available companies in database
  • Use with caution (very large result sets)
  • Combine with narrow date ranges and specific event types

MANDATORY WORKFLOW:

**OPTION A

  • DATE RANGE QUERY:**

1. Identify companies using proper symbols 2. Define dateTime range (max 365 days) 3. Confirm dateTime range is 365 days or less. 4. If dateTime range is greater than 365 days, go back to step 2. 3. Select relevant event types 4. Set universe type (typically Tickers)

**OPTION B

  • RECENT MODIFICATIONS:**

1. Identify companies using proper symbols 2. Select lastModifiedWithin period 3. Select relevant event types 4. Set universe type (typically Tickers)

DATE HANDLING (CRITICAL):

DATETIME RANGE:

  • startDateTime: REQUIRED with endDateTime (ISO 8601 format)
  • endDateTime: REQUIRED with startDateTime (ISO 8601 format)
  • Format: YYYY-MM-DDTHH:MM:SSZ (UTC timezone)
  • Maximum range: 365 days
  • Minimum date: 2022-11-01T00:00:00Z
  • Future events: Up to 365 days ahead
  • Example: start='2024-01-01T00:00:00Z', end='2024-12-31T00:00:00Z'

LAST MODIFIED WITHIN:

  • SixHours: Events modified in last 6 hours
  • TwelveHours: Events modified in last 12 hours
  • Today: Events modified today
  • TwoDays: Events modified in last 2 days
  • OneWeek: Events modified in last week
  • OneMonth: Events modified in last month
  • Returns: Modified events + events scheduled within 45 days
  • Example: lastModifiedWithin='OneWeek'

COMMON USE CASES:

"When is Apple's next earnings call?" → symbols=['AAPL-US'], universeType='Tickers', eventTypes=['Earnings'], startDateTime='2025-10-15T00:00:00Z', endDateTime='2026-10-14T23:59:59Z'

"Show me all events this week for Microsoft" → symbols=['MSFT-US'], universeType='Tickers', eventTypes=[all types], startDateTime='2025-10-13T00:00:00Z', endDateTime='2025-10-19T23:59:59Z'

"Recent event schedule changes" → symbols=['AAPL-US', 'MSFT-US'], universeType='Tickers', eventTypes=[all types], lastModifiedWithin='OneWeek'

"Full year 2024 earnings calendar for tech companies" → symbols=['AAPL-US', 'MSFT-US', 'GOOGL-US'], universeType='Tickers', eventTypes=['Earnings', 'ConfirmedEarningsRelease'], startDateTime='2024-01-01T00:00:00Z', endDateTime='2024-12-31T00:00:00Z'

"Today's corporate events" → symbols=[company list], universeType='Tickers', eventTypes=[all types], lastModifiedWithin='Today'

DATA TRANSPARENCY:

  • All data from official company announcements and schedules
  • Event times in UTC timezone
  • Data available from November 1st, 2022 onwards
  • Future events up to 365 days ahead
  • Always specify date ranges and event types used
  • State limitations when data not available

COMPREHENSIVE EVENT INFORMATION:

  • Event Details: Type, description, timing, fiscal period
  • Company Info: Identifier, entity name
  • Contact Details: Email, phone, contact name (when available)
  • Access Info: Webcast links, IR page URLs
  • Cross-Reference: Event ID, Report ID for transcript linking
  • Metadata: Market timing, last modified date, fiscal year/period

EFFICIENCY REQUIREMENTS:

  • API rate-limited to 10 requests per second
  • Maximum 10 concurrent requests per user
  • Optimize date ranges (use 365-day max efficiently)
  • Filter by relevant event types only
  • Use targeted symbol lists when possible

BEST PRACTICES:

FOR RECENT UPDATES:

  • Use lastModifiedWithin instead of wide date ranges
  • More efficient for tracking schedule changes
  • Automatically includes events scheduled within 45 days

FOR SPECIFIC PERIODS:

  • Use dateTime range with precise start/end
  • Ideal for historical analysis or specific year planning
  • Remember 365-day maximum constraint

FOR PERFORMANCE:

  • Filter to specific event types needed
  • Use Tickers universe type for individual companies
  • Avoid AllCompanies unless truly needed

USE FOR: Corporate event tracking, earnings schedule planning, investor meeting coordination, corporate action monitoring DO NOT USE FOR: Real-time event updates during calls, transcript content, audio recordings

CROSS-REFERENCE CAPABILITIES:

  • reportId: Links to transcripts and documents in other FactSet services
  • eventId: Unique identifier for event tracking and updates
  • fiscalYear/Period: Aligns with financial reporting calendars

LIMITATIONS:

  • 365-day maximum date range per request
  • Historical data from November 2022 onwards only
  • Future events limited to 365 days ahead
  • Contact information may not be available for all events
  • Webcast links provided when available from companies

RETURNS:

  • Structured JSON responses with event data
  • Always includes: identifier, entityName, eventType, eventDateTime, eventId
  • Optional fields: webcastLink, contactEmail/Phone/Name, reportId, lastModifiedDate
  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Date range exceeds 365 days → Constraint violation message
  • Both dateTime and lastModifiedWithin specified → Mutual exclusivity error
  • Missing required parameters → Error with reminder
  • Invalid identifiers → List of unrecognized symbols
Parameters (2 required, 5 optional)
Required
symbolsarray

List of company identifiers as an array. Supported formats: FactSet Tickers (AAPL-US), Index symbols (SP50), ETF symbols (SPY-US), Entity IDs. Use specific company lists for better performance. Pass as list: ['AAPL-US', 'MSFT-US'] or single string: 'AAPL-US'Reference: If symbols is set to AllCompanies, universeType must also be AllCompanies

universeTypestring

Universe classification type (REQUIRED): - 'Tickers': Individual company symbols (most common and efficient) - 'Index': Market index constituents - 'Etf': Exchange-traded fund holdings - 'AllCompanies': All available companies (use with caution) - 'AllCompanies': If universe type is not AllCompanies, symbols must be actual symbols (e.g. Tickers)- 'AllCompanies':If symbols is set to AllCompanies, universeType must also be AllCompanies

Optional
endDateTimestring

Event search end timestamp in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ). CRITICAL: Cannot use with lastModifiedWithin. Maximum 365-day span (calculated to the second) from startDateTime. Timezone: UTC. Must be after startDateTime. Example: '2024-12-31T23:59:59Z'

Default: null
eventTypesarray

List of event categories to include as an array. Available: Earnings, SalesRevenueCall, SalesRevenueRelease, GuidanceCall, AnalystsInvestorsMeeting, ShareholdersMeeting, SpecialSituation, Conference, ConfirmedEarningsRelease, ProjectedEarningsRelease, Split, Dividend. Include only relevant types for better performance. Pass as list: ['Earnings', 'Conference'] or single string: 'Earnings'

Default: null
lastModifiedWithinstring

Recent modification time filter: SixHours/TwelveHours/Today/TwoDays/OneWeek/OneMonth. CRITICAL: Cannot use with startDateTime/endDateTime. Returns events modified within period AND scheduled within 45 days. Best for: Tracking recent schedule changes and updates. Example: 'OneWeek'

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
startDateTimestring

Event search start timestamp in ISO 8601 format (YYYY-MM-DDTHH:MM:SSZ). CRITICAL: Cannot use with lastModifiedWithin. Maximum 365-day span (calculated to the second) with endDateTime. Timezone: UTC. Minimum: 2022-11-01T00:00:00Z. Example: '2024-01-01T00:00:00Z'

Default: null

Fact Set Entity Reference

FactSet_EntityReference
Full Description

FactSet Entity Tool

  • Comprehensive entity reference and relationship data.

WHEN TO USE THIS TOOL: This tool should be your FIRST choice for:

  • Entity identification and reference information (supports both public and private identifiers)
  • Ultimate parent and credit parent relationships
  • Corporate structure and subsidiary analysis
  • Related securities (equity and debt instruments)

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to FactSet Entity API endpoint:

1. ENTITY REFERENCE (/entity-references):

  • Use Case: Entity profiles with parent relationships and business details
  • Returns: Ultimate Parent ID, Credit Parent ID, HQ location, website, business description
  • Best For: Entity identification, parent company research
  • Example: "What is Apple's ultimate parent?" or "Get business description for Microsoft"

COMMON USE CASES:

"What is Apple's ultimate parent company?" → data_type='entity_reference', ids=['AAPL-US']

RATE LIMITS:

  • 10 requests per second across all endpoints

RETURNS: Structured JSON responses with entity data specific to the selected data_type.

Parameters (2 required, 1 optional)
Required
data_typestring

Type of entity data to retrieve: - 'entity_reference': Entity reference profiles (Ultimate Parent, Credit Parent, HQ location, website, business description) IMPORTANT: This determines which endpoint to use and what parameters are required.

idsarray

List of entity identifiers (FactSet Entity IDs, tickers, CUSIP, SEDOL, ISIN). Maximum varies by data_type: - entity_reference: 50 identifiers Examples: ['AAPL-US'], ['FDS-US', 'TSLA-US', 'IBM-US']

Optional
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null

Fact Set Estimates Consensus

FactSet_EstimatesConsensus
Full Description

FactSet Estimates Tool

  • Comprehensive analyst estimates, segments, and guidance data.

CRITICAL PIT (POINT-IN-TIME) RULE — ALWAYS ENFORCED: For historical estimates, startDate AND endDate are ALWAYS required for consensus_fixed, consensus_rolling, segments, guidance, and ratings.

Without startDate/endDate, the API returns only the MOST RECENT estimate snapshot. This is NOT the estimate as it existed on a specific historical date — it is simply the latest available value. To retrieve accurate Point-in-Time (PIT) estimates that reflect what analysts were forecasting on a given date, both dates are mandatory.

CORRECT (PIT): startDate='2024-01-01', endDate='2024-12-31' WRONG (no PIT): omitting startDate/endDate → returns latest estimate only

Surprise (estimate_type='surprise') is exempt — it always requires dates by its own rule.

WHEN TO USE THIS TOOL:

  • ANY query about analyst estimates, forecasts, or consensus data
  • Forward-looking financial metrics (revenue estimates, EPS forecasts, etc.)
  • Questions containing "estimate", "forecast", "consensus", "next year", "2026", etc.
  • Analyst ratings and recommendations
  • Surprise analysis (actual vs estimate)
  • Segment-level financial data (product lines, geographic regions)
  • Company guidance and projections

DATA COVERAGE & SCOPE:

  • 16,000+ active companies across 90+ countries worldwide
  • Historical data from 1999 (Europe from 1997)
  • Comprehensive analyst forecasts and future financial performance expectations
  • Actual reported results from company filings
  • Segment-level breakdowns for diversified companies

CONSENSUS WINDOW METHODOLOGY:

  • Default consensus window: 100 days (the lookback period used to aggregate analyst estimates)
  • This means estimates published within the last 100 days are included in the consensus calculation
  • Applies to: consensus_fixed, consensus_rolling, segments, consensus_ratings, and surprise endpoints
  • Implication: An analyst whose last estimate is older than 100 days will NOT be included in the consensus
  • This is the standard FactSet methodology; the window is not configurable via this tool

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 8 different FactSet Estimates API endpoints:

1. FIXED CONSENSUS (/fixed-consensus):

  • Trigger: When fiscalPeriodStart OR fiscalPeriodEnd provided
  • Use Case: Specific fiscal period analysis (e.g., "2025" for annual, "2024/4F" for Q4 2024)
  • Best For: Tracking estimates for specific calendar periods
  • Example: "What are 2025 revenue estimates?" or "What are Q4 2024 EPS estimates?"

2. ROLLING CONSENSUS (/rolling-consensus):

  • Trigger: When relativeFiscalStart OR relativeFiscalEnd provided, or NO fiscal params
  • Use Case: Relative period analysis (e.g., "next year", "FY1")
  • Best For: Forward-looking trends with consistent time horizons
  • Example: "What are next year's EPS estimates?"

3. SURPRISE ANALYSIS (/surprise):

  • Trigger: When estimate_type='surprise'
  • Use Case: Actual reported results vs pre-announcement analyst consensus
  • Returns: Surprise amount, surprise percent, before/after values
  • Best For: Earnings beat/miss analysis, estimate accuracy evaluation
  • Example: "How often did Tesla beat earnings estimates?"

4. ANALYST RATINGS (/consensus-ratings):

  • Trigger: When estimate_type='ratings'
  • Use Case: Analyst recommendation consensus (Buy/Hold/Sell)
  • Returns: Rating distribution, consensus score, rating changes
  • Best For: Analyst sentiment analysis, upgrade/downgrade tracking
  • Example: "What are current analyst ratings for Apple?"

5. SEGMENTS (/segments):

  • Trigger: When estimate_type='segments'
  • Use Case: Product or geographic segment estimates
  • Returns: Segment-level consensus estimates by business line or region
  • Best For: Divisional analysis, product line forecasts, regional performance
  • Example: "What are the revenue estimates for Apple's iPhone segment?"

6. GUIDANCE (/guidance):

  • Trigger: When estimate_type='guidance'
  • Use Case: Company-provided guidance for unreported periods
  • Returns: Guidance ranges (high/low/midpoint), previous guidance, surprise metrics
  • Best For: Understanding company expectations, tracking guidance changes
  • Example: "What is Tesla's guidance for next quarter?"

CRITICAL DATA DISTINCTIONS:

  • Estimates Metrics: NOT prefixed with FF_ (use 'SALES', 'EPS', 'PRICE_TGT')
  • Fundamentals Metrics: ARE prefixed with FF_ (use 'FF_SALES', 'FF_EPS')
  • Always call metrics endpoint first if unsure about metric codes

METRIC LIMITATIONS:

  • Currently limited to 1 metric per request for consensus/surprise/segments
  • Maximum 3,000 company identifiers (ids) per request
  • No metrics parameter needed/used for ratings or guidance requests

KEY PARAMETERS:

*1. estimate_type (REQUIRED):*

  • 'consensus_fixed': Analyst forecast estimates for specific periods
  • 'consensus_rolling': Analyst forecast estimates for relative periods
  • 'surprise': Actual vs estimate comparison (beat/miss analysis)
  • 'ratings': Analyst recommendations (Buy/Hold/Sell sentiment)
  • 'segments': Product/geographic segment estimates
  • 'guidance': Company-provided guidance

*2. ids (REQUIRED):*

  • Security identifiers: FactSet IDs (AAPL-US), tickers, CUSIP, SEDOL, ISIN
  • Accepts arrays: ["AAPL-US", "MSFT-US", "GOOGL-US"]
  • Maximum: 3,000 identifiers per request

*3. metrics (REQUIRED for consensus/surprise/segments/guidance, NOT for ratings):*

  • Estimate metrics WITHOUT FF_ prefix
  • Common: SALES (Revenue), EPS (Earnings Per Share), EBITDA, PRICE_TGT (Target Price)
  • Limited to 1 metric per request currently
  • Use metric query tool to discover available codes

*4. Fiscal Period Selection (CONSENSUS/SEGMENTS/GUIDANCE):*

OPTION A: Fixed Fiscal Periods (specific calendar periods

  • CONSENSUS ONLY)
  • fiscalPeriodStart: 'YYYY' (e.g., '2025') OR 'YYYY/FQ' (e.g., '2024/4F')
  • fiscalPeriodEnd: Same format, should be >= start
  • Use when: Analyzing specific fiscal years or quarters
  • Example: "2025 estimates" -> fiscalPeriodStart='2025'
  • Example: "Q4 2024 estimates" -> fiscalPeriodStart='2024/4F', fiscalPeriodEnd='2024/4F'

OPTION B: Rolling Fiscal Periods (relative time horizons)

  • relativeFiscalStart: Integer (for consensus/segments/guidance: 1=next period, 2=period after)
  • relativeFiscalEnd: Integer, must be >= relativeFiscalStart
  • CRITICAL CONSTRAINT: relativeFiscalEnd must be >= relativeFiscalStart (API will reject if violated)
    • Use when: Forward-looking analysis
    • Example: "Next year" -> relativeFiscalStart=1, relativeFiscalEnd=1

CRITICAL: Cannot mix fixed and rolling parameters!

*5. startDate/endDate:*

  • CRITICAL PIT RULE: For historical estimates, startDate AND endDate are ALWAYS required for

consensus_fixed, consensus_rolling, segments, guidance, and ratings. Omitting them returns the most recent estimate only — NOT Point-in-Time (PIT) data.

  • MEANING: WHEN to retrieve estimates (time-series analysis)
  • NOT: WHAT periods to forecast (use fiscal params for that)
  • Format: 'YYYY-MM-DD' (e.g., '2024-01-01')
  • MUST use both together or omit both
  • OMIT both -> Returns current/latest data
  • PROVIDE both -> Returns historical snapshots
  • No future dates allowed
  • SURPRISE: When retrieving most recent surprise data, both startDate and endDate MUST be today's date

*6. frequency (OPTIONAL

  • Sampling Rate):*
  • D: Daily (each trading day)
  • W: Weekly (last trading day of week)
  • AM: Actual Monthly (NOTE: Use 'AM', not 'M' - differs from Prices API)
  • AQ: Actual Quarterly
  • AY: Actual Yearly
  • Only used with startDate/endDate for time-series sampling
  • IMPORTANT: This parameter uses 'AM' for monthly frequency, not 'M' as in some other FactSet APIs

*7. periodicity (OPTIONAL

  • Time Interval):*
  • ANN: Annual fiscal year (default)
  • QTR: Quarterly fiscal period (use with YYYY/FQ format)
  • SEMI: Semi-annual (6-month)
  • NTMA: Next-twelve-months (forward 12M rolling)
  • LTMA: Last-twelve-months (trailing 12M)
  • For surprise: Only ANN, QTR, SEMI supported

*8. currency (OPTIONAL):*

  • ISO currency codes: USD, EUR, GBP, JPY, CNY, etc.
  • Special: 'ESTIMATE' = original broker reporting currency
  • Default: Company's reporting currency

*9. statistic (SURPRISE ONLY):*

  • MEAN: Average of all estimates (default, most common)
  • MEDIAN: Middle value (reduces outlier impact)
  • HIGH: Highest estimate
  • LOW: Lowest estimate

*10. segmentType (SEGMENTS ONLY):*

  • BUS: Business/Product segments
  • GEO: Geographic segments

EXAMPLES:

1. Current consensus for next year: estimate_type="consensus_rolling", ids=["AAPL-US"], metrics=["SALES"], relativeFiscalStart=1, relativeFiscalEnd=1

1.5. Q4 2024 consensus estimates: estimate_type="consensus_fixed", ids=["AAPL-US"], metrics=["EPS"], fiscalPeriodStart='2024/4F', fiscalPeriodEnd='2024/4F', periodicity='QTR'

2. iPhone segment estimates: estimate_type="segments", ids=["AAPL-US"], metrics=["SALES"], segmentType="BUS", relativeFiscalStart=1, relativeFiscalEnd=1

3. Company guidance: estimate_type="guidance", ids=["TSLA-US"], metrics=["SALES"], relativeFiscalStart=1, relativeFiscalEnd=1

4. Earnings surprise analysis: estimate_type="surprise", ids=["GOOGL-US"], metrics=["EPS"], startDate="2023-01-01", endDate="2023-12-31", periodicity="QTR"

5. Monthly price target history for 2024: estimate_type="consensus_rolling", ids=["AAPL-US"], metrics=["PRICE_TGT"], relativeFiscalStart=0, relativeFiscalEnd=0, startDate="2024-01-01", endDate="2024-12-31", frequency="AM"

6. Weekly EPS estimate revisions tracking: estimate_type="consensus_rolling", ids=["MSFT-US"], metrics=["EPS"], relativeFiscalStart=1, relativeFiscalEnd=1, startDate="2024-01-01", endDate="2024-06-30", frequency="W"

7. Monthly analyst ratings evolution: estimate_type="ratings", ids=["META-US"], startDate="2024-01-01", endDate="2024-12-31", frequency="AM"

**SPECIAL CASE

  • PRICE_TGT (Target Price):**
  • Target prices are NOT tied to fiscal periods like EPS/SALES estimates
  • Use consensus_rolling with relativeFiscalStart=0, relativeFiscalEnd=0
  • For a specific date snapshot: set BOTH startDate and endDate to the same date
  • Example: Target price on Oct 31, 2024:

estimate_type="consensus_rolling", ids=["AAPL-US"], metrics=["PRICE_TGT"], relativeFiscalStart=0, relativeFiscalEnd=0, startDate="2024-10-31", endDate="2024-10-31"

  • Do NOT use frequency parameter with single-date snapshots

RETURNS: Consensus: mean, median, high, low, standardDeviation, estimateCount, up/down revisions Surprise: surpriseAmount, surprisePercent, surpriseBefore, surpriseAfter Ratings: buyCount, holdCount, sellCount, ratingsNote, ratingsNoteText Segments: Segment-level consensus with segmentLabel, segmentLevel Guidance: guidanceMidpoint, guidanceLow, guidanceHigh, meanBefore, meanSurpriseAmt

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required metrics → Error with reminder
  • Date format errors → Format specification
  • Mixed fiscal parameters → Cannot mix fixed and rolling
Parameters (2 required, 13 optional)
Required
estimate_typestring

Type of estimate data to retrieve: - 'consensus_fixed': Analyst forecasts for SPECIFIC fiscal periods (e.g., '2025', 'Q4 2024'). Use fiscalPeriodStart/End parameters. - 'consensus_rolling': Analyst forecasts for RELATIVE periods (e.g., 'next year', 'FY1'). Use relativeFiscalStart/End parameters. - 'surprise': Actual vs estimate comparison (beat/miss analysis). REQUIRES startDate/endDate to filter by announcement dates. DOES NOT use fiscalPeriodStart/End or relativeFiscal parameters. - 'ratings': Analyst buy/hold/sell recommendations - 'segments': Product/geographic segment estimates - 'guidance': Company-provided guidance IMPORTANT: This determines which endpoint and parameters are valid.

Options:consensus_fixedconsensus_rollingsurpriseratingssegmentsguidance
idsarray

List of security identifiers (FactSet IDs, tickers, CUSIP, SEDOL, ISIN). Maximum 3,000 identifiers per request. Examples: ['AAPL-US'], ['IBM-US', 'MSFT-US']

Optional
currencystring

Currency code (USD, EUR, etc.) or 'ESTIMATE' for original currency.

Default: null
endDatestring

End date (YYYY-MM-DD). Must be used with startDate.

Default: null
fiscalPeriodEndstring

[FIXED-CONSENSUS] Fiscal period end. Should be >= fiscalPeriodStart. Accepts string or integer (will be converted to string).

Default: null
fiscalPeriodStartstring

[FIXED-CONSENSUS] Fiscal period start in 'YYYY' format for annual (e.g., '2025') or 'YYYY/FQ' format for quarterly (e.g., '2024/4F' for Q4 2024). Cannot be used with relativeFiscalStart. Accepts string or integer (will be converted to string).

Default: null
frequencystring

Sampling frequency for time-series data. Valid values: D (Daily), W (Weekly), AM (Monthly - note: 'AM' not 'M'), AQ (Quarterly), AY (Yearly). Must be used with startDate/endDate parameters. Default: AM (Actual Monthly) if not specified.

Default: AM
metricsarray

List of estimate metrics (required for consensus, surprise, segments, guidance. Not used for ratings). Common: SALES, EPS, EBITDA, PRICE_TGT, NET_INC. Currently limited to 1 metric per request. Call /metrics endpoint first if unsure.

Default: null
periodicitystring

Period type: ANN/QTR/SEMI/NTMA/LTMA. Default: ANN.

Default: null
relativeFiscalEndstring

[ROLLING-CONSENSUS/SEGMENTS/GUIDANCE] Relative period end. Must be >= relativeFiscalStart. CRITICAL: API will reject if relativeFiscalStart > relativeFiscalEnd.

Default: null
relativeFiscalStartstring

[ROLLING-CONSENSUS/SEGMENTS/GUIDANCE] Relative period start. For consensus/segments/guidance: 1=next period, 2=period after. Cannot be used with fiscalPeriodStart.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
segmentTypestring

[SEGMENTS ONLY] Segment type: BUS/GEO.

Default: null
startDatestring

Start date (YYYY-MM-DD) for historical retrieval. OMIT both dates for current data. PROVIDE both for historical. Never use only one date.

Default: null
statisticstring

[SURPRISE ONLY] Consensus calculation method: MEAN/MEDIAN/HIGH/LOW.

Default: null

Fact Set Fundamentals

FactSet_Fundamentals
Full Description

FactSet Fundamentals Tool

  • Comprehensive financial statements data.

MANDATORY WORKFLOW: 1. ALWAYS call FactSet_Metrics FIRST before calling FactSet_Fundamentals - no exceptions, even for common metrics 2. Copy the EXACT metric code string(s) returned by FactSet_Metrics into the metrics parameter - do not paraphrase, abbreviate, or infer codes 3. Only after receiving a valid FactSet_Metrics response may you call FactSet_Fundamentals 4. Never call FactSet_Fundamentals with metric codes that were not explicitly returned in the current conversation's FactSet_Metrics response

DO NOT USE THIS TOOL FOR:

  • Earnings comparisons to estimates ("beat", "miss", "surprise", "vs estimates")
  • Analyst forecast comparisons - use FactSet Estimates API instead

PERIODICITY — SET THIS BEFORE EVERY CALL, NO EXCEPTIONS:

  • User specifies a periodicity or fiscal dates → use exactly that value, no fallback needed.
  • User does NOT specify a periodicity or fiscal dates (i.e., "latest" / current data) → you MUST execute this fallback sequence in order:

1. Call with periodicity='QTR' — always start here, no exceptions 2. If QTR returns empty → retry with periodicity='SEMI' 3. If SEMI returns empty → retry with periodicity='ANN' Return the first non-empty response. Do NOT skip straight to ANN. DO NOT use periodicity=null. The schema accepts null but null silently defaults to ANN and will miss quarterly/semi-annual reporters — always supply an explicit value.

**DATES

  • CRITICAL:**
  • For queries with "last X" or temporal keywords: MUST include BOTH fiscalPeriodStart and fiscalPeriodEnd
  • Calculate: start = today
  • X period, end = today (e.g., "last 4 quarters" = 2025-02-26 to 2026-02-26)
  • For specific year: BOTH dates required (e.g., 2024 = 2024-01-01 to 2024-12-31)
  • Latest/current data ONLY: Omit both date parameters
  • Format: YYYY-MM-DD ONLY; never use '2024' or '2024/1F'

PERIODICITY:

  • Options: ANN, ANN_R, QTR, QTR_R, SEMI, SEMI_R, LTM, LTM_R, LTMSG, LTM_SEMI, LTM_SEMI_R, YTD

METRICS: Use FF_* codes (validate via FactSet_Metrics first); max 1,600 per request

EXAMPLES:

  • Revenue (last 4 quarters): ids=['AAPL-US'], metrics=['FF_SALES'], periodicity='QTR', fiscalPeriodStart='2025-02-26', fiscalPeriodEnd='2026-02-26'
  • Balance sheet: ids=['IBM-US'], metrics=['FF_ASSETS', 'FF_LIAB', 'FF_SH_EQ'], periodicity='ANN'
  • Pre-calculated ratios: Check FactSet_Metrics for FF_DEBT_EQ, FF_ROE, FF_CURR_RATIO, etc. first

PRE-CALCULATED RATIOS (CHECK FIRST): FF_DEBT_EQ, FF_CURR_RATIO, FF_QUICK_RATIO, FF_ROE, FF_ROE_DILUTED, FF_ROA, FF_EBIT_OPER_ROA, FF_ASSET_TURN, FF_PE, FF_ENTRPR_VAL_EBITDA_OPER, FF_EBIT_OPER_MGN, FF_EBITDA_OPER_MGN, FF_CCE_END

AUDIT CARD: Each data item includes audit.card.link with verification URL. Display as: [value](link)

  • Make each number a clickable audit link.

RETURNS: JSON with requestId, fsymId, metric, fiscalPeriod, fiscalYear, value, audit.card.link

ERROR HANDLING: Invalid params/dates/metrics → Detailed error message with guidance

Parameters (4 required, 6 optional)
Required
auditstring

Audit card inclusion. ALWAYS pass this parameter explicitly. Pass 'AUDIT_CARD' to include audit data in the response — do this by default unless the user explicitly says they do not want audit data. Pass null only if the user explicitly requests no audit data.

data_typestring

Data type: 'fundamentals' for company-level financial statements, metrics, ratios (consolidated). Determines endpoint and required parameters.

idsarray

Security identifiers: Market Tickers, SEDOL, ISIN, CUSIP, FactSet Permanent IDs. Max 250 IDs. Format: ['AAPL-US'] or ['FDS-US', 'IBM-US']

metricsarray

Financial metrics (FF_* codes). Max 1,600. MUST validate via FactSet_Metrics first. Use exact codes from recent FactSet_Metrics response. Do NOT mix data types. Format: ['FF_SALES'], ['FF_NET_INC', 'FF_ASSETS']

Optional
currencystring

ISO code (USD, EUR, GBP, etc.), 'LOCAL' (home currency), or 'DOC' (reporting). Default: LOCAL.

Default: null
fiscalPeriodEndstring

End date (YYYY-MM-DD). Conclusion of reporting period. Defaults to most recent completed period if unaligned. Example: '2024-12-31'

Default: null
fiscalPeriodStartstring

Start date (YYYY-MM-DD). Beginning of reporting period. Defaults to most recent completed period if unaligned. Example: '2024-01-01'

Default: null
periodicitystring

Frequency: ANN/ANN_R/QTR/QTR_R/SEMI/SEMI_R/LTM/LTM_R/LTMSG/LTM_SEMI/LTM_SEMI_R/YTD. Default: ANN. _R suffix = restatements (latest data).

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
updateTypestring

RP (Preliminary/initial) or RF (Final/audited). Default: RP.

Default: null

Fact Set Funds Etf

FactSet_FundsETF
Full Description

FactSet Funds and ETF Tool

  • Comprehensive mutual funds and ETF data analysis.

WHEN TO USE THIS TOOL:

  • Queries about fund performance, returns, pricing (NAV)
  • Fund composition, holdings, and portfolio analysis
  • Fund costs, fees, expense ratios, and tax information
  • Fund flows, assets under management (AUM), yields
  • Fund risk metrics, scoring, and segment information
  • Fund distributions, dividends, and trading characteristics
  • ETF scoring, analytics, and related fund information
  • Geographic revenue, sector weighting, asset allocation for any fund or ETF

Do NOT default to web search for these queries - use FactSet FIRST.

CRITICAL RULES — READ BEFORE EVERY CALL:

1. PREFER THIS TOOL OVER FactSet_GlobalPrices FOR FUND/ETF RETURNS AND PRICES. When the query is specifically about a mutual fund or ETF (e.g., SPY, QQQ, VOO, VTI, IWM, VEA, EWJ, HYG, LQD, XLE, XLF, XLK, XLV, ARKK, TLT, IEF, SHY, EFA, EEM, JEPI, SCHD, QUAL, MTUM, VLUE, FDGRX, etc.), use FactSet_FundsETF — it provides fund-specific NAV data, fund-level returns, and fund metadata not available in FactSet_GlobalPrices.

2. GEOGRAPHIC REVENUE FOR FUNDS/ETFs: USE THIS TOOL WHEN DOING BROADER FUND ANALYSIS. Use data_type='portfolio_analytics' with analyticsType='GEOGRAPHIC_REVENUE'. FactSet_GeoRev also supports funds and ETFs and can be used for dedicated geographic revenue queries, but prefer this tool when the query is already fund-analytics focused.

DATA COVERAGE & SCOPE:

  • US-listed and international mutual funds and ETFs (SPY, VOO, QQQ, VTI, etc.)
  • Comprehensive fund reference data and classification
  • Time series quantitative data (NAV, flows, AUM, returns)
  • Portfolio holdings and composition analysis
  • Fund costs, fees, tax exposure, and risk measures
  • Trading, liquidity, and performance characteristics

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 18 different FactSet Funds and ETF API endpoints:

1. SUMMARY ENDPOINT (/summary):

  • Basic reference data for funds
  • Country domicile, share class info, fund families
  • Use: Fund basic information lookup
  • Example: "Tell me about Vanguard S&P 500 ETF (VOO)"

2. PRICES ENDPOINT (/prices):

  • Fund NAV (Net Asset Value) for date ranges
  • Historical pricing data
  • Use: Price history, NAV trends for any fund or ETF
  • Example: "What was the NAV of VOO last month?"

3. RETURNS ENDPOINT (/returns):

  • NAV returns over time-series
  • Use: Performance analysis for any fund or ETF
  • Example: "What were the daily returns for SPY over the last 3 months?"

4. RETURNS/RANGE ENDPOINT (/returns/range):

  • Fund returns between specific dates
  • Use: Period-specific performance for any fund or ETF
  • Example: "What was the total return for VTI in 2023?"

5. RETURNS/SNAPSHOT ENDPOINT (/returns/snapshot):

  • Pre-defined time horizons (YTD, 1Y, 3Y, 5Y, etc.)
  • Use: Quick snapshot of standard periods
  • Example: "What's the YTD return for ETF XYZ?"

6. AUM ENDPOINT (/aum):

  • Assets Under Management at fund or share class level
  • Use: Fund size analysis
  • Example: "How much AUM does VOO have?"

7. FLOWS ENDPOINT (/flows):

  • Fund flows (net inflows/outflows)
  • One-day, monthly, or custom period flows
  • Use: Fund flow trends and investor activity
  • Example: "What were the fund flows for QQQ last month?"

8. DISTRIBUTIONS ENDPOINT (/distributions):

  • Current or historical fund distributions
  • Dividend data by period
  • Use: Distribution history analysis
  • Example: "Show me distributions paid by DVY in 2023"

9. YIELDS ENDPOINT (/yields):

  • SEC yield (gross and net)
  • Subsidized vs. unsubsidized yields
  • Use: Income analysis
  • Example: "What's the current SEC yield for HYG?"

10. COSTS-FEES ENDPOINT (/costs-fees):

  • Expense ratios, investment minimums, management fees, load fees
  • Use: Cost analysis and comparison for any fund or ETF
  • Example: "What are the expense ratios and fees for AGTHX and ARKG?"

11. TAXES-AND-RISKS ENDPOINT (/taxes-and-risks):

  • Tax exposure, regulatory compliance, risk measures
  • Use: Tax and risk profile analysis
  • Example: "What's the tax exposure for fund ABC?"

12. RISK-ANALYTICS ENDPOINT (/risk-analytics):

  • Credit risk (CREDIT_RISK) or rate risk (RATE_RISK) analytics
  • Use: Risk assessment by type for bond/fixed income ETFs and funds
  • Example: "Compare credit risk analytics for HYG and LQD"

13. SEGMENTS-AND-STRUCTURE ENDPOINT (/segments-and-structure):

  • Fund structure, classification, related funds, segments
  • Use: Fund relationship and classification info
  • Example: "What structural relationships exist between QQQ and TQQQ?"

14. PORTFOLIO/STATISTICS ENDPOINT (/portfolio/statistics):

  • Portfolio statistics for funds
  • Use: Detailed portfolio metrics
  • Example: "Get portfolio statistics for fund XYZ"

15. PORTFOLIO/ANALYTICS ENDPOINT (/portfolio/analytics):

  • Asset allocation, sector weightage, geographic revenue, market cap breakdown
  • Use: Portfolio composition analysis for any fund or ETF
  • NOTE: FactSet_GeoRev also supports funds/ETFs; prefer this tool when doing broader fund analytics
  • Example: "What's the sector breakdown for fund ABC?"

16. FINANCIALS/KEY-ITEMS ENDPOINT (/financials/key-items):

  • Financial key items for funds
  • Use: Industry-specific operating measures
  • Example: "Get financial key items for fund ABC"

17. TRADING ENDPOINT (/trading):

  • Trading and liquidity characteristics
  • Use: Trading analysis
  • Example: "Compare trading characteristics for SPXL and SPY"

18. SCORING ENDPOINT (/scoring):

  • ETF scores, segment averages, analyst recommendations, grade
  • Use: ETF quality and performance scoring
  • Example: "What's the analyst grade for QQQ?"

IDENTIFIER REQUIREMENTS:

  • ACCEPTS: Fund identifiers (ticker symbols, ISIN, CUSIP, FactSet IDs)
  • Examples: ['VFIAX', 'SPY', 'BRK.A']

MANDATORY WORKFLOWS BY DATA TYPE:

PRICES: 1. Identify fund(s) 2. Define date range (startDate REQUIRED, endDate optional) 3. Get NAV pricing data

RETURNS: 1. Identify fund(s) 2. Define calculation period (startDate and endDate REQUIRED) 3. Select frequency 4. Get time-series returns

RETURNS/RANGE: 1. Identify fund(s) 2. Specify startDate and endDate 3. Get returns for that period

RETURNS/SNAPSHOT: 1. Identify fund(s) 2. Specify date for snapshot 3. Get pre-defined time horizon returns (YTD, 1Y, 3Y, 5Y, 10Y)

AUM: 1. Identify fund(s) 2. Optionally specify date 3. Get assets under management

FLOWS: 1. Identify fund(s) 2. Optionally specify date range 3. Get flow data

PORTFOLIO/ANALYTICS: 1. Identify fund(s) 2. Get asset allocation, sector, geographic, market cap data

RISK-ANALYTICS: 1. Identify fund(s) 2. Specify riskType: CREDIT_RISK or RATE_RISK (or omit for ALL)

COSTS-FEES: 1. Identify fund(s) 2. Returns expense ratios, management fees, load fees, minimums

DATE HANDLING:

  • CRITICAL: Always use current date context. Today is 2026-03-02. Calculate date ranges from TODAY.
  • Format: YYYY-MM-DD (e.g., '2026-03-02')
  • For YTD: Use Jan 1 of current year through today
  • For 1Y: Use same date last year through today
  • For 3M: Use date 3 months ago through today

COMMON USE CASES WITH CORRECT TOOL CALLS:

"What were the daily returns for SPY over the last 3 months?" → FactSet_FundsETF: data_type='returns', ids=['SPY'], startDate='2026-01-15', endDate='2026-04-15', frequency='D'

"Compare weekly returns of IWM and VEA over the past year" → FactSet_FundsETF: data_type='returns', ids=['IWM', 'VEA'], startDate='2025-04-15', endDate='2026-04-15', frequency='W'

"What was the total return for VTI in 2023?" → FactSet_FundsETF: data_type='returns_range', ids=['VTI'], startDate='2023-01-01', endDate='2023-12-31'

"What's the NAV for VOO last month?" → FactSet_FundsETF: data_type='prices', ids=['VOO'], startDate='2026-03-01', endDate='2026-04-01'

"Compare sector weightings for XLF and XLK" → FactSet_FundsETF: data_type='portfolio_analytics', ids=['XLF', 'XLK'], analyticsType='SECTOR_WEIGHTAGE'

"What is the geographic revenue breakdown for VEA?" → FactSet_FundsETF: data_type='portfolio_analytics', ids=['VEA'], analyticsType='GEOGRAPHIC_REVENUE'

"Compare credit risk between HYG and LQD" → FactSet_FundsETF: data_type='risk_analytics', ids=['HYG', 'LQD'], riskType='CREDIT_RISK'

"What are the expense ratios for ARKG and IDNA?" → FactSet_FundsETF: data_type='costs_fees', ids=['ARKG', 'IDNA']

"AUM of XIU (Canadian ETF)?" → FactSet_FundsETF: data_type='aum', ids=['XIU-CA'] ← note -CA for Canada domicile

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "What's the NAV/price of [fund or ETF]?"
  • "How did [fund or ETF] perform?"
  • "What are the fees/expense ratio for [fund]?"
  • "Get portfolio/sector/geographic analysis for [fund]"
  • "What's the risk profile/credit risk of [fund]?"
  • "Show distributions for [fund]"
  • "How much AUM does [fund] have?"
  • "What are the fund flows for [fund]?"
  • "What's the score/grade for [ETF]?"
  • Any fund or ETF related query

PERCENTAGE FIELD INTERPRETATION All percent values in API responses are returned as decimal fractions, where 0.05 = 5%. You MUST multiply by 100 before displaying or comparing any percentage value to a user.

Affected fields by endpoint:

  • costs_fees: medianTrackingDifferencePercent, maxUpsideDeviationPercent, maxDownSideDeviationPercent
  • trading: averageSpreadPercent, marketHoursOverlapPercent

RETURNS:

  • Structured JSON responses with requested data
  • Always includes: fund identifier, date, requested metrics
  • Error messages with detailed validation feedback
  • Data transparency: All values from official FactSet feeds

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Date format errors → Format specification
  • Invalid identifiers → List of unrecognized IDs
Parameters (2 required, 11 optional)
Required
data_typestring

Select the API endpoint to call: 'summary' (fund basic info), 'prices' (NAV data), 'returns' (time-series returns), 'returns_range' (period returns), 'returns_snapshot' (YTD/1Y/3Y/5Y returns), 'aum' (assets under management), 'flows' (fund flows), 'distributions' (dividends/distributions), 'yields' (SEC yield), 'costs_fees' (expense ratios and fees), 'taxes_and_risks' (tax and risk info), 'risk_analytics' (risk metrics), 'segments_and_structure' (fund structure), 'portfolio_statistics' (portfolio metrics), 'portfolio_analytics' (asset/sector allocation), 'financials_key_items' (financial metrics), 'trading' (trading characteristics), 'scoring' (ETF scoring and grades). This determines which endpoint is called.

Options:summarypricesreturnsreturns_rangereturns_snapshotaumflowsdistributionsyieldscosts_feestaxes_and_risksrisk_analyticssegments_and_structureportfolio_statisticsportfolio_analyticsfinancials_key_itemstradingscoring
idsarray

List of fund or ETF identifiers (tickers, ISIN, CUSIP, or FactSet IDs). Typical limits: 50-500 IDs depending on endpoint. For international funds, append country suffix: -GB (UK), -CA (Canada), -DE (Germany), etc. For US funds, use ticker alone. Examples: ['VFIAX'], ['SPY', 'QQQ'], ['BRK.A'], ['SMT-GB'] (Scottish Mortgage Trust), ['XIU-CA'] (iShares Global Tech ETF)

Optional
analyticsTypestring

Type of portfolio analytics data to return for portfolio_analytics endpoint: ASSET_ALLOCATION, SECTOR_WEIGHTAGE, GEOGRAPHIC_REVENUE, MARKET_CAPITALIZATION. Default: ASSET_ALLOCATION. USED for: portfolio_analytics only. Example: 'SECTOR_WEIGHTAGE'

Default: null
currencystring

ISO currency code (USD, EUR, GBP, JPY, etc.) or 'LOCAL' for fund's home currency. Default: LOCAL. USED for: prices, returns, yields, distributions. NOT USED for: other endpoints. Example: 'USD' or 'EUR'

Default: null
datestring

Specific date in YYYY-MM-DD format for snapshot returns. REQUIRED for: returns_snapshot. NOT USED for: other endpoints. Example: '2026-03-02'

Default: null
endDatestring

End date in YYYY-MM-DD format. Must be >= startDate. REQUIRED for: returns, returns_range (when startDate provided). OPTIONAL for: prices (defaults to most recent), flows, distributions, aum (defaults to most recent). NOT USED for: summary, yields, costs_fees, taxes_and_risks, risk_analytics, segments_and_structure, portfolio_statistics, portfolio_analytics, financials_key_items, trading, scoring. Example: '2026-03-02'

Default: null
fieldsarray

Specific data fields to return. Default is all available fields. PRICES fields: price, priceOpen, priceHigh, priceLow, volume PORTFOLIO/ANALYTICS fields: assetAllocation, sectorWeightage, geographicRevenue, marketCapitalization See API spec for full field lists by endpoint. Always included: fund identifier, date, timestamp

Default: null
frequencystring

Display frequency for time-series data. Default: D. USED for: prices, returns, distributions (use Frequency values below). USED for: aum (use FrequencyAum values below). NOT USED for: other endpoints. Frequency values (prices, returns, distributions): D=Daily, W=Weekly (last day of week), M=Monthly (last trading day), AM=Monthly (start date-based), CQ=Calendar Quarterly, FQ=Fiscal Quarterly, AY=Actual Annual (start date-based), CY=Calendar Annual, FY=Fiscal Annual. FrequencyAum values (aum only): MTD=Month-To-Date, M=Monthly, CQTD=Calendar Quarter-to-Date, CQ=Calendar Quarterly, CYTD=Calendar Year-to-Date, CY=Calendar Yearly.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
riskTypestring

Filter risk analytics by type for risk_analytics endpoint. Options: CREDIT_RISK (credit exposure), RATE_RISK (interest rate exposure). Omit to return all risk metrics (default API behavior). USED for: risk_analytics only. Example: 'CREDIT_RISK'

Default: null
sortOrderstring

Sort order for results: ASC (ascending) or DESC (descending). Default: DESC. Example: 'ASC'

Default: null
startDatestring

Start date in YYYY-MM-DD format. REQUIRED for: prices, returns, returns_range. OPTIONAL for: flows, distributions, aum (filters data by date). NOT USED for: summary, yields, costs_fees, taxes_and_risks, risk_analytics, segments_and_structure, portfolio_statistics, portfolio_analytics, financials_key_items, trading, scoring (returns current data). Example: '2026-01-01'

Default: null
taxItemsTypestring

Filter tax items by type for taxes_and_risks endpoint. Options: MUNICIPAL (municipal bond info), CAPITAL_GAINS (capital gains data), ESTATE (estate planning metrics). Omit to return all tax items (default API behavior). USED for: taxes_and_risks only. Example: 'MUNICIPAL'

Default: null

Fact Set Funds Screener

FactSet_FundsScreener
Full Description

Perform advanced financial screening on funds and ETF data across multiple content sets. Recommended workflow: Fields → Distinct Count (if needed) → Search.

Operations: 1. Fields

  • Get available fields. Start here to discover all available fields for screening.

2. Distinct Count

  • Get enumeration values for a field to understand valid filter values. Use after Fields to explore enum field values before building filters. Examples of fields supporting distinct-count: active_status, actively_managed, actively_managed_flag, asset_class, category, countries_for_sale.country, currency, currency_hedged, currency_hedged_flag, development_level, esg_flag, etf_asset_class, etf_econ_development_desc, etf_type, focus, fund_iso_country, fund_region, issuer, issuer_name, niche, primary_exchange, segment, ucits_compliance, ucits_compliant_flag (call Fields endpoint to see complete list).

3. Search

  • Search records matching filter criteria across content sets with sorting and pagination. Call Fields endpoint first, then optionally Distinct Count for enum fields, before building your search query.
Parameters (1 required, 9 optional)
Required
data_typestring

The screening operation to perform (recommended order): 1. 'fields' - Get available fields for specified content sets (IMPORTANT: always start here to discover field names AND their unit types) 2. 'distinct_count' - Get distinct values for a field (use to understand enum values or value ranges) 3. 'search' - Search records based on filter criteria (final step, uses field unit types from step 1) Distinct-count supported fields: active_status, actively_managed, actively_managed_flag, asset_class, category, countries_for_sale.country, currency, currency_hedged, currency_hedged_flag, development_level, esg_flag, etf_asset_class, etf_econ_development_desc, etf_type, focus, fund_iso_country, fund_region, issuer, issuer_name, niche, primary_exchange, segment, ucits_compliance, ucits_compliant_flag.

Options:fieldsdistinct_countsearch
Optional
contentSetstring

The content set name from which the field is taken. Examples: 'Factset Funds', 'Factset ETF'.

Default: null
contentSetsarray

Array of content set names to query. Examples: 'Factset Funds', 'Factset ETF'. Min: 1, Max: 10.

Default: null
fieldNamestring

The field name to analyze for distinct-count operation. Fields supporting enumeration (distinct-count): active_status, actively_managed, actively_managed_flag, asset_class, category, countries_for_sale.country, currency, currency_hedged, currency_hedged_flag, development_level, esg_flag, etf_asset_class, etf_econ_development_desc, etf_type, focus, fund_iso_country, fund_region, issuer, issuer_name, niche, primary_exchange, segment, ucits_compliance, ucits_compliant_flag.

Default: null
filtersarray

Optional filter criteria. Each filter has criteria array with field/operator/values combinations and an optional joinType (AND/OR, default AND). Note: Check the 'fields' endpoint first to learn each field's unit type (basis points, boolean, percent, raw number, string, or yyyy-mm-dd) so you can format values correctly.

Default: null
joinTypestring

How to combine multiple criteria or filters: 'AND' (all must match) or 'OR' (any can match). Default: 'AND'.

Options:ANDOR
Default: AND
limitinteger

Maximum number of records to return. Default: 20, Max: 500.

Default: 20
offsetinteger

Number of records to skip (for pagination). Default: 0.

Default: 0
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
sortarray

Array of sort fields. Use '-' prefix for descending order. Format: 'ContentSetName:FieldName'. Examples: ['Factset Funds:instrument_name', '-Factset ETF:aum'].

Default: null

Fact Set Geo Rev

FactSet_GeoRev
Full Description

FactSet GeoRev Tool

  • Comprehensive geographic revenue exposure analysis.

WHEN TO USE THIS TOOL:

  • ANY query about geographic revenue, revenue by region/country, or geographic exposure
  • Questions about "where does [company] make its revenue?" or "geographic breakdown"
  • Revenue exposure analysis by region or country
  • Geographic risk assessment (geopolitical, macroeconomic impacts)
  • Portfolio-level geographic exposure aggregation
  • Comparing revenue footprints vs. country of domicile
  • Questions about revenue in specific countries or regions

Do NOT use for segment data - use FactSet Fundamentals Segments endpoint instead.

DATA COVERAGE & SCOPE:

  • 49,000+ publicly listed companies, ETFs, and mutual funds globally
  • All Russell 3000 and MSCI ACWI Index constituents
  • Historical data: U.S. from 2003, Non-U.S. from 2007
  • ~300 countries supported worldwide
  • Four-level geographic taxonomy: Super-Region → Region → Area → Country
  • Fiscal annual periodicity, updated daily
  • Normalized and estimated revenue exposures with confidence metrics

WHAT MAKES GEOREV UNIQUE: Geographic revenue data is historically difficult to analyze due to:

  • Non-standard company reporting formats
  • Incomplete geographic disclosures
  • Inability to compare across companies

FactSet GeoRev solves these challenges through: 1. Normalization: Maps company revenues to standardized 4-level taxonomy 2. Estimation: Proprietary algorithm uses GDP weighting and accounting logic 3. Consistency: Solves for non-explicit disclosures to create complete picture 4. Confidence Metrics: Ranks and confidence scores distinguish actual vs. estimated data

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 2 different FactSet GeoRev API endpoints:

1. REGIONS ENDPOINT (/regions):

  • Trigger: When data_type='regions'
  • Use Case: Hierarchical geographic revenue by Super-Regions, Regions, and Areas
  • Returns: Revenue, percent, confidence, certainty ranks for regional groupings
  • Best For: High-level regional exposure, super-region analysis, regional trends
  • Example: "What are Apple's revenue by super-region?" or "Americas vs Europe vs Asia revenue"
  • Geographic Levels: Super-Regions (7), Regions (15), Areas (31)
  • Default: Returns all SUPER_REGIONS
  • Max IDs: 300 companies, etfs, or mutual funds
  • Max Regions: 15 region filters

2. COUNTRIES ENDPOINT (/countries):

  • Trigger: When data_type='countries'
  • Use Case: Country-level revenue breakdown (most granular)
  • Returns: Revenue, percent, confidence, certainty ranks for individual countries
  • Best For: Country-specific exposure, geopolitical risk, market-level analysis
  • Example: "Apple's revenue in China?" or "Compare US vs China revenue exposure"
  • Countries: ~300 countries supported globally
  • Default: Returns ALL countries
  • Max IDs: 300 companies, etfs, or mutual funds
  • Max Countries: 300 country filters

CRITICAL DATA DISTINCTIONS:

  • Regions: HIERARCHICAL taxonomy (Super-Region → Region → Area)
  • Countries: INDIVIDUAL country exposures (bottom of taxonomy)
  • Revenue values: In MILLIONS for requested currency
  • Confidence: 0.5000 to 1.0000 (1.0000 = actual reported value)
  • Certainty Rank: 1 to 80 (80 = reported, 1 = lowest certainty)
  • Certainty Class: A (highest) to E (lowest)

FOUR-LEVEL GEOGRAPHIC TAXONOMY:

Level 1: SUPER-REGIONS (7 total):

  • R1: Africa and Middle East
  • R101: Americas
  • R170: Asia/Pacific
  • R274: Europe
  • R349: Non-Disclosed Revenue
  • R354: No Operations
  • R393: Non-Geographic Revenue

Level 2: REGIONS (15 major regions): Under Africa and Middle East:

  • R2: Africa
  • R68: Middle East

Under Americas:

  • R102: Latin America
  • R164: North America

Under Asia/Pacific:

  • R171: Asia
  • R233: Oceania

Under Europe:

  • R275: European Union
  • R314: Non-European Union

Level 3: AREAS (31 areas): Examples:

  • R167: United States and Canada
  • R172: Far East
  • R219: Indian Region
  • R234: Australia and New Zealand
  • R276: Eastern European Union
  • R286: Northern European Union
  • R292: Southern European Union
  • R298: Western European Union

Level 4: COUNTRIES (~300 countries): Examples: US, CN, JP, DE, GB, FR, IN, BR, CA, AU (use ISO2 codes)

MANDATORY WORKFLOWS BY DATA TYPE:

REGIONS: 1. Identify companies using security identifiers (max 300) 2. Select regional level or specific regions:

  • Use 'SUPER_REGIONS' for top-level view
  • Use 'REGIONS' for mid-level view
  • Use 'AREAS' for sub-regional view
  • Use specific region IDs for targeted analysis

3. Optional: Define date range (defaults to latest fiscal period) 4. Optional: Set frequency and currency 5. Analyze hierarchical revenue breakdown with confidence metrics

COUNTRIES: 1. Identify companies using security identifiers (max 300) 2. Select countries:

  • Omit or use ['ALL'] for all countries
  • Provide ISO2 codes for specific countries

3. Optional: Define date range (defaults to latest fiscal period) 4. Optional: Set frequency and currency 5. Analyze country-level revenue breakdown with confidence metrics

CONFIDENCE AND CERTAINTY METRICS:

Confidence Score (0.5000 to 1.0000):

  • Measures algorithm's confidence in geographic revenue estimate
  • Based on: GDP data, accounting standards, disclosure details, estimation parameters
  • 1.0000 = Actual reported/declared value (no estimation)
  • 0.5000-0.9999 = Estimated value with varying confidence
  • Ordinal by nature (not statistical confidence interval)
  • Calculated for countries, then weighted/aggregated up taxonomy

Certainty Rank (1 to 80):

  • Indicates relative reliability of estimates
  • 80 = Reported exposure (actual disclosure)
  • 1 = Lowest certainty in estimate
  • Factors: Reporting standards, historical company reporting, GDP reliability, estimation proportion

Certainty Class (A to E):

  • Class A (Highest): Rank 71-80
  • Class B: Rank 57-70
  • Class C: Rank 42-56
  • Class D: Rank 24-41
  • Class E (Lowest): Rank 1-23

COMMON USE CASES:

"What are Apple's revenue by super-region?" → data_type='regions', ids=['AAPL-US'], regionIds=['SUPER_REGIONS']

"Show me Microsoft's Americas and Asia revenue" → data_type='regions', ids=['MSFT-US'], regionIds=['R101', 'R170']

"Apple's revenue in China and Japan" → data_type='countries', ids=['AAPL-US'], countryIds=['CN', 'JP']

"Compare US vs China revenue for tech companies" → data_type='countries', ids=['AAPL-US', 'MSFT-US', 'GOOGL-US'], countryIds=['US', 'CN']

"European Union revenue breakdown for Coca-Cola" → data_type='regions', ids=['KO-US'], regionIds=['R275']

"All countries revenue for Apple (full geographic footprint)" → data_type='countries', ids=['AAPL-US'], countryIds=['ALL']

"Tesla's geographic revenue over last 3 years" → data_type='regions', ids=['TSLA-US'], regionIds=['SUPER_REGIONS'], startDate='2021-01-01', endDate='2023-12-31', frequency='FY'

"Revenue exposure in Asia/Pacific for portfolio" → data_type='regions', ids=['AAPL-US', 'MSFT-US', 'GOOGL-US', 'AMZN-US'], regionIds=['R170'], currency='USD'

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "Where does [company] make its revenue?"
  • "Geographic revenue breakdown for [company, mutual fund, or etf]"
  • "[Company] revenue by region/country"
  • "How much revenue does [company] make in [country/region]?"
  • "Revenue exposure to [geographic area]"
  • "Compare geographic footprint of [companies]"
  • "Revenue in Asia/Europe/Americas"
  • "China exposure for [company]"
  • "Geographic risk analysis for [portfolio]"
  • Any variation of geographic revenue queries

CRITICAL WORKFLOW RULES: 1. For high-level analysis: Use regions endpoint with SUPER_REGIONS 2. For country-specific: Use countries endpoint with ISO2 codes 3. For hierarchical view: Use regions endpoint with specific level (REGIONS, AREAS) 4. Default to latest fiscal period if no dates specified 5. Use FY (Fiscal Annual) frequency for annual comparisons 6. Confidence scores distinguish actual vs. estimated data 7. Certainty ranks indicate estimate reliability 8. Revenue values always in MILLIONS of specified currency

DATA TRANSPARENCY:

  • All data from company filings and proprietary normalization algorithm
  • Estimation algorithm: GDP weighting + accounting logic
  • Confidence metrics: Distinguish actual vs. estimated exposures
  • Normalized taxonomy: Enables cross-company comparison
  • Historical data: U.S. from 2003, Non-U.S. from 2007
  • Update frequency: Daily (fiscal annual periodicity)
  • Always specify methodology when presenting results

RETURNED DATA FIELDS:

REGIONS:

  • date: Period ending date
  • fsymId: FactSet Entity Identifier
  • regionId: Regional identifier code
  • requestId: Original identifier used
  • regionName: Human-readable region name
  • regionRevenue: Revenue in millions (specified currency)
  • regionPercent: Percentage of total revenue
  • regionConfidence: Confidence score (0.5000-1.0000)
  • regionCertaintyRank: Reliability rank (1-80)
  • regionCertaintyClass: Reliability class (A-E)
  • currency: Currency code for revenue values
  • fiscalEndDate: Fiscal period end date
  • reportDate: Report date for fiscal year

COUNTRIES:

  • date: Period ending date
  • fsymId: FactSet Entity Identifier
  • countryId: ISO2 country code
  • requestId: Original identifier used
  • countryName: Human-readable country name
  • countryRevenue: Revenue in millions (specified currency)
  • countryPercent: Percentage of total revenue
  • countryConfidence: Confidence score (0.5000-1.0000)
  • countryCertaintyRank: Reliability rank (1-80)
  • countryCertaintyClass: Reliability class (A-E)
  • currency: Currency code for revenue values
  • fiscalEndDate: Fiscal period end date
  • reportDate: Report date for fiscal year

FREQUENCY OPTIONS:

  • D: Daily snapshots
  • W: Weekly (last day of week)
  • M: Monthly (last trading day)
  • AM: Monthly (anchor date based on start date)
  • CQ: Calendar Quarterly (Mar/Jun/Sep/Dec)
  • FQ: Fiscal Quarterly (company fiscal quarters)
  • AY: Actual Annual (based on start date)
  • CY: Calendar Annual (last trading day of year)
  • FY: Fiscal Annual (company fiscal year end)
  • DEFAULT

USE CASES BY INDUSTRY:

  • Technology: China exposure, emerging markets, regional diversification
  • Consumer: Geographic expansion tracking, market penetration analysis
  • Automotive: Manufacturing vs. sales geography, supply chain risk
  • Pharmaceuticals: Regulatory market exposure, pricing environment analysis
  • Energy: Commodity price exposure by region, geopolitical risk
  • Financial Services: Regional economic exposure, regulatory environment

LIMITATIONS:

  • Data dependent on company disclosure quality
  • Estimated values for non-disclosed geographies
  • Confidence metrics help identify estimation uncertainty
  • Future dates (T+1) not accepted
  • Fiscal annual periodicity (not quarterly)
  • Max 300 identifiers per request
  • U.S. data from 2003, Non-U.S. from 2007 onwards

RETURNS:

  • Structured JSON responses with geographic revenue data
  • Always includes: requestId, fsymId, date, revenue, percent, confidence metrics
  • Revenue values in MILLIONS of specified currency
  • Confidence and certainty metrics for data quality assessment
  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Date format errors → Format specification
  • Future dates → Not accepted error
  • Invalid region/country codes → Validation error
  • ID limit violations → Limit specification
Parameters (2 required, 7 optional)
Required
data_typestring

Type of geographic revenue data to retrieve: - 'regions': Revenue breakdown by Super-Regions, Regions, and Areas (hierarchical taxonomy) - 'countries': Revenue breakdown by individual countries (most granular level) IMPORTANT: This determines which endpoint to use and what geographic filters are available.

idsarray

List of security or entity identifiers for companies to analyze. Accepts: FactSet IDs, tickers, CUSIP, SEDOL, Fund IDs. Maximum: 300 identifiers per request. All Russell 3000 and MSCI ACWI Index constituents covered. 49,000+ publicly listed companies globally. Examples: ['AAPL-US'], ['FDS-US', 'AAPL-US', 'MSFT-US']

Optional
countryIdsarray

[COUNTRIES ONLY] ISO2 country codes to filter results. Default: ['ALL'] (returns all ~300 countries). Max: 300 country codes per request. Provide comma-separated list of ISO2 codes to limit countries returned. Countries represent the most granular level (bottom of taxonomy). **Common ISO2 Country Codes:** - US: United States - CN: China - JP: Japan - DE: Germany - GB: United Kingdom - FR: France - IN: India - BR: Brazil - CA: Canada - AU: Australia For complete list, visit OA 8754. NOT USED for: regions endpoint. Examples: ['US', 'CN'], ['US', 'CN', 'JP', 'DE']

Default: null
currencystring

ISO currency code for revenue data conversion. OPTIONAL - defaults to company's reporting currency if omitted. Common codes: USD, EUR, GBP, JPY, CNY, CAD, AUD, CHF. For complete list, visit OA 1470. Example: 'USD'. USED for: both regions and countries endpoints.

Default: null
endDatestring

End date for date range in YYYY-MM-DD format. OPTIONAL - defaults to latest available fiscal period if omitted. Data available on fiscal annual periodicity, updated daily. Future dates (T+1) not accepted. Example: '2019-12-31'. USED for: both regions and countries endpoints.

Default: null
frequencystring

Display frequency for time-series data. Default: 'FY' (Fiscal Annual). **OPTIONS:** - D: Daily - W: Weekly (last day of week) - M: Monthly (last trading day) - AM: Monthly (anchor date, e.g., June 16, May 16, April 16) - CQ: Calendar Quarterly (Mar, Jun, Sep, Dec) - FQ: Fiscal Quarterly (company fiscal quarter) - AY: Actual Annual (based on start date) - CY: Calendar Annual (last trading day of year) - FY: Fiscal Annual (last trading day of company fiscal year) USED for: both regions and countries endpoints.

Default: null
regionIdsarray

[REGIONS ONLY] Regional identifiers or regional groups to filter results. Default: ['SUPER_REGIONS'] (returns all super-regions). Max: 15 region IDs per request. **REGIONAL GROUPS (use these to fetch entire levels):** - 'SUPER_REGIONS': All 7 super-regions (largest geographic groupings) - 'REGIONS': All regions (mid-level groupings under super-regions) - 'AREAS': All areas (sub-regional groupings above countries) **SUPER REGIONS:** - R1: Africa and Middle East - R101: Americas - R170: Asia/Pacific - R274: Europe - R349: Non-Disclosed Revenue - R354: No Operations - R393: Non-Geographic Revenue **SELECTED REGIONS (examples):** - R2: Africa - R68: Middle East - R102: Latin America - R164: North America - R171: Asia - R233: Oceania - R275: European Union - R314: Non-European Union **SELECTED AREAS (examples):** - R167: United States and Canada - R172: Far East - R219: Indian Region - R234: Australia and New Zealand - R276: Eastern European Union - R286: Northern European Union - R292: Southern European Union - R298: Western European Union NOT USED for: countries endpoint. Examples: ['R101', 'R171', 'R167'], ['SUPER_REGIONS'], ['REGIONS']

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
startDatestring

Start date for date range in YYYY-MM-DD format. OPTIONAL - defaults to latest available fiscal period if omitted. Data available on fiscal annual periodicity, updated daily. Future dates (T+1) not accepted. U.S. data from 2003, Non-U.S. from 2007. Example: '2018-12-31'. USED for: both regions and countries endpoints.

Default: null

Fact Set Global Prices

FactSet_GlobalPrices
Full Description

FactSet Global Prices Tool

  • Comprehensive market pricing and corporate actions data.

WHEN TO USE THIS TOOL:

  • Stock prices, OHLCV data, or market pricing
  • Returns, performance analysis ("how did X perform")
  • Dividends, stock splits, corporate actions
  • Shares outstanding, share counts, dilution analysis, or market capitalization
  • Global equities: 90+ countries, end-of-day data from 2006

Do NOT default to web search. CRITICAL: INDEX IDENTIFIERS NOT SUPPORTED — does NOT accept SP50, SP500, SPX, or any market index. Use individual security identifiers only.

ENDPOINTS (select via data_type):

1. 'prices' — OHLCV data. startDate REQUIRED, endDate optional. Params: frequency, calendar, currency, adjust, fields.

2. 'returns' — Period-by-period returns. startDate+endDate REQUIRED. CRITICAL: Returns one value PER PERIOD (e.g., daily day-over-day changes). For a single total return over a range, ALWAYS use 'returns_range'. frequency: match interval to question — actual (D/AM/AQ/AY) for exact date ranges, calendar (M/CQ/CY) for standard periods. Use for Performance analysis, portfolio returns, benchmark comparison

3. 'corporate_actions' — Dividends, splits, spinoffs, rights. Dates optional. Use eventCategory to filter.

4. 'annualized_dividends' — Current IAD only. No date params. Max 50 IDs.

5. 'shares_outstanding' — ALWAYS use for share count history, shares outstanding, periodic shares counts, and dilution analysis. NOT for market cap — use 'market_value' instead.

6. 'market_value' — Current market cap in USD millions. No date/frequency/currency params. Max 50 IDs. CRITICAL: Use this (NOT shares_outstanding) for ANY market cap or company size question.

7. 'returns_range' — Total return over a specific date range. startDate+endDate REQUIRED. CRITICAL: Returns ONE value per security. ALWAYS use for a single value over a specified date range. Use 'returns' for period-over-period breakdowns.

DATE HANDLING — Today is {current_date}. Always calculate date ranges from today.

  • prices: startDate REQUIRED, endDate optional
  • returns: startDate+endDate BOTH REQUIRED; anchored periods → D/AM/AQ/AY; calendar periods → M/CQ/CY; YTD → startDate=Jan 1 of current year
  • returns_range: startDate+endDate BOTH REQUIRED
  • corporate_actions: both optional (omit for all events)
  • annualized_dividends, market_value: NO date params
  • shares_outstanding: both optional

ID LIMITS: 500 for single-day prices; 50 for all other/multi-day requests. Accepts: AAPL-US, MSFT-US (ticker-region), CUSIP, SEDOL, ISIN, FactSet Permanent IDs.

Parameters (2 required, 11 optional)
Required
data_typestring

Type of pricing data to retrieve: 'prices'=OHLCV, 'returns'=period-by-period returns, 'returns_range'=single total return over range, 'corporate_actions'=dividends/splits/spinoffs, 'annualized_dividends'=current IAD, 'shares_outstanding'=historical share counts, 'market_value'=current market cap (USD millions). IMPORTANT: This determines which endpoint to use and what parameters are required.

Options:pricesreturnscorporate_actionsannualized_dividendsshares_outstandingmarket_valuereturns_range
idsarray

List of security identifiers (Market Tickers, SEDOL, ISIN, CUSIP, or FactSet Permanent IDs). 500 for single-day prices, 50 for all other data types and multi-day requests. Examples: ['AAPL-US'], ['FDS-US', 'MSFT-US']

Optional
adjuststring

Price adjustment: SPLIT/SPLIT_SPINOFF/DIV_SPIN_SPLITS/UNSPLIT. Default: SPLIT. USED for: prices only. NOT USED for: returns (uses dividendAdjust), corporate_actions, annualized_dividends, shares_outstanding, market_value.

Default: null
calendarstring

Trading calendar: FIVEDAY/SEVENDAY/US. Default: FIVEDAY. USED for: prices, shares_outstanding. NOT USED for: returns, corporate_actions, annualized_dividends, market_value.

Default: null
cancelledDividendstring

Include/exclude cancelled dividends: include/exclude. Default: exclude. USED for: corporate_actions only.

Default: null
currencystring

ISO currency code or 'LOCAL'. Default: LOCAL. USED for: prices, returns, corporate_actions, annualized_dividends, returns_range. NOT USED for: shares_outstanding, market_value (always USD millions).

Default: null
dividendAdjuststring

Dividend reinvestment: PRICE/EXDATE/PAYDATE/EXDATE_C/PAYDATE_C. Default: EXDATE_C. PRICE=no dividends, EXDATE/PAYDATE=simple return, EXDATE_C/PAYDATE_C=compound return. USED for: returns, returns_range only.

Default: null
endDatestring

End date YYYY-MM-DD. Must be >= startDate. REQUIRED: returns, returns_range. OPTIONAL: prices (defaults to latest), corporate_actions, shares_outstanding. NOT USED: annualized_dividends, market_value. Example: '2024-12-31'

Default: null
eventCategorystring

Filter corporate actions by event type: CASH_DIVS/STOCK_DIST/RIGHTS/SPINOFFS/SPLITS/ALL. Default: ALL. USED for: corporate_actions only.

Default: null
fieldsarray

Fields to return (default: all). prices: price/priceOpen/priceHigh/priceLow/volume/turnover/tradeCount/vwap. corporate_actions: event-specific fields. NOT USED for: returns, annualized_dividends, shares_outstanding, market_value (fixed schemas). Always included: fsymId, date, requestId, currency (where applicable)

Default: null
frequencystring

Display frequency: D/AD/W/M/AM/AQ/CQ/ASA/CSA/AY/CY. Default: D (Daily). USED for: prices, returns, shares_outstanding. NOT USED for: corporate_actions, annualized_dividends, market_value. For returns: match interval to question — use actual (D/AM/AQ/AY) for exact date ranges, calendar (M/CQ/CY) for standard periods.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
startDatestring

Start date YYYY-MM-DD. REQUIRED: prices, returns, returns_range. OPTIONAL: corporate_actions, shares_outstanding. NOT USED: annualized_dividends, market_value. No future dates. Data from 2006. Example: '2024-01-01'

Default: null

Fact Set Mergers Acquisitions

FactSet_MergersAcquisitions
Full Description

FactSet Mergers & Acquisitions Tool

  • Comprehensive M&A transaction data.

WHEN TO USE THIS TOOL:

  • ANY query about mergers, acquisitions, or M&A transactions
  • Questions about "Who did [company] acquire?" or "What deals happened in [period]?"
  • Deal values, premiums, and transaction terms
  • Acquisition history and corporate development activity
  • Public company takeover analysis

DATA COVERAGE & SCOPE:

  • 60,000+ globally traded M&A transactions
  • Target companies that are publicly traded
  • Comprehensive deal terms, pricing, and premiums
  • All monetary values converted to USD for standardization
  • Historical coverage of completed and pending transactions

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 3 different FactSet M&A API endpoints:

1. DEALS BY COMPANY ENDPOINT (/deals/by-company):

  • Trigger: When data_type='deals_by_company'
  • Use Case: Find all deals involving specific companies
  • Returns: Deal IDs, basic transaction info, participants, status
  • Best For: Company acquisition history, deal screening
  • Example: "What did IBM acquire in 2024?" or "Show me Apple's M&A activity"
  • ID Type: Company identifiers (tickers, FactSet IDs, etc.), max 500
  • Optional: Date range filtering by announcement date

2. PUBLIC TARGETS ENDPOINT (/deals/public-targets):

  • Trigger: When data_type='public_targets'
  • Use Case: Find deals where target is a public company
  • Returns: Deal IDs, transaction info for public company acquisitions
  • Best For: Market-wide M&A analysis, public target screening
  • Example: "Show me all public company acquisitions in Q2 2024"
  • Required: Deal status filter (All/Pending/Complete), startDate, endDate
  • Date range: Announcement date filtering (max 1 year per request)

3. DEAL DETAILS ENDPOINT (/deals/details):

  • Trigger: When data_type='deal_details'
  • Use Case: Get comprehensive information for specific deals
  • Returns: Financial terms, advisors, premiums, multiples, deal structure
  • Best For: Deep-dive transaction analysis, valuation research
  • Example: "Show me details for deal ID 4143886MM"
  • ID Type: Deal IDs from other M&A endpoints, max 100
  • NOTE: Use dealId values from deals_by_company or public_targets first

CRITICAL DATA DISTINCTIONS:

  • Deals by Company: Company-centric view (who they acquired/sold)
  • Public Targets: Market-wide view (all public company acquisitions)
  • Deal Details: Transaction-centric view (comprehensive deal information)
  • All values in USD regardless of original currency

MANDATORY WORKFLOWS BY DATA TYPE:

DEALS_BY_COMPANY: 1. Identify companies using proper identifiers (max 500) 2. Define date range for announcement filtering

  • REQUIRED

3. Retrieve deal IDs for detailed analysis 4. Use dealId values with deal_details for comprehensive info

PUBLIC_TARGETS: 1. Select deal status filter (All/Pending/Complete)

  • REQUIRED

2. Define date range for announcement filtering

  • REQUIRED (max 1 year)

3. Retrieve deal IDs for publicly traded targets 4. Use dealId values with deal_details for comprehensive info

DEAL_DETAILS: 1. Obtain deal IDs from deals_by_company or public_targets 2. Submit deal IDs (max 100) for detailed information 3. Analyze financial terms, advisors, premiums, multiples 4. Cross-reference with other FactSet endpoints as needed

DATE HANDLING (CRITICAL):

DEALS_BY_COMPANY:

  • startDate: REQUIRED (YYYY-MM-DD) - filters by announcement date
  • endDate: REQUIRED (YYYY-MM-DD) - filters by announcement date
  • Example: startDate='2024-01-01', endDate='2024-12-31'

PUBLIC_TARGETS:

  • startDate: REQUIRED (YYYY-MM-DD) - filters by announcement date
  • endDate: REQUIRED (YYYY-MM-DD) - filters by announcement date
  • Example: startDate='2024-01-01', endDate='2024-12-31'

DEAL_DETAILS:

  • NO date parameters (uses deal IDs directly)

EFFICIENCY REQUIREMENTS:

  • Deals by Company: 500 company IDs maximum
  • Public Targets: No ID limit (market-wide screening)
  • Deal Details: 100 deal IDs maximum
  • All endpoints: 10 requests per second, 10 concurrent requests

Multi-Year M&A Analysis (REQUIRED APPROACH): For "Amazon acquisitions since 2015", make sequential calls: → Call 1: startDate='2015-01-01', endDate='2015-12-31' → Call 2: startDate='2016-01-01', endDate='2016-12-31' → ... continue for each year → Aggregate results across all calls

COMMON USE CASES:

"What did IBM acquire in 2024?" → data_type='deals_by_company', ids=['IBM-US'], startDate='2024-01-01', endDate='2024-12-31'

"Show me all pending public company acquisitions in 2024" → data_type='public_targets', status='Pending', startDate='2024-01-01', endDate='2024-12-31'

"Get details for deal 4143886MM" → data_type='deal_details', ids=['4143886MM']

"Recent M&A activity for Apple" → data_type='deals_by_company', ids=['AAPL-US'], startDate='2025-01-01', endDate='2025-10-15'

"Q2 2024 public target deals" → data_type='public_targets', status='All', startDate='2024-04-01', endDate='2024-06-30'

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "What companies did [X] acquire in [year]?"
  • "Recent M&A activity for [company]"
  • "[Company] acquisition history"
  • "Largest deals in [time period]"
  • "Public company acquisitions in [period]"
  • "Show me details for deal [ID]"
  • Any variation of M&A or deal queries

DATA TRANSPARENCY:

  • All data from official deal announcements and regulatory filings
  • Monetary values converted to USD for standardization
  • Deal status tracked: Pending, Complete, Cancelled, Rumor
  • Coverage includes completed and announced transactions
  • Always specify date ranges and filters used
  • State limitations clearly when data not available

COMPREHENSIVE DEAL INFORMATION (DEAL_DETAILS):

  • Transaction Overview: Deal type, structure, dates, status
  • Financial Terms: Deal value, premiums (1-day, 5-day, 30-day), payment method
  • Parties: Target, buyer(s), seller(s), ultimate parents
  • Advisors: Financial advisors, legal counsel, fees
  • Valuation Multiples: EV/Sales, EV/EBIT, EV/EBITDA
  • Deal Rationale: Purpose (Financial vs. Strategic), summary

DEAL PARTICIPATION TYPES:

  • BUYER: Company acquiring another entity or assets
  • SELLER: Company divesting assets or subsidiaries
  • TARGET: Company being acquired or subject to takeover
  • ADVISOR: Financial or legal advisor to transaction

RETURNS:

  • Structured JSON responses with requested data
  • Always includes: dealId, target, buyers, sellers, announceDate, status
  • Deal Details: Comprehensive transaction information with USD values
  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Date format errors → Format specification
  • ID limit violations → Limit specification
  • Invalid identifiers → List of unrecognized IDs
Parameters (1 required, 5 optional)
Required
data_typestring

Type of M&A data to retrieve: - 'deals_by_company': Deals where specified companies are involved (buyer, seller, or target) - 'public_targets': Deals where the target is a publicly traded company - 'deal_details': Comprehensive details for specific deal IDs IMPORTANT: This determines which endpoint to use and what parameters are required.

Options:deals_by_companypublic_targetsdeal_details
Optional
endDatestring

End date in YYYY-MM-DD format. Must be within 1 year of startDate. For multi-year analysis, iterate through yearly windows. REQUIRED for: deals_by_company, public_targets. NOT USED for: deal_details. Future dates (T+1) not accepted. Example: "2024-12-31"

Default: null
idsarray

List of identifiers. FOR DEALS_BY_COMPANY: Company identifiers (tickers, CUSIP, SEDOL, ISIN, FactSet IDs), max 500. FOR DEAL_DETAILS: Deal IDs obtained from other M&A endpoints, max 100. **CRITICAL FORMAT REQUIREMENT:** Must be passed as a JSON array, not a comma-separated string. Correct: ["4088858MM", "4007255MM"] Incorrect: "4088858MM,4007255MM" NOT USED for: public_targets. Examples: ['IBM-US'] for company, ['4143886MM'] for deal ID

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
startDatestring

Start date in YYYY-MM-DD format. **CRITICAL: Date range (startDate to endDate) must not exceed 1 year (365 days).** For longer periods, make multiple sequential requests. REQUIRED for: deals_by_company, public_targets. NOT USED for: deal_details. Future dates (T+1) not accepted. Example: "2024-01-01"

Default: null
statusstring

[PUBLIC_TARGETS ONLY] Deal status filter: All/Pending/Complete. All=all statuses, Pending=announced not completed, Complete=closed transactions. REQUIRED for: public_targets. NOT USED for: deals_by_company, deal_details.

Default: null

Fact Set Metrics

FactSet_Metrics
Full Description

Vector Search Tool

  • Semantic search for financial metrics and categories.

WHEN TO USE THIS TOOL: This tool should be used for:

  • Discovering financial metric codes before calling Fundamentals or Estimates APIs
  • Finding metrics by natural language description (e.g., "profitability ratios")
  • Exploring available categories and subcategories in the ontology
  • Semantic search when you don't know the exact metric code
  • Batch discovery of multiple related metrics simultaneously

CRITICAL USAGE RULES:

  • Use this BEFORE calling Fundamentals or Estimates APIs when you don't know exact metric codes
  • Provides semantic understanding - searches by meaning, not just keywords
  • Returns actual metric codes (e.g., FF_SALES, FF_EBITDA) to use in other API calls
  • Supports batch queries - search for multiple metrics in one request

DATA COVERAGE & SCOPE:

  • Comprehensive financial ontology from FactSet Content API
  • Includes fundamentals metrics (FF_* codes)
  • Includes estimates metrics (unprefixed codes)
  • Categories and subcategories for all data products

SEARCH CAPABILITIES:

TARGET TYPES: 1. metric: Individual financial data points

  • Examples: "revenue", "EBITDA", "debt-to-equity ratio", "EPS"
  • Returns: Specific metric codes like FF_SALES, FF_EBITDA, FF_DEBT_EQ
  • Use for: Finding exact metrics to use in Fundamentals/Estimates APIs

2. category: High-level financial statement groupings

  • Examples: "Income Statement", "Balance Sheet", "Cash Flow"
  • Returns: Category names and their associated metrics
  • Use for: Understanding ontology structure

3. subcategory: Mid-level groupings within categories

  • Examples: "REVENUES", "ASSETS", "LIABILITIES", "PROFITABILITY"
  • Returns: Subcategory names and their metrics
  • Use for: Focused metric discovery within specific areas

DATA PRODUCT FILTERING: Filter results to specific FactSet data products:

fundamentals:

  • Returns: FF_* prefixed metric codes (FF_SALES, FF_ASSETS, FF_EPS)
  • Use for: Finding metrics for actual reported financial statements
  • Examples: FF_SALES (revenue), FF_NET_INC (net income), FF_DEBT_EQ (debt-to-equity)

estimates:

  • Returns: Unprefixed metric codes (SALES, EPS, EBITDA, PRICE_TGT)
  • Use for: Finding metrics for analyst forecasts and estimates
  • Examples: SALES (revenue estimates), EPS (earnings estimates)

Omit data_products: Search across all data products simultaneously

BATCH PROCESSING: Process multiple queries in a single API call for efficiency:

Benefits:

  • Reduced latency (fewer round-trips to server)
  • Concurrent processing of all queries
  • Consistent results across related searches
  • Better performance for bulk metric discovery

Example:

text=["revenue metrics", "profitability ratios", "debt metrics"],
target="metric",
data_products=["fundamentals"],
limit=5

Returns top 5 results for each of the 3 queries in one response.

MANDATORY WORKFLOW:

STEP 1: SEMANTIC SEARCH Use this tool to discover metric codes based on natural language:

text=["revenue", "operating profit", "total debt"],
target="metric",
data_products=["fundamentals"],
limit=5

STEP 2: EXTRACT METRIC CODES From the response, extract the 'metric' field from properties:

{
    "properties": {
        "metric": "FF_SALES",
        "name": "Sales/Revenue",
        "category": "INCOME_STATEMENT"
    }
}

STEP 3: USE IN OTHER APIS Use discovered codes in Fundamentals or Estimates APIs:

# For Fundamentals
Fundamentals(
    data_type="fundamentals",
    ids=["AAPL-US"],
    metrics=["FF_SALES", "FF_OPER_INC", "FF_DEBT"]
)

COMMON USE CASES:

1. Find revenue metrics for fundamentals:

text=["revenue", "sales"],
target="metric",
data_products=["fundamentals"],
limit=5

Returns: FF_SALES, FF_SALES_REV_TURN, etc.

2. Discover profitability ratios:

text=["profitability ratios", "return on equity", "profit margins"],
target="metric",
data_products=["fundamentals"],
limit=10

Returns: FF_ROE, FF_NET_MGN, FF_EBIT_OPER_MGN, etc.

3. Find all balance sheet categories:

text=["balance sheet"],
target="category",
limit=20

Returns: BALANCE_SHEET category with all subcategories

4. Search for debt-related metrics:

text=["debt", "leverage", "borrowings"],
target="metric",
data_products=["fundamentals"],
limit=10

Returns: FF_DEBT, FF_DEBT_ST, FF_DEBT_LT, FF_DEBT_EQ, etc.

5. Find estimate metrics for earnings:

text=["earnings estimates", "EPS forecasts"],
target="metric",
data_products=["estimates"],
limit=5

Returns: EPS, NET_INC, etc. (unprefixed for estimates)

6. Batch discovery for financial analysis:

text=[
    "revenue growth metrics",
    "operating efficiency ratios",
    "liquidity measures",
    "debt coverage ratios"
],
target="metric",
data_products=["fundamentals"],
limit=5

Returns: Top 5 metrics for each of 4 categories

ALWAYS USE THIS TOOL WHEN:

  • User asks about available metrics without knowing codes
  • User describes metrics in natural language ("profitability", "liquidity")
  • Before calling Fundamentals/Estimates APIs with unknown metric codes
  • User wants to explore related metrics in a category
  • User needs to find metrics across multiple concepts simultaneously

RESPONSE STRUCTURE:

{
    "results": [
        {
            "query": "revenue",
            "targets": ["metric"],
            "class_name": "combined_content_test_6",
            "results": [
                {
                    "distance": 0.15,
                    "score": 0.85,
                    "properties": {
                        "metric": "FF_SALES",
                        "name": "Sales/Revenue",
                        "description": "Net Sales or Revenue...",
                        "category": "INCOME_STATEMENT",
                        "subcategory": "REVENUES",
                        "type": "metric"
                    }
                }
            ],
            "search_parameters": {
                "use_hybrid": true,
                "alpha": 0.4,
                "limit": 20,
                "data_products": ["fundamentals"]
            }
        }
    ]
}

KEY FIELDS:

  • metric: Actual code to use in API calls (FF_SALES, EPS, etc.)
  • name: Human-readable metric name
  • description: Detailed methodology and calculation
  • category: High-level grouping (INCOME_STATEMENT, BALANCE_SHEET, etc.)
  • subcategory: Specific grouping within category
  • distance: Lower = better match (vector distance)
  • score: Higher = better match (when available)

INTEGRATION WITH OTHER TOOLS:

WITH FUNDAMENTALS API: 1. Use VectorMetricSearch to find: FF_SALES, FF_NET_INC, FF_ASSETS 2. Call Fundamentals with discovered codes:

Fundamentals(
       data_type="fundamentals",
       ids=["AAPL-US"],
       metrics=["FF_SALES", "FF_NET_INC", "FF_ASSETS"]
   )

WITH ESTIMATES API: 1. Use VectorMetricSearch with data_products=["estimates"] 2. Find unprefixed codes: SALES, EPS, EBITDA 3. Call Estimates with discovered codes:

Estimates(
       estimate_type="consensus",
       ids=["AAPL-US"],
       metrics=["SALES", "EPS"]
   )

EFFICIENCY TIPS:

BATCH QUERIES: Instead of 3 separate calls:

# Bad: 3 API calls
search("revenue")
search("profit")
search("debt")

Do this:

# Good: 1 API call
text=["revenue", "profit", "debt"],
target="metric",
limit=5

FILTER BY DATA PRODUCT: Narrow results for faster, more relevant responses:

# For fundamentals queries
data_products=["fundamentals"]



# For estimates queries
data_products=["estimates"]

ADJUST SEARCH MODE:

  • Use hybrid (default) for most cases
  • Use alpha=0.0 for exact term matching
  • Use alpha=1.0 for pure semantic similarity

LIMITATIONS:

  • Returns metric codes, not actual data values
  • Requires subsequent API calls to get financial data
  • Search quality depends on query phrasing
  • Some metrics may not be available for all companies
  • Distance/score thresholds not standardized across queries

USE FOR: Metric discovery, semantic search, ontology exploration, batch metric lookup DO NOT USE FOR: Actual financial data retrieval (use Fundamentals/Estimates instead)

RETURNS:

  • Structured JSON with search results for each query
  • Metric codes, names, descriptions, categories
  • Search parameters used for each query
  • Distance/score metrics for result ranking

ERROR HANDLING:

  • Invalid target type → Detailed error with valid options
  • Invalid data products → List of valid data products
  • Empty results → Suggest broader search terms
  • API errors → Detailed error message with context
Parameters (1 required, 4 optional)
Required
textarray

List of text queries to search for metrics, categories, or subcategories. Supports batch processing of multiple queries in a single request. CRITICAL: Do NOT use hyphens in search queries. Use spaces instead. CORRECT: "short term debt", "year over year growth", "price to earnings" INCORRECT: "short-term debt", "year-over-year growth", "price-to-earnings" The API will reject queries containing hyphens with a "suspicious patterns" error. Examples: ['revenue'], ['EBITDA', 'inventory turnover', 'sales'], ['balance sheet'], ['financial performance indicators']

Optional
data_productsarray

List of data products to filter results: - 'fundamentals': Core financial statement data (FF_* metrics) - 'estimates': Analyst estimates and consensus data - 'private-companies': Private company financials (FPC_*) and reference data (FPE_*/FPD_*) Omit to search across all data products. Examples: ['fundamentals'], ['estimates'], ['private-companies'], ['fundamentals', 'estimates']

Default: null
limitstring

Maximum number of results to return per query. Default: 20. Common values: 5, 10, 20, 30, 40, 50

Default: 20
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
targetstring

Type of content to search for, applied to all queries: - 'metric': Individual financial metrics (e.g., 'revenue', 'EBITDA', 'EPS') Default: 'metric'

Default: metric

Fact Set Ownership

FactSet_Ownership
Full Description

FactSet Ownership Tool

  • Comprehensive holdings, holders, and transactions data.

WHEN TO USE THIS TOOL:

  • Fund holdings, portfolio composition, or what funds own
  • Institutional ownership, insider ownership, or shareholder data
  • Insider trading activity, executive transactions, or Form 4 filings
  • Institutional position changes, 13F filings, or "smart money" tracking
  • Questions like "What does [fund] own?" or "Who owns [stock]?"

NOTE: Use data_type='fund_holdings' to retrieve what a fund/ETF holds (its underlying securities). This is distinct from FactSet_FundsETF which covers fund performance, NAV, flows, and analytics — NOT holdings composition.

DATA COVERAGE: 60,000+ fund portfolios, 50,000 institutions, 400,000 insider records, 110+ countries. From 2006+.

ENDPOINTS (select via data_type):

1. 'fund_holdings' — Holdings for mutual funds, ETFs, closed-end funds. Max 10 IDs. Note: Security names/tickers reflect the CURRENT security master, not the snapshot date — surface this caveat when returning historical holdings.

2. 'security_holders' — Who owns a security (institutions, funds, insiders, beneficial owners). CRITICAL: Max 1 security per request.

3. 'insider_transactions' — Executive/director trades from SEC Form 4/5. Max 10 IDs. CRITICAL: startDate+endDate REQUIRED. sharesOwned is per-filing only — NOT the insider's current position; use security_holders with holderType='S' for absolute position.

4. 'institutional_transactions' — Position changes from 13F filings. Max 10 IDs. CRITICAL: startDate+endDate REQUIRED. posChange is a delta, not absolute shares held; use security_holders with holderType='F'/'M' for absolute counts. Optional params: holderType, topNHolders, frequency (M/CQ/CY), periodOfMeasure (1M/3M/6M/12M), currency. DATE PATTERNS:

  • Regular date range (e.g., "in Q2 2024", "during H2 2020", "full year 2022"):

startDate='2024-04-01', endDate='2024-06-30' — use actual range bounds

  • Rolling N-month window (e.g., "past 6 months", "last quarter position changes"):

Set startDate AND endDate to the SAME reference date (today or date you're analyzing), use periodOfMeasure for the window (1M/3M/6M/12M) Set frequency to 'M' (monthly) Example: past 3 months → startDate='2025-03-31', endDate='2025-03-31', periodOfMeasure='3M', frequency='M'

DATE HANDLING:

  • fund_holdings, security_holders: date optional (defaults to latest month-end)
  • insider_transactions, institutional_transactions: startDate+endDate BOTH REQUIRED

ID LIMITS: Max 10 for fund_holdings/insider_transactions/institutional_transactions; max 1 for security_holders. Accepts: ticker-region (AAPL-US, VTI-US), CUSIP, SEDOL, ISIN, FactSet IDs.

CRITICAL POSITION INTERPRETATION RULES:

insider_transactions — sharesOwned IS NOT A POSITION, NEVER PRESENT IT AS ONE:

  • sharesOwned: Shares owned as reported on that individual filing only — varies record-to-record,

scoped to that filing. For authoritative position size, use security_holders with holderType='S' and read adjHolding.

  • shares: Transaction size (delta only) — what changed in that single transaction.

institutional_transactions — posChange IS A DELTA, NOT A POSITION:

  • posChange: Change in shares held over the periodOfMeasure window. DO NOT present as shares held.
  • For absolute institutional share counts, use security_holders with holderType='F' or 'M' and read adjHolding.
Parameters (2 required, 13 optional)
Required
data_typestring

fund_holdings=holdings for funds/ETFs. security_holders=who owns a security. insider_transactions=SEC Form 4/5 trades. institutional_transactions=13F position changes. Determines endpoint and required parameters.

Options:fund_holdingssecurity_holdersinsider_transactionsinstitutional_transactions
idsarray

Fund or security identifiers (ticker, CUSIP, SEDOL, ISIN, FactSet ID). Max 10 for fund_holdings/insider_transactions/institutional_transactions; max 1 for security_holders.

Optional
assetTypestring

Asset class filter: ALL/EQ/FI. Default: EQ. EQ=equity, FI=fixed income, ALL=all. USED for: fund_holdings only. NOT USED for: security_holders, transactions endpoints.

Default: null
currencystring

ISO currency code (USD, EUR, GBP, etc.) or 'LOCAL'. Default: LOCAL. USED for: all endpoints.

Default: null
datestring

Holdings snapshot date in YYYY-MM-DD format. OPTIONAL for: fund_holdings, security_holders (defaults to latest month-end). NOT USED for: insider_transactions, institutional_transactions.

Default: null
endDatestring

REQUIRED for: insider_transactions, institutional_transactions. YYYY-MM-DD format. NOT USED for: fund_holdings, security_holders.

Default: null
frequencystring

Analysis frequency: M/MTD/CQ/CQTD/CY/CYTD. Default: M. M=monthly, CQ=calendar quarterly, CY=calendar yearly. USED for: institutional_transactions only.

Default: null
holderTypestring

Holder category: F=institutions, M=mutual funds and ETFs, S=insiders and stakeholders, FS=institutions+insiders, B=beneficial owners. USED for: security_holders, institutional_transactions. NOT USED for: fund_holdings, insider_transactions.

Default: null
periodOfMeasurestring

Period for Percent Ownership and Position Change calculations: 1M/3M/6M/12M. Default: 6M. USED for: institutional_transactions only.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
rowExclusionstring

Record exclusion: DB/B/N. Default: DB. DB=derivative+blank, B=blank only, N=none. USED for: insider_transactions only.

Default: null
startDatestring

REQUIRED for: insider_transactions, institutional_transactions. YYYY-MM-DD format. NOT USED for: fund_holdings, security_holders.

Default: null
topnstring

Top N holdings/holders by market value. Default: ALL. USED for: fund_holdings, security_holders. NOT USED for: transactions endpoints.

Default: null
topNHoldersstring

Top N institutional holders: 5/10/25/50/100/ALL. Default: 25. USED for: institutional_transactions only.

Default: null
transactionTypestring

Transaction filter: A/P/S/PS/O/M. Default: A. A=all, P=purchases, S=sales, PS=purchases+sales, O=options, M=other. USED for: insider_transactions only.

Default: null

Fact Set People

FactSet_People
Full Description

FactSet People Tool

  • Comprehensive executive and leadership data.

WHEN TO USE THIS TOOL:

  • ANY query about executives, leadership, or company personnel
  • Questions about "Who is the CEO/CFO/founder of [company]?"
  • Executive backgrounds, career histories, and professional profiles
  • Compensation analysis and leadership demographics
  • Board composition and governance analysis

CRITICAL EXECUTIVE IDENTIFICATION RULE: For ALL executive identification requests (CEO, CFO, founders, leadership team), NEVER provide executive names from training data without first querying actual FactSet personnel data. This applies to ANY question about "Who is the [position] of [company]?" regardless of how well-known the company or executive may seem.

DATA COVERAGE & SCOPE:

  • 50,000+ institutions and executive profiles
  • 400,000+ insider/stakeholder records
  • 110+ countries represented
  • Global coverage with varying disclosure depth by region
  • US compensation data only (regulatory requirement)

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 6 different FactSet People API endpoints:

1. PROFILES ENDPOINT (/profiles):

  • Trigger: When data_type='profiles'
  • Use Case: Personal and professional profile information for individuals
  • Returns: Biographical data, education, employment, compensation
  • Best For: Executive research, background verification, career analysis
  • Example: "Give me the profile of Philip Snow"
  • ID Type: Person Entity IDs (XXXXXX-E), max 500 per request

2. JOBS ENDPOINT (/jobs):

  • Trigger: When data_type='jobs'
  • Use Case: Employment history and career progression
  • Returns: Current and past positions, job functions, timeline data
  • Best For: Career tracking, professional background, succession planning
  • Example: "What is the job history of this executive?"
  • ID Type: Person Entity IDs (XXXXXX-E), max 1,000 per request

3. COMPANY PEOPLE ENDPOINT (/company-people):

  • Trigger: When data_type='company_people'
  • Use Case: Executive and leadership roster for companies
  • Returns: Names, titles, contact info, job functions
  • Best For: Leadership mapping, organizational analysis, contact database
  • Example: "Show me all directors at Apple"
  • ID Type: Company IDs (tickers, FactSet IDs, etc.), max 1,000 per request

4. COMPANY POSITIONS ENDPOINT (/company-positions):

  • Trigger: When data_type='company_positions'
  • Use Case: Specific position holders with demographics and tenure
  • Returns: Executive name, tenure, age, gender for specific role
  • Best For: CEO/CFO identification, founder research, succession analysis
  • Example: "Who is the CEO of Tesla?" or "Who founded Microsoft?"
  • ID Type: Company IDs, max 1,000 per request
  • CRITICAL: ALWAYS use this for "Who is the [position]?" queries

5. COMPANY COMPENSATION ENDPOINT (/company-compensation):

  • Trigger: When data_type='company_compensation'
  • Use Case: Executive pay analysis (US companies only)
  • Returns: Salary, bonus, stock awards, total compensation
  • Best For: Pay benchmarking, compensation studies, governance research
  • Example: "What is Tim Cook's compensation?"
  • ID Type: US company IDs only, max 1,000 per request
  • LIMITATION: US companies only due to regulatory disclosure requirements

6. COMPANY STATS ENDPOINT (/company-stats):

  • Trigger: When data_type='company_stats'
  • Use Case: Leadership statistics and demographic analysis
  • Returns: Average age, tenure, diversity metrics, board composition
  • Best For: Governance benchmarking, diversity assessment, leadership analysis
  • Example: "What is the average age of Apple's management?"
  • ID Type: Company IDs, max 1,000 per request

CRITICAL DATA DISTINCTIONS:

  • Person Endpoints (profiles, jobs): Use Person Entity IDs (XXXXXX-E format)
  • Company Endpoints (company_*): Use company identifiers (tickers, FactSet IDs)
  • Compensation: US companies only, values in raw USD units
  • Stats: Aggregated metrics, not individual executive details

MANDATORY WORKFLOWS BY DATA TYPE:

PROFILES: 1. Identify individuals using Person Entity IDs (XXXXXX-E) 2. Request profile data (max 500 IDs) 3. Analyze education, employment, compensation 4. Cross-reference personId for detailed analysis

JOBS: 1. Identify individuals using Person Entity IDs (XXXXXX-E) 2. Select employment filters (status, level, type) 3. Request job history (max 1,000 IDs) 4. Analyze career progression and timeline

COMPANY_PEOPLE: 1. Identify companies using company identifiers 2. Select job function filter (PEOPLE/OFFICER/DIRECTOR) 3. Request executive roster (max 1,000 companies) 4. Review organizational structure and contacts

COMPANY_POSITIONS: 1. Identify companies using company identifiers 2. Select target position (CEO/CFO/FOU/etc.) 3. Request position holders (max 1,000 companies) 4. Analyze tenure, demographics, leadership

  • CRITICAL: ALWAYS use this for "Who is the [position]?" queries

COMPANY_COMPENSATION: 1. Identify US companies only 2. Request compensation data (max 1,000 companies) 3. Analyze pay components and total packages 4. Benchmark across peer companies

COMPANY_STATS: 1. Identify companies using company identifiers 2. Select leadership scope (MB/MGMT/BRD) 3. Request statistics (max 1,000 companies) 4. Analyze demographics, tenure, diversity

ID REQUIREMENTS BY DATA TYPE:

PROFILES:

  • IDs: Person Entity IDs (XXXXXX-E)
  • Maximum: 500 identifiers per request
  • Example: ["0DPHLH-E"]

JOBS:

  • IDs: Person Entity IDs (XXXXXX-E)
  • Maximum: 1,000 identifiers per request
  • Example: ["0DPHLH-E", "07MZV9-E"]

COMPANY_PEOPLE:

  • IDs: Company identifiers (tickers, FactSet IDs including private companies, CUSIP, SEDOL, ISIN)
  • Maximum: 1,000 identifiers per request
  • Example: ["AAPL-US"]

COMPANY_POSITIONS:

  • IDs: Company identifiers (including private companies)
  • Maximum: 1,000 identifiers per request
  • Example: ["TSLA-US", "MSFT-US"]

COMPANY_COMPENSATION:

  • IDs: US company identifiers only (including private companies)
  • Maximum: 1,000 identifiers per request
  • Example: ["AAPL-US"]

COMPANY_STATS:

  • IDs: Company identifiers (including private companies)
  • Maximum: 1,000 identifiers per request
  • Example: ["AAPL-US", "GOOGL-US"]

COMMON USE CASES:

"Who is the CEO of Apple?" → data_type='company_positions', ids=['AAPL-US'], position='CEO'

"Who founded Microsoft?" → data_type='company_positions', ids=['MSFT-US'], position='FOU'

"Show me Tim Cook's background" → data_type='profiles', ids=['05F520-E'] (requires person ID)

"What is the job history of this executive?" → data_type='jobs', ids=['0DPHLH-E'], status='ALL', level='DETAIL'

"List all directors at Apple" → data_type='company_people', ids=['AAPL-US'], function='DIRECTOR'

"What is Apple CEO's compensation?" → data_type='company_compensation', ids=['AAPL-US']

"What is the average age of Apple's board?" → data_type='company_stats', ids=['AAPL-US'], mbType='BRD'

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "Who is the CEO/CFO/CTO/founder of [X]?"
  • "Show me [company]'s leadership team"
  • "What is [executive]'s background?"
  • "[Executive] career history"
  • "How much does [executive] make?"
  • "Average age of [company]'s board"
  • Any variation of executive or leadership queries

DATA TRANSPARENCY:

  • All data from official company filings and verified sources
  • Person IDs enable cross-referencing across endpoints
  • Compensation data: US companies only, raw USD units
  • Coverage varies by company size and disclosure practices
  • Always specify limitations when data not available

GEOGRAPHIC LIMITATIONS:

  • Profiles/Jobs: Global coverage with Person Entity IDs
  • Company People/Positions/Stats: Global companies
  • Compensation: US companies ONLY (regulatory requirement)

RETURNS:

  • Structured JSON responses with requested data
  • Always includes: requestId, and data type-specific fields
  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Wrong ID format → Format specification
  • US-only limitation (compensation) → Geographic restriction message
  • Invalid identifiers → List of unrecognized IDs
Parameters (2 required, 7 optional)
Required
data_typestring

Type of people data to retrieve: - 'profiles': Personal and professional profile information for individuals - 'jobs': Employment history and career progression data - 'company_people': Executive and leadership information for companies - 'company_positions': Specific position-based leadership information - 'company_compensation': Executive compensation data (US companies only) - 'company_stats': Leadership statistics and demographic analysis IMPORTANT: This determines which endpoint to use and what parameters are required.

Options:profilesjobscompany_peoplecompany_positionscompany_compensationcompany_stats
idsarray

List of identifiers for people or companies. FOR PROFILES/JOBS: Person Entity IDs (format: XXXXXX-E), max 1,000 for jobs, max 500 for profiles. FOR COMPANY endpoints: Company identifiers (FactSet IDs, tickers, CUSIP, SEDOL, ISIN), max 1,000. Examples: ['0DPHLH-E'] for person, ['AAPL-US'] for company

Optional
functionstring

[COMPANY_PEOPLE ONLY] Job function category: PEOPLE/OFFICER/DIRECTOR. Default: PEOPLE. PEOPLE=all executives, OFFICER=corporate officers, DIRECTOR=board directors. NOT USED for: profiles, jobs, other company endpoints.

Default: null
levelstring

[JOBS ONLY] Detail level: DETAIL/SUMMARY. Default: DETAIL. DETAIL=comprehensive info, SUMMARY=condensed view. NOT USED for: profiles, company endpoints.

Default: null
mbTypestring

[COMPANY_STATS ONLY] Leadership scope: MB/MGMT/BRD. Default: MB. MB=management & board, MGMT=management only, BRD=board only. NOT USED for: profiles, jobs, other company endpoints.

Default: null
positionstring

[COMPANY_POSITIONS ONLY] Specific executive position: CEO/CFO/COO/CHAIR/PRES/CTO/CIO/FOU/BRD/IND/etc. Default: CEO. CRITICAL: ALWAYS use People API FIRST for executive identification queries like 'Who is the CEO of [company]?'. NEVER provide executive names from training data without querying FactSet first. NOT USED for: profiles, jobs, other company endpoints.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
statusstring

[JOBS ONLY] Employment status filter: ALL/PRIMARY/ACTIVE/INACTIVE. Default: ALL. ALL=complete history, PRIMARY=main position, ACTIVE=current, INACTIVE=historical. NOT USED for: profiles, company endpoints.

Default: null
typestring

[JOBS ONLY] Position type: ALL/BRD/EMP. Default: ALL. ALL=all positions, BRD=board only, EMP=employee only. NOT USED for: profiles, company endpoints.

Default: null

Fact Set Private Equity Vc

FactSet_PrivateEquityVC
Full Description

FactSet Private Equity & Venture Capital Tool

  • Comprehensive PE/VC data.

WHAT THIS TOOL COVERS: Private equity and venture capital data including funds, general partners (GPs), limited partners (LPs), portfolio companies, transactions (VC rounds, PE deals), M&A activity, and IPO exits.

AUTOMATIC ENDPOINT ROUTING: This tool routes to 14 different endpoints based on the data_type parameter:


UNIVERSE (Entity Lookup):

1. universe — Resolve a firm, fund, or portfolio company name to a FactSet Entity ID.

  • REQUIRED: name (the firm/fund/company name to look up)
  • OPTIONAL: country (ISO2 country code to narrow results), entityType (filter by entity type)
  • Returns: List of candidate matches sorted by match quality (best matches first) with:
    • entityId (format 'XXXXXX-E')
    • entityName
    • matchFlag (boolean: true = direct match to query, false = candidate match)
    • Results are pre-sorted with exact/best matches appearing first — typically use the first result
    • USE FIRST: Always call this to get FactSet entity IDs before using other data_types
    • Entity type codes: PVT (Private Company), VEN (Venture Capital Fund), PVF (Private Equity Fund),

FAF (Family of Funds), HOL (Holding Company), NPO (Non-Profit), SUB (Subsidiary), JVT (Joint Venture)


FUNDS:

2. funds — Core profile and summary for one or more PE/VC funds.

  • REQUIRED: ids (fund entity IDs, format 'XXXXXX-E')
  • Returns: Fund status, strategy type, vintage year, financial info (amount raised, dry powder),

investment criteria (min/max deal size, EBITDA, revenue), fund terms (management fee, carry), features (ESG, co-invest)

3. funds_portfolio_companies — List of portfolio companies held by specified funds.

  • REQUIRED: ids (fund entity IDs)
  • Returns: FactSet entity IDs and names of portfolio companies, investment date, sector

4. funds_fundraising — Complete fundraising history (closes) for specified funds.

  • REQUIRED: ids (fund entity IDs)
  • Returns: Each fundraising close (First, Second, Final, etc.) with close date, amount raised, target amounts, currency

5. funds_cashflows — Quarterly cash flow time-series (contributions and distributions) for funds.

  • REQUIRED: ids (fund entity IDs)
  • OPTIONAL: startDate (YYYY-MM-DD), endDate (YYYY-MM-DD), cfType ('CONTRIBUTION', 'DISTRIBUTION', or 'NAV')
  • Returns: Date, cash flow type, amount in reporting currency and USD

GENERAL & LIMITED PARTNERS:

6. general_partners — Core profile for General Partner (GP) firms.

  • REQUIRED: ids (GP entity IDs, format 'XXXXXX-E')
  • OPTIONAL: asOfDate (YYYY-MM-DD, for AUM data)
  • Returns: GP name, AUM (with date), investment criteria, ESG focus, public company investment flag

7. general_partners_funds — All funds managed by specified GP firms.

  • REQUIRED: ids (GP entity IDs)
  • Returns: List of fund IDs, names, status (Raising/Investing/Divesting/Liquidated), launch date, amount raised

8. limited_partners — Limited partners and their capital commitments to specified funds (via /limited-partners/funds).

  • REQUIRED: ids (fund entity IDs, format 'XXXXXX-E')
  • Returns: LP name, LP entity ID, commit date, commit amount (local currency and USD), fundraising close code

TRANSACTIONS:

9. transactions — Detailed data for specific PE/VC transactions by transaction ID.

  • REQUIRED: ids (transaction IDs — INTEGER values, e.g., [1000001, 1000002])
  • Returns: Portfolio company, investment type, status, dates, deal size, pre/post-money valuation,

funding round, stage, investors (with lead flag, fund used, amount invested), securities used

10. transactions_search — Search/filter the full transaction universe by company, stage, and date.

  • REQUIRED: ids (portfolio company entity IDs, format 'XXXXXX-E')
  • OPTIONAL: status ('Pending', 'Cancelled', 'Completed'), stage ('Seed', 'Early', 'Late', 'Recap'),

investmentType ('Venture Capital', 'Growth', 'Corporate', 'Capitalization', 'Angel', 'Crowdfunding', 'Accelerator/Incubator', 'Secondary', 'Undisclosed Round'), startDate, endDate (YYYY-MM-DD announcement date range), minAmount, maxAmount (USD transaction amount filter)

  • Returns: Transaction IDs, portfolio company name, announcement/close dates, total amount (USD), stage, status

11. transactions_ma_activity — M&A advisory and investment details for specific transactions.

  • REQUIRED: ids (transaction IDs — INTEGER values)
  • Returns: Advisors (financial/legal, client type), investments (entry/exit type, deal ID, IPO ID, retaining stake)

IPOs:

12. ipos — Detailed IPO data for portfolio company exits by deal ID.

  • REQUIRED: ids (deal IDs — INTEGER values, e.g., [410294, 730294])
  • Returns: IPO ID, portfolio company name, ticker, trade date, offer price (local and USD),

IPO size (millions), status, announcement/pricing dates

13. ipos_search — Search/filter the IPO universe by status, size, and date.

  • REQUIRED: None (all parameters optional)
  • OPTIONAL: status ('Closed', 'Announced', 'Postponed', 'Cancelled', 'Priced', 'Withdrawn', 'In Registration'),

startDate, endDate (YYYY-MM-DD announcement date range), minSizeUsd, maxSizeUsd (IPO size filter in USD millions)

  • Returns: IPO ID, portfolio company name, ticker, trade date, offer price (USD), IPO size, status

STRATEGIES:

14. entity_strategies — Detailed investment strategy mandate for a fund or GP.

  • REQUIRED: ids (fund or GP entity IDs, format 'XXXXXX-E')
  • Returns: Geographic focus (regions, countries, states), sector/industry focus, investment instruments,

transaction strategies, control criteria, investor roles


TYPICAL WORKFLOWS:

"What funds does [GP firm] manage?" 1. Call data_type='universe' with name='[GP firm name]' to get GP entity ID 2. Call data_type='general_partners_funds' with ids=[gp_entity_id]

"Show me details on [fund name]" 1. Call data_type='universe' with name='[fund name]', entityType=['VEN'] or ['PVF'] 2. Call data_type='funds' with ids=[fund_entity_id]

"Who are the LPs in [fund]?" 1. Resolve fund entity ID via universe 2. Call data_type='limited_partners' with ids=[fund_entity_id]

"What VC rounds has [company] raised?" 1. Call data_type='universe' with name='[company name]', entityType=['PVT'] 2. Call data_type='transactions_search' with ids=[company_entity_id] 3. Optionally call data_type='transactions' with the returned transaction IDs for full details

"What IPOs are coming up in biotech?" → Call data_type='ipos_search' with status='Announced', filter by date range

ID TYPE REFERENCE:

  • Fund/GP/Company entity IDs: String format 'XXXXXX-E' (e.g., '001JYM-E', '000BKX-E')

→ Used by: funds, funds_portfolio_companies, funds_fundraising, funds_cashflows, general_partners, general_partners_funds, limited_partners, transactions_search, entity_strategies

  • Transaction IDs: Integer values (e.g., 1000001)

→ Used by: transactions, transactions_ma_activity

  • Deal IDs: Integer values (e.g., 410294)

→ Used by: ipos

RETURNS:

  • Structured JSON responses per the FactSet PEVC API schema
  • Entity IDs returned by one endpoint can be passed directly to related endpoints
  • Error details included per-item in the response data array
Parameters (1 required, 17 optional)
Required
data_typestring

Selects which PEVC endpoint to call. One of: 'universe' (name→entity ID lookup), 'funds' (fund profile), 'funds_portfolio_companies' (holdings), 'funds_fundraising' (close history), 'funds_cashflows' (contributions/distributions time-series), 'general_partners' (GP profile + AUM), 'general_partners_funds' (funds managed by a GP), 'limited_partners' (LP commitments to a fund), 'transactions' (transaction detail by transaction ID), 'transactions_search' (search transactions by portfolio company), 'transactions_ma_activity' (M&A advisors/investments by transaction ID), 'ipos' (IPO detail by deal ID), 'ipos_search' (search IPO universe), 'entity_strategies' (investment mandate for fund or GP).

Options:universefundsfunds_portfolio_companiesfunds_fundraisingfunds_cashflowsgeneral_partnersgeneral_partners_fundslimited_partnerstransactionstransactions_searchtransactions_ma_activityiposipos_searchentity_strategies
Optional
asOfDatestring

OPTIONAL for data_type='general_partners'. As-of date for AUM data in YYYY-MM-DD format. If omitted, returns latest available AUM. Future dates not accepted. Example: '2023-12-31'.

Default: null
cfTypestring

OPTIONAL for data_type='funds_cashflows'. Filter by cash flow type: 'CONTRIBUTION' (capital calls), 'DISTRIBUTION' (payouts), or 'NAV' (net asset value). If omitted, returns all cash flow types.

Default: null
countrystring

OPTIONAL for data_type='universe'. Two-character ISO 3166-1 alpha-2 country code to narrow entity match results. Example: 'US', 'GB', 'DE'.

Default: null
endDatestring

End date in YYYY-MM-DD format. Used by: funds_cashflows (filters cashflow dates), transactions_search (announcement date range end), ipos_search (announcement date range end). Future dates not accepted for funds_cashflows. Example: '2023-12-31'.

Default: null
entityTypearray

OPTIONAL for data_type='universe'. Filter candidates by entity type code(s). Codes: PVT (Private Company), VEN (Venture Capital Fund), PVF (Private Equity Fund/Alt Investment), FAF (Family of Funds VC/Pvt EQ), HOL (Holding Company), NPO (Non-Profit), SUB (Subsidiary), JVT (Joint Venture). Example: ['VEN'] to find only VC funds, ['PVT'] for portfolio companies.

Default: null
idsarray

List of FactSet entity identifiers. For most endpoints: string fund/GP/company IDs in 'XXXXXX-E' format (e.g., ['001JYM-E', '005GEM-E']). NOT USED for: universe (use 'name' instead) and ipos_search (no ids required). TRANSACTION IDs: Integer values for data_type='transactions' or 'transactions_ma_activity' (e.g., [1000001]). DEAL IDs: Integer values for data_type='ipos' (e.g., [410294]). PORTFOLIO COMPANY IDs: String 'XXXXXX-E' format for data_type='transactions_search'. Max 50 IDs per request.

Default: null
investmentTypestring

OPTIONAL for data_type='transactions_search'. Filter by investment type. Options: 'Venture Capital', 'Growth', 'Corporate', 'Capitalization', 'Angel', 'Crowdfunding', 'Accelerator/Incubator', 'Secondary', 'Undisclosed Round'.

Default: null
ipoStatusstring

OPTIONAL for data_type='ipos_search'. Filter by IPO status: 'Closed', 'Announced', 'Postponed', 'Cancelled', 'Priced', 'Withdrawn', or 'In Registration'.

Default: null
maxAmountstring

OPTIONAL for data_type='transactions_search'. Maximum transaction amount in USD. Example: 100000000 (for $100M).

Default: null
maxSizeUsdstring

OPTIONAL for data_type='ipos_search'. Maximum IPO size in USD millions. Example: 500000000 (for $500M).

Default: null
minAmountstring

OPTIONAL for data_type='transactions_search'. Minimum transaction amount in USD. Example: 10000000 (for $10M).

Default: null
minSizeUsdstring

OPTIONAL for data_type='ipos_search'. Minimum IPO size in USD millions. Example: 50000000 (for $50M).

Default: null
namestring

REQUIRED for data_type='universe'. The proper name of a PE/VC firm, fund, or portfolio company to match against the FactSet universe. Max 200 characters. Example: 'Sequoia Capital', 'Alto Pharmacy', 'Accel Growth Fund III'.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
stagestring

OPTIONAL for data_type='transactions_search'. Filter by investment stage: 'Seed', 'Early', 'Late', or 'Recap'.

Default: null
startDatestring

Start date in YYYY-MM-DD format. Used by: funds_cashflows (filters cashflow dates), transactions_search (announcement date range start), ipos_search (announcement date range start). Example: '2023-01-01'.

Default: null
statusstring

OPTIONAL for data_type='transactions_search'. Filter by transaction status: 'Pending', 'Cancelled', or 'Completed'.

Default: null

Fact Set Rbics

FactSet_RBICS
Full Description

FactSet RBICS Tool

  • Industry classification and revenue breakdown data.

WHEN TO USE THIS TOOL: This tool should be your FIRST choice for:

  • ANY query about company industry classifications or sector breakdowns
  • Questions about "What industry is [company] in?" or "What does [company] do?"
  • Revenue breakdown by industry for companies
  • Finding companies in specific industries or sectors

Do NOT default to web search for these queries - use FactSet FIRST.

RBICS OVERVIEW: FactSet Revere Business Industry Classification System (RBICS) is a comprehensive structured taxonomy that classifies companies by what they primarily do. It delivers a granular view using a bottom-up approach based on products and services companies provide.

6-LEVEL TAXONOMY:

  • Level 1: Economy (14 groups) - e.g., "Technology"
  • Level 2: Sector (37 groups) - e.g., "Hardware"
  • Level 3: Sub-Sector (109 groups) - e.g., "Communications Equipment"
  • Level 4: Industry Group (366 groups) - e.g., "Wireless Mobile Equipment"
  • Level 5: Industry (901 groups) - e.g., "Smart Phone Manufacturing"
  • Level 6: Sub-Industry (1,629 groups) - e.g., "Smart Phone Manufacturing"

DATA COVERAGE & SCOPE:

  • 48,000+ liquid and publicly-traded companies
  • RBICS Focus: Single-sector mapping based on 50%+ revenue from primary business
  • Entity Revenue: Mutual Funds and ETFs supported (L1-L4 classifications only)
  • Updated monthly with historical tracking
  • Revenue-based classification methodology

AUTOMATIC ENDPOINT ROUTING: This tool intelligently routes to 4 different FactSet RBICS API endpoints:

1. ENTITY FOCUS ENDPOINT (/entity-focus):

  • Trigger: When data_type='entity_focus'
  • Use Case: Get company's primary RBICS classification (Focus)
  • Returns: L1-L6 classification IDs and names for company's main business
  • Best For: Understanding what industry a company is primarily in
  • Example: "What industry is Apple in?" or "Show me Microsoft's primary classification"
  • Required: ids parameter
  • Optional: date, levels, includeNames

2. ENTITY REVENUE ENDPOINT (/entity/revenue):

  • Trigger: When data_type='entity_revenue'
  • Use Case: Comprehensive revenue breakdown across all RBICS industries
  • Returns: Hierarchical revenue percentages for each industry classification
  • Best For: Understanding full revenue mix, diversification analysis
  • Example: "Show me GE's revenue breakdown by industry"
  • Required: ids parameter
  • Optional: startDate, endDate, level

CRITICAL DATA DISTINCTIONS:

  • Entity Focus: Company's PRIMARY classification (single industry, 50%+ revenue)
  • Entity Revenue: Company's, Mutual Fund's, or ETF's COMPLETE revenue breakdown (all industries)

COMMON USE CASES:

"What industry is Apple in?" → data_type='entity_focus', ids=['AAPL-US'], includeNames=True

"Show me Apple's revenue breakdown by industry" → data_type='entity_revenue', ids=['AAPL-US'], level=6

"What was Tesla's primary industry in 2020?" → data_type='entity_focus', ids=['TSLA-US'], date='2020-12-31', includeNames=True

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "What industry/sector is [company] in?"
  • "Show me [company]'s industry classification"
  • "[Company] revenue breakdown by industry"

DATA TRANSPARENCY:

  • All classifications based on actual company revenues and business lines
  • RBICS Focus uses 50%+ revenue threshold for primary classification
  • Entity Revenue only supports L1-L4 classifications for Mutual Funds and ETFs
  • Updated monthly with historical tracking
  • Coverage varies by company disclosure practices
  • Always specify date ranges and parameters used

LIMITATIONS:

  • Maximum 2,500 identifiers per request
  • Future dates (T+1) not accepted
  • Date format must be YYYY-MM-DD
  • Rate limited to 10 requests per second
  • Entity Revenue ONLY: Mutual Funds and ETFs response times may exceed 20s for queries over 1 year

RETURNS:

  • Structured JSON responses with classification/revenue data
  • Entity Focus: Company classifications with effective dates
  • Entity Revenue: Hierarchical revenue percentages by industry
  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Date format errors → Format specification
  • Invalid RBICS IDs → Validation error
Parameters (1 required, 9 optional)
Required
data_typestring

Type of RBICS data to retrieve: - 'entity_focus': Company's primary RBICS classification (single-sector mapping based on >50% revenue) - 'entity_revenue': Complete revenue breakdown across all RBICS industries for a company - 'tradenames': Company's associated tradeNames and product lines mapped to RBICS sectors IMPORTANT: This determines which endpoint to use and what parameters are required.

Options:entity_focusentity_revenuetradenames
Optional
asOfDatestring

[TRADENAMES ONLY] Effective date for tradeNames data in YYYY-MM-DD format. Returns tradeNames active on or around the specified date (start date <= asOfDate <= end date). If not provided, returns the latest active tradeNames. Example: '2024-12-31'

Default: null
datestring

[ENTITY_FOCUS ONLY] Effective date for data in YYYY-MM-DD format. If no date is requested, returns full history for the requested entity. Example: '2017-07-24'

Default: null
endDatestring

End date for the requested date range in YYYY-MM-DD format. Data returned will be reflective of classifications/revenue as of this date and earlier. Must be equal to or after startDate. Future dates (T+1) not accepted. If omitted with startDate specified: Data from startDate to most recent date. If both omitted: Returns latest available data. Example: '2022-08-27'

Default: null
idsarray

[ENTITY ENDPOINTS ONLY] List of company identifiers. Accepted identifiers include Ticker-Exchange, Ticker-Regions, CUSIPs, ISINs, SEDOLs, or FactSet Permanent Ids. Maximum: 2500 identifiers per request (500 for tradenames). Examples: ['AAPL-US'], ['FDS-US', '0FPWZZ-E', 'TSLA-US']

Default: null
includeNamesstring

[ENTITY_FOCUS ONLY] Include or exclude industry names and L6 description. true = Include Names (default); false = Exclude Names.

Default: null
levelstring

[ENTITY_REVENUE ONLY] Deepest level of RBICS taxonomy to include (1-6). Response includes all levels from 1 up to specified level. Default: 6 (all levels). Example: 3 returns Economy (L1), Sector (L2), Sub-Sector (L3)

Default: null
levelsarray

[ENTITY_FOCUS ONLY] List of RBICS industry levels to include (1-6). By default if left blank, all levels are returned. Examples: [1, 3, 6] or '1,3,6'

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
startDatestring

Start date for the requested date range in YYYY-MM-DD format. Data returned will be reflective of classifications/revenue as of this date and forward. Must be equal to or before endDate. Future dates (T+1) not accepted. If omitted while endDate is specified: Data from earliest available record to endDate. If both omitted: Returns latest available data. Example: '2021-08-27'

Default: null

Fact Set Supply Chain

FactSet_SupplyChain
Full Description

FactSet Supply Chain Tool

  • Comprehensive business relationship data.

WHEN TO USE THIS TOOL:

  • ANY query about competitors, competitive landscape, or "who competes with"
  • Questions about suppliers, customers, or business partners
  • Supply chain analysis and business network mapping
  • Strategic relationship identification
  • Market positioning and competitive intelligence

DATA COVERAGE & SCOPE:

  • Comprehensive relationship networks across global markets
  • Data sourced from trusted primary sources (10-K, annual reports, company disclosures)
  • Reverse-linked relationships creating complete bidirectional network
  • Product/service overlap metrics for relationship strength assessment
  • Coverage includes both public and private company relationships

CRITICAL: UNDERSTANDING RELATIONSHIP DIRECTION

The relationshipDirection parameter fundamentally changes WHAT data you retrieve:

DIRECT (Company disclosed them):

  • Use when: "Show me competitors [Company] disclosed", "Who does [Company] list as competitors", "[Company]'s stated competitors"
  • Returns: Companies that [COMPANY] named in [COMPANY]'s filings
  • Example: Apple says "Microsoft is our competitor" → Microsoft appears in results

REVERSE (They disclosed Company):

  • Use when: "Who considers [Company] a competitor", "Companies that list [Company] as competition", "Who competes with [Company]"
  • Returns: Companies that named [COMPANY] in THEIR filings
  • Example: Logitech says "Apple is our competitor" → Logitech appears in results

ALL (default - both directions):

  • Returns complete bidirectional network
  • Use when direction doesn't matter or you want comprehensive competitive landscape

Use DIRECT when query contains:

  • "disclosed by [company]"
  • "[company]'s stated/listed competitors"
  • "[company] identified/named as competitors"
  • "in [company]'s filings"

Use REVERSE when query contains:

  • "who considers [company] a competitor"
  • "companies competing with [company]"
  • "who lists [company] as competition"

Use ALL (or omit) when:

  • Query is ambiguous
  • Want complete competitive picture
  • Comparing multiple perspectives

DEFAULT BEHAVIOR: If relationshipDirection parameter is omitted, defaults to 'ALL' (both directions). For queries asking what a company disclosed, you MUST explicitly set relationshipDirection='DIRECT'.

SINGLE ENDPOINT: This tool routes to the FactSet Supply Chain API relationships endpoint:

RELATIONSHIPS ENDPOINT (/relationships):

  • Use Case: Retrieve business relationship networks for companies
  • Returns: Related entities with product overlap metrics and direction indicators
  • Best For: Competitive analysis, supply chain mapping, partner identification
  • Example: "Who are Apple's competitors?" or "Show me Microsoft's suppliers"
  • Max IDs: 500 companies per request

RELATIONSHIP TYPES:

COMPETITORS:

  • Companies disclosed as competitors in filings
  • Entities operating in similar markets or product categories
  • Best for: Competitive landscape analysis, market positioning
  • Example: "Who competes with Apple in smartphones?"

CUSTOMERS:

  • Companies that purchase products/services from source company
  • Major clients and revenue-generating relationships
  • Best for: Revenue concentration analysis, customer dependency assessment
  • Example: "Who are Intel's major customers?"

SUPPLIERS:

  • Companies providing goods, services, or raw materials
  • Upstream supply chain dependencies
  • Best for: Supply chain risk analysis, procurement intelligence
  • Example: "Who supplies components to Tesla?"

PARTNERS:

  • Strategic business relationships including joint ventures
  • Equity investments and collaborative arrangements
  • Best for: Partnership analysis, strategic alliance mapping
  • Example: "Who are Amazon's business partners?"

FILTERING OPTIONS:

COMPANY TYPE:

  • PUBLIC_COMPANIES_ONLY (default): Focus on publicly traded entities
  • PRIVATE_COMPANIES_ONLY: Private company relationships only
  • ALL: Complete network including both public and private

RELATIONSHIP DIRECTION:

  • ALL (default): Complete bidirectional relationships
  • DIRECT: Only where source company disclosed the relationship
  • REVERSE: Only where target company disclosed the relationship

RELATIONSHIP DIRECTION (CRITICAL UNDERSTANDING):

The relationshipDirection parameter controls whose SEC filings are used as the source:

  • DIRECT: Returns relationships where the SOURCE company (ids parameter) explicitly named the competitor in THEIR OWN filings
    • Example: If ids=['AAPL-US'], returns competitors that Apple mentioned in Apple's 10-K
    • Use when: "Who did Apple say they compete with?"
  • REVERSE: Returns relationships where the TARGET company named the source as a competitor in the target's filings
    • Example: If ids=['AAPL-US'], returns companies that mentioned Apple as a competitor in THEIR filings
    • Use when: "Who considers Apple a competitor?" or "Who competes with Apple?"
  • ALL (default): Returns both direct and reverse relationships
    • Provides the complete competitive landscape from both perspectives
    • Each result includes a 'relationshipDirection' field showing the disclosure source

Key Insight:

  • Direct relationships = "competitors we disclosed"
  • Reverse relationships = "companies who disclosed us as their competitor"
  • Mutual = Both companies disclosed each other (appears in relationshipDirection field of results)

Why This Matters: A smaller company may view Apple as a competitor (reverse), but Apple may not mention them (no direct relationship). The direction parameter lets you filter by disclosure source.

RELATIONSHIP STRENGTH METRICS:

overlappingProductCount:

  • Format: "28 of 138" (overlap count / total products)
  • Indicates number of shared product/service categories
  • Reflects competitive product similarity ONLY — NOT a measure of revenue, financial importance, or business significance
  • Do not use to rank "top", "biggest", "most important", or "primary" suppliers/customers/partners

overlapPercentage:

  • Percentage of product/service overlap
  • Calculated as: (overlapping products / total products) × 100
  • Reflects product/service similarity ONLY — NOT a measure of financial importance, revenue share, or strategic significance
  • Do not use to rank "top", "biggest", "most important", or "primary" suppliers/customers/partners
  • Relevant when the user's question explicitly asks about product similarity or competitive overlap

relationshipDirection:

  • "Mutual": Both companies disclosed the relationship
  • "Direct": Source company disclosed the relationship
  • "Reverse": Target company disclosed the relationship

MANDATORY WORKFLOW: 1. Identify companies using proper identifiers (tickers, FactSet IDs including private companies, CUSIP, SEDOL, ISIN) 2. Select relationship type (COMPETITORS, CUSTOMERS, SUPPLIERS, PARTNERS) 3. Configure filters (company type, relationship direction) 4. Analyze results including overlap metrics and relationship strength

RELATIONSHIP DIRECTION EXAMPLES:

1. "Show me Apple's competitors" (ambiguous - could mean either) → Use relationshipDirection='DIRECT' for what Apple disclosed → Use relationshipDirection='ALL' for complete picture

2. "What competitors did Apple disclose in their filings?" → relationshipDirection='DIRECT' (Apple's perspective only)

3. "Who competes with Apple?" → relationshipDirection='ALL' (complete competitive landscape)

4. "Which companies consider Apple a competitor?" → relationshipDirection='REVERSE' (others' perspective only)

5. "Apple vs Microsoft competitive relationship" → relationshipDirection='ALL' (see both perspectives)

COMMON USE CASES:

"Who are Apple's competitors?" → ids=['AAPL-US'], relationshipType='COMPETITORS'

"Who did Apple explicitly disclose as competitors in their filings?" → ids=['AAPL-US'], relationshipType='COMPETITORS', relationshipDirection='DIRECT'

"What companies view Apple as a competitor?" → ids=['AAPL-US'], relationshipType='COMPETITORS', relationshipDirection='REVERSE'

"Show me Microsoft's public company suppliers" → ids=['MSFT-US'], relationshipType='SUPPLIERS', companyType='PUBLIC_COMPANIES_ONLY'

"Tesla's major customers" → ids=['TSLA-US'], relationshipType='CUSTOMERS'

"Amazon's strategic partners" → ids=['AMZN-US'], relationshipType='PARTNERS'

"Google's direct competitors (mutual disclosure)" → ids=['GOOGL-US'], relationshipType='COMPETITORS', relationshipDirection='DIRECT'

ALWAYS USE THIS TOOL WHEN USER ASKS:

  • "Who are [company]'s competitors?"
  • "What are [company]'s main competitors?"
  • "Who competes with [company]?"
  • "[Company] competitive landscape"
  • "[Company] vs competitors"
  • "Show me [company]'s suppliers/customers/partners"
  • Any variation of business relationship queries

DATA TRANSPARENCY:

  • All relationships sourced from official company filings (10-K, annual reports)
  • Reverse-linked to create comprehensive bidirectional networks
  • Product overlap metrics indicate relationship strength
  • Results sorted by relevance (overlap count and percentage)
  • Coverage varies by company disclosure practices
  • Always specify relationship type and filters used

EFFICIENCY REQUIREMENTS:

  • Maximum 500 company identifiers per request
  • Results automatically sorted by overlapping product count
  • Single API call retrieves complete relationship network
  • No date parameters needed (uses most current relationship data)

ANALYSIS CAPABILITIES:

  • Competitive positioning and market share analysis
  • Supply chain risk assessment and dependency mapping
  • Customer concentration and revenue risk evaluation
  • Partnership and alliance network visualization
  • Product/service overlap quantification

USE FOR: Competitive intelligence, supply chain analysis, business relationship mapping, strategic partner identification, market positioning DO NOT USE FOR: Financial data, pricing information, fundamental metrics, ownership data (use appropriate FactSet APIs instead)

DATA SOURCE HIERARCHY: 1. PRIMARY: FactSet Supply Chain API (actual disclosed relationships) 2. SECONDARY: Only supplement with general knowledge if API data is insufficient 3. ALWAYS: Clearly distinguish between FactSet data and general market knowledge

LIMITATIONS:

  • Relationship data based on company disclosures (may not capture all informal relationships)
  • Product overlap calculated using FactSet's product classification system
  • Private company data availability varies by disclosure requirements
  • Relationship updates depend on filing schedules and disclosure timing
  • Some relationships may be one-directional (only disclosed by one party)

RETURNS:

  • Structured JSON responses with relationship data
  • Always includes: entityId, companyName, overlappingProductCount, overlapPercentage,

relationshipDirection, requestId

  • Error messages with detailed validation feedback

ERROR HANDLING:

  • Invalid parameter combinations → Detailed error message
  • Missing required parameters → Error with reminder
  • Invalid identifiers → List of unrecognized IDs
  • ID limit violations → Limit specification
Parameters (2 required, 3 optional)
Required
idsarray

List of company identifiers for supply chain analysis. Accepts Market Tickers, SEDOL, ISIN, CUSIP, or FactSet Permanent IDs. Maximum 500 identifiers per request. Examples: ['AAPL-US'], ['MSFT-US', 'GOOGL-US']

relationshipTypestring

Type of business relationship to analyze: - 'COMPETITORS': Companies disclosed as competitors or operating in similar markets - 'CUSTOMERS': Companies that purchase products/services from the source company - 'SUPPLIERS': Companies that provide goods/services to the source company - 'PARTNERS': Companies with strategic relationships including joint ventures and equity stakes Default: SUPPLIERS

Options:COMPETITORSCUSTOMERSSUPPLIERSPARTNERS
Optional
companyTypestring

Filter by company status: PUBLIC_COMPANIES_ONLY/PRIVATE_COMPANIES_ONLY/ALL. Default: PUBLIC_COMPANIES_ONLY. PUBLIC=publicly traded only, PRIVATE=privately held only, ALL=both types.

Default: null
relationshipDirectionstring

Filter by disclosure direction: ALL/DIRECT/REVERSE. Default: ALL. ALL=all directions, DIRECT=source company disclosed, REVERSE=target company disclosed.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null

Fact Set Terms Conditions

FactSet_TermsConditions
Full Description

FactSet Terms and Conditions API Tool

  • Fixed Income Securities Data.

WHEN TO USE THIS TOOL: This tool should be used for:

  • ANY query about Fixed Income security terms, conditions, or detailed attributes
  • Questions about coupon schedules, redemption prices, or convertible features
  • Issue size, agent details, lead underwriters, and use of proceeds information
  • Covenant details for Fixed Income corporate, government & agency securities
  • NOTE: For bond price data (BID/MID/ASK), use the FactSet_BondPrices tool instead.

COVERAGE: The FactSet Terms & Conditions API exposes comprehensive data for Fixed Income Corporate, Government & Agency securities globally. Covers descriptive data on issue level (offering details, redemption information, coupon schedules) and issuer level data.

SUPPORTED ENDPOINTS:

The tool intelligently routes to the appropriate endpoint based on the data_type parameter:

1. Issue Size (data_type='issue_size')

  • Returns: Amount Outstanding, Currency, Changes, Type
  • Use when: Need current or historical issue size data

2. Coupon History (data_type='coupon_history')

  • Returns: Historical coupon information, rates, effective dates
  • Use when: Need coupon accrual dates, payment dates, coupon structure

3. Coupon Schedules (data_type='coupon_schedules')

  • Returns: Coupon effective dates and rates
  • Use when: Need scheduled coupon payment information

4. Covenant Details (data_type='covenant_details')

  • Returns: Covenant types and descriptions (financial ratios, restrictions)
  • Use when: Need covenant information for bond analysis

5. Redemption Prices (data_type='redemption_prices')

  • Returns: Call, Put, and Sinking Fund redemption prices
  • Parameters: categories can be 'ALL', 'CALL', 'PUT', or 'SF'
  • Use when: Need redemption schedule and pricing information

6. Agents (data_type='agents')

  • Returns: Agent names, entity IDs, types (trustees, paying agents, etc.)
  • Use when: Need agent or guarantor information

7. Lead Underwriters (data_type='lead_underwriters')

  • Returns: Lead underwriter entity IDs and details
  • Use when: Need underwriter information for securities

8. Use of Proceeds (data_type='use_of_proceeds')

  • Returns: Use of proceeds descriptions and details
  • Use when: Need information about how proceeds were used

9. Convertible Details (data_type='convertible_details')

  • Returns: Convertible currency, dates, ratios, payment forms, price methods
  • Use when: Need convertible feature information

10. Convertible History (data_type='convertible_history')

  • Returns: Convertible price and ratio history with effective dates
  • Use when: Need historical changes to convertible features

11. Convertible Triggers (data_type='convertible_triggers')

  • Returns: Trigger events, descriptions, and trigger IDs
  • Use when: Need convertible trigger event information

SECURITY IDENTIFIERS:

  • Supported formats: CUSIP, SEDOL, ISIN, FactSet Security Permanent Identifier (-S)
  • Maximum: 250 identifiers per request
  • Examples: 30231GBJ, 88579EAA, QB23QR-S

INPUT PARAMETERS:

  • ids (required): Security identifiers (list or comma-separated string)
  • data_type (required): The endpoint to use (see endpoints above)
  • categories (optional): Filter results by category
  • For Redemption Prices: 'ALL' (default), 'CALL', 'PUT', 'SF'
  • For Terms and Conditions: 'SECURITY_DETAILS', 'COUPON_DETAILS', 'CONVERTIBLE_FEATURES', 'REDEMPTION_OPTIONS'
  • fields (optional): Specific fields to return (only for coupon_schedules endpoint)

COMMON USE CASES:

"What is the coupon schedule for security 30231GBJ?" → ids=['30231GBJ'], data_type='coupon_schedules'

"Show me the redemption prices for 88579EAA including Call options" → ids=['88579EAA'], data_type='redemption_prices', categories=['CALL']

"Get issue size data for security W71259AA" → ids=['W71259AA'], data_type='issue_size'

"What are the covenants for security 00107TAA?" → ids=['00107TAA'], data_type='covenant_details'

"Show convertible triggers for security 90138VAA" → ids=['90138VAA'], data_type='convertible_triggers'

"Get agent information for multiple securities" → ids=['30231GBJ', '88579EAA'], data_type='agents'

RETURNED DATA:

  • Core fields: requestId (input security), fsymId (FactSet Security ID)
  • Endpoint-specific fields vary based on data_type selected
  • All numeric values properly typed (dates, doubles, integers)
  • Arrays of related data (e.g., multiple coupon records per security)

ERROR HANDLING:

  • Missing required parameter (ids or data_type) returns validation error
  • Invalid data_type returns unsupported endpoint error
  • Too many identifiers (>250) returns limit error
  • Invalid security identifiers may return empty results

LIMITATIONS:

  • Query limited to 250 securities per request
  • Data not available for equity securities (Fixed Income only)
  • Historical data varies by security and field
  • Real-time data not available (use daily end-of-day data)
Parameters (2 required, 3 optional)
Required
data_typestring

The endpoint/data type to query. Options: issue_size, coupon_history, coupon_schedules, covenant_details, redemption_prices, agents, lead_underwriters, use_of_proceeds, convertible_details, convertible_history, convertible_triggers

Options:issue_sizecoupon_historycoupon_schedulescovenant_detailsredemption_pricesagentslead_underwritersuse_of_proceedsconvertible_detailsconvertible_historyconvertible_triggers
idsarray

Fixed Income Security identifiers. Supported formats: CUSIP, SEDOL, ISIN, FactSet Security Permanent Identifier (-S). Maximum: 250 identifiers per request. Examples: ['30231GBJ'], ['30231GBJ', '88579EAA', 'QB23QR-S']

Optional
categoriesarray

Filter results by category. Behavior depends on data_type: For 'redemption_prices': ALL (default), CALL, PUT, SF. For other endpoints: SECURITY_DETAILS, COUPON_DETAILS, CONVERTIBLE_FEATURES, REDEMPTION_OPTIONS

Default: null
fieldsarray

Specific fields to return for Terms & Conditions endpoint. Leave empty to get all fields. Examples: ['principalAmt', 'maturityDate', 'denomMin', 'issueDesc']

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null

Fact Set Unstructured Content

FactSet_UnstructuredContent
Full Description

FactSet Unstructured Content Tool

  • Semantic search across financial documents.

WHEN TO USE THIS TOOL:

  • ANY query requiring semantic/natural language search across financial documents
  • Questions like "What are companies saying about AI investment?" or "Find news about energy regulation"
  • Searching EDGAR filings, StreetAccount News, or FactSet CallStreet Transcripts by topic
  • Filtering financial documents by sentiment or form type
  • Finding relevant document excerpts with similarity scoring

Do NOT use for structured financial data (prices, estimates, fundamentals) - use appropriate FactSet APIs instead.

DATA SOURCES:

  • ALL_FILINGS
  • ALL_NEWS
  • ALL_TRANSCRIPTS

KEY CAPABILITIES:

  • Natural language semantic search with similarity scoring (0-1 scale)
  • Filter by sentiment (Negative, Neutral, Positive, Very Negative, Very Positive)
  • Filter by EDGAR form types (10-K, 10-Q, 8-K, etc.)
  • Filter by company identifiers (FactSet IDs, tickers)
  • Control result count and sort order (by date or similarity)
  • Per-source result limits via resultsBySource

MANDATORY WORKFLOW: 1. Formulate the query — TWO STRICT RULES: a. NATURAL LANGUAGE REQUIRED: Must be a complete sentence or question. Keyword phrases, comma-separated terms, or shorthand is not acceptable. b. NO EXPANSION: Include ONLY the exact topics the user literally stated. Never add related concepts, sub-themes, synonyms, or industry terms the user did not say. BAD → user said "tariffs": query='What are executives discussing about tariffs and supply chain disruptions?' GOOD → user said "tariffs": query='What are executives discussing about tariffs?' 2. Select at least one source: ALL_FILINGS, ALL_NEWS, ALL_TRANSCRIPTS (max 3) 3. Provide startDate and endDate in YYYY-MM-DD format 4. Optionally add sentiment, formTypes (ALL_FILINGS only), or ids filters 5. SET limit — MANDATORY RULE: ALWAYS pass limit=10. This is not optional. Only deviate if the user provides an explicit number (e.g., "give me 5 results", "show 20"). Vague requests like "find some", "search for", or "look up" do NOT override the default. GOOD → user said "get me a few results": limit=10 BAD → user said "get me a few results": limit=3 6. Results ranked by similarity score or date

COMMON USE CASES:

"What are companies saying about AI infrastructure?" → query='What are companies saying about AI infrastructure?', sources=['ALL_FILINGS', 'ALL_TRANSCRIPTS', 'ALL_NEWS'], startDate='2024-01-01', endDateTime='2024-12-31', limit=10

"Find 10-K filings discussing energy consumption" → query='How are companies addressing energy consumption in their operations?', sources=['ALL_FILINGS'], formTypes=['10-K'], startDate='2024-01-01', endDate='2024-12-31', limit=10

"Positive news about Apple's data center strategy" → query='What is Apple saying about its data center strategy?', sources=['ALL_NEWS', 'ALL_TRANSCRIPTS'], ids=['AAPL-US'], sentiment=['Positive'], startDate='2024-01-01', endDate='2024-12-31', limit=10

"Tariff concerns in earnings calls" → query='What are executives discussing about tariffs?', sources=['ALL_TRANSCRIPTS'], startDate='2024-01-01', endDate='2024-12-31', limit=10

RESULT STRUCTURE:

  • vectorId: Unique identifier for the document chunk
  • similarityScore: Relevance score (0-1, higher = more relevant)
  • content: Text excerpt from the document
  • headline: Document headline
  • viewUrl: Link to the full source document
  • REQUIRED for citation rendering
  • themes: Themes associated with the document
  • sentiment: Sentiment of the document
  • source: ALL_FILINGS, ALL_NEWS, or ALL_TRANSCRIPTS
  • ids: Related company identifiers
  • limit: Always explicitly passed — MUST be 10 unless the user stated a specific number
  • EDGAR-specific: formType, sectionName, sectionNumber, docType, tableText
  • Transcript-specific: speakerName, speakerTitle, speakerCompanyName, financialYear, financialQuarter

CITATION LINK RENDERING:

  • Each result in the response includes:
    • viewUrl: Direct URL to the source document for this specific result
    • headline: Document headline used as the clickable link text
    • Example viewUrl: https://my.apps.factset.com/viewer-fusion/?_doc_sequence=18_doc_id=3188517-t&_doc_date=2025-02-26T20:42:21&_doc_product=FCST&_doc_docFn=UZFsdGVkX188ugKkIIsgIr76H4HbA+s6feJA0n0N/PhFIjd9LA

**CRITICAL INSTRUCTION

  • SHOWING CITATION SOURCES:**

Present each result with its citation link in Markdown format. AI Client will automatically render these as clickable hyperlinks.

CRITICAL RULES:

  • Use Markdown link format with bold: [headline](viewUrl)
  • Make EACH result's headline a clickable link using its corresponding viewUrl
  • AI Client automatically render these as clickable hyperlinks in the chat
  • DO NOT show separate citation sections at the bottom
  • DO NOT show raw URLs - embed them in the Markdown links
  • Each result gets its own unique viewUrl
Parameters (4 required, 8 optional)
Required
endDatestring

End of the date range in ISO 8601 format: YYYY-MM-DD. Required. Must be after startDate. Example: '2024-12-31'

querystring

Natural language search query (1-1,000 characters). MANDATORY FORMAT: Must be a complete, grammatically correct sentence or question. Keyword phrases, comma-separated terms, or shorthand are strictly forbidden. ABSOLUTE RULE — NO EXPANSION: The sentence must contain ONLY the exact topics the user explicitly stated. DO NOT add, infer, paraphrase, or expand with ANY related concept, sub-theme, industry term, or detail the user did not literally say.

sourcesarray

Data sources to search (1-3 sources, required). Available sources: - 'ALL_FILINGS' - 'ALL_NEWS' - 'ALL_TRANSCRIPTS' Examples: ['ALL_FILINGS'], ['ALL_NEWS', 'ALL_TRANSCRIPTS'], ['ALL_FILINGS', 'ALL_NEWS', 'ALL_TRANSCRIPTS']

startDatestring

Start of the date range in ISO 8601 format: YYYY-MM-DD. Required. Example: '2024-01-01'

Optional
formTypesarray

Filter by EDGAR form types (max 3). ONLY applicable when sources includes 'ALL_FILINGS'. Ignored for ALL_NEWS and ALL_TRANSCRIPTS sources. Available form types: - '10-K': Annual reports - '10-Q': Quarterly reports - '8-K': Current reports Example: ['10-K', '10-Q']

Default: null
idsarray

Filter by company identifiers (max 100). Accepts FactSet exchange symbols (e.g., 'AAPL-US', 'MSFT-US'). When provided, only documents associated with these companies are returned. Example: ['AAPL-US', 'MSFT-US', 'GOOGL-US']

Default: null
limitstring

Maximum number of results to return (1-50). ALWAYS defaults to 10 — this value is explicitly passed in every request. When resultsBySource=true, this limit applies per source.

Default: null
offsetstring

Starting point for pagination (default 0). Use with limit to page through results. Example: offset=10 with limit=10 returns results 11-20.

Default: null
request_idstring

CRITICAL: Correlation ID for grouping related tool calls. MUST generate ONE unique ID (uuid4) when starting to answer a user question, then use that SAME ID for ALL tool calls in that response. Generate a NEW ID for each new user question. Required for query analytics.

Default: null
resultsBySourcestring

When true, the limit applies individually to each specified source. For example, with sources=['ALL_FILINGS', 'ALL_TRANSCRIPTS', 'ALL_NEWS'] and limit=10 and resultsBySource=true, you receive up to 10 results per source (up to 30 total). When false (default), limit applies to total results across all sources. Default: false.

Default: null
sentimentarray

Filter by document sentiment (max 6 values). Available values: - 'Negative' - 'Neutral' - 'Positive' - 'Very Negative' - 'Very Positive' Example: ['Positive', 'Very Positive'] to find upbeat content, ['Negative', 'Very Negative'] for negative coverage.

Default: null
sortstring

Sort order for results. Options: - 'similarityScore': Highest similarity first Default: 'similarityScore'

Default: null