scan_* tool. scan_run screens a whole market live on any of its fields: price and volume on 1-minute to monthly bars, performance, technical indicators and ratings, candlestick patterns, valuation, profitability, growth, balance sheet, cash flow, dividends, earnings and dividend dates and analyst targets. It covers stocks in 68 countries with their ETFs and funds, crypto pairs and coins, forex, futures, CFDs, bonds, options and economic series, and narrows to index universes such as the S&P 500, Nasdaq 100, Nifty 50, FTSE 100 or Nikkei 225. scan_history screens instruments’ price history with a formula of your own, for rules no field expresses. scan_ohlcv and the fundamentals tools return bars, statements, earnings, dividends and revenue segments per symbol. Every tool answers with a result envelope with tables and charts.
Fincept Scanner tools are free. They count toward the rate limit only. Requests to the market data source are also paced across the server: when that budget is in use the tool answers
busy with details.retry_after_s, the number of seconds to wait.Modules
Tools are grouped in three modules. Each module is a toolset namedscan_<module>, so you can list it or search within it. The Fincept Scanner reference lists every tool.
scan_run is listed by default. scan_catalog returns the live list of modules and tools from inside your agent.
Build a screen
A screen is a market, conditions on its fields, and a sort:Where to screen
scan_markets lists every market by region with its exchanges, every index, the timeframes and the operators.
Fields
Field names are case-sensitive:RSI, close, SMA50, market_cap_basic, price_earnings_ttm, sector, earnings_release_next_date. scan_fields searches a market’s fields by words ("dividend yield", "free cash flow", "52 week"), category or type, and with include_values lists the exact values a text field takes, such as every sector or industry.
- Timeframes. A bar field (price, volume or a technical) reads another timeframe with a suffix:
RSI|60is RSI on 1-hour bars. Suffixes are1,5,15,30,60,120,240(minutes),1Wand1M; daily is the field without a suffix. Thetimeframeargument applies one to every bar field that names none. - Previous bars.
[1]and[2]read a bar field one or two bars back:close[1],RSI[1]|60. - Units. Percent fields are in percent (
5is 5%). Date fields take ISO dates ("2026-01-31") and come back as ISO dates. - Checked first. A field the market does not have is refused before anything runs, with the nearest names in
details.did_you_mean. A text value the field never takes ("Technology"forsector) adds a warning with the values it does take.
Conditions
Each condition is{"field", "op", "value"}, or {"field", "op", "to_field"} to compare with another field. filters must all hold.
OR logic
where holds an and/or tree three levels deep, and is combined with filters by AND. Each level is {"all": [...]} or {"any": [...]}, whose items are conditions or groups:
Sort, columns and pages
sort_byandsort_order(descorasc) pick the order; the default is market cap for stocks and coins, traded volume for crypto pairs, forex, futures and options, and name for the rest.columnspicks the fields each row carries. Every field a condition or the sort reads is added, so a row shows why it matched.limitreturns up to 1,000 rows (default 50).offsetskips rows;data.next_offsetis the offset of the next page, null on the last.
Templates
template starts from a ready-made screen. Your filters are added to its conditions; your sort_by and columns replace its own. scan_templates lists all 44, each with its full arguments to copy and adapt.
Screen price history
scan_history evaluates a formula over each instrument’s bars, for rules no field expresses: streaks, breakouts over any window, distances from highs, custom indicators and their crosses. It takes up to 40 symbols, so narrow a market with scan_run first. A data reference passes a screen’s symbols in one call:
open, high, low, close, volume, hl2, hlc3 and ohlc4:
x[n]isxfromnbars back;+ - * / % **, comparisons, andand,or,notwork bar by bar.- Window lengths and settings are numbers, such as
sma(close, 50). conditiondecides a match on the latest bar, or on any of the lastwithinbars (the row says when it last held).valuesare named formulas reported at the latest bar, andsort_bycan name one.
A formula is checked before anything is fetched: an unknown name, a missing window or anything that is not a formula is refused with the reason.
Examples:
Bars and fundamentals
Amounts are in the reporting currency’s own units, not thousands or millions. A date range that would need more than 5,000 bars is refused; ask for the latest bars by count or use a longer interval.
Limits
scan_history and the bar and fundamentals tools fetch a few instruments at a time. When the server-wide pace is reached, scan_history stops starting new fetches, answers partial, and lists the symbols it skipped under data.failed. An identical screen within 30 seconds is answered from cache.
Outputs
Every screen row carries the instrument’ssymbol as EXCHANGE:TICKER and one value per column. data.symbols lists the symbols in order, ready for scan_history, scan_ohlcv, the fundamentals tools or any market tool. data.total_count is the number of matches overall; data.fields gives each column’s meaning and type; data.conditions restates the screen as it ran. Values are as the market data source publishes them: real time for some venues, delayed by the exchange’s public delay (up to 15 minutes) for others.
Example
Prompt
scan_run with index: "nasdaq100" and an RSI filter, passes its symbols to scan_history with a breakout formula, then calls scan_financials with period: "FQ" for each match.
More prompts: