finance_search
Search financial data
Search financial data and return an answer with an inline widget.
Covers stocks, macro, forex, crypto, commodities, earnings, technicals,
and related market questions. Pass the user's question in `query` without
rephrasing.
To screen a named watchlist or portfolio, call list_watchlists or
list_portfolios first, then pass the symbols here with filter criteria in
`query`.
Exclusive modes when a Deep Dive exists:
focus=ai + section=… → narrative section
focus=raw + source=… → thin data slice
focus=catalog → list available Deep Dives
Args:
query: The user's financial question
symbols: Optional ticker universe to screen (e.g. from list_watchlists)
section: Optional Deep Dive section (competition, valuation, thesis,
forecast, analyst_consensus, people, financials, earnings,
technicals, overview, moves, markets, flow, calendar, catalysts, odds)
or raw tapes: options, buzz, acceleration, heatmap.
Thesis is section=thesis and opens /stock/T/thesis.
Business is section=competition (/stock/T/competition).
Price is /stock/T/overview; Large Moves on that tab are section=moves.
Forecast narrative is section=forecast (/stock/T/analysis).
Street targets and stance are section=analyst_consensus (/stock/T/valuation).
Dividends, buybacks, and the alignment / allocation boxes are
section=financials. There is no Capital section.
Buzz, social media, reddit, twitter, sentiment, or what people are
talking about MUST be section=buzz. Do not send those to news or
catalysts. Consumer sentiment and analyst sentiment are not Buzz.
Stocks accelerating, price acceleration, speeding up, or speeding
down MUST be section=acceleration. Do not send those to movers.
Revenue, earnings, and growth acceleration are not this board.
輸入參數focusquery必填sourcesectionsymbols
earnings_rag
Search earnings call evidence
Retrieve what was said on earnings calls, plus the print and the price move.
Use this for one season across several names, or this season versus a
prior season. Pass tickers you already have, or a sector label such as
Financials or Technology. Banks, insurers, and brokers are Financials.
Do not invent symbols.
finance_search still answers when a company reports, the Earnings Deep
Dive, and a request for the full transcript.
Args:
question: What to look for in the calls, such as credit costs or guidance.
tickers: Symbols to search. Optional when sector is set.
sector: SIC sector stored on the chunks, such as Financials or Technology.
conference_from: Season start, YYYY-MM-DD, with conference_to.
conference_to: Season end, YYYY-MM-DD.
compare_from: Prior season start, with compare_to.
compare_to: Prior season end.
fiscal_year: Fiscal year, with fiscal_quarter, instead of dates.
fiscal_quarter: Fiscal quarter 1-4.
compare_fiscal_year: Prior fiscal year, with compare_fiscal_quarter.
compare_fiscal_quarter: Prior fiscal quarter 1-4.
last_n_quarters: Recent calls per ticker, 1-8. Not used with compare.
chunks_per_ticker: Excerpts per call, 1-5. Default 3.
輸入參數sectortickersquestion必填compare_tofiscal_yearcompare_fromconference_tofiscal_quarterconference_fromlast_n_quarterschunks_per_tickercompare_fiscal_year另有 1 個
list_watchlists
List watchlists
List the authenticated user's watchlists and their symbols.
Args:
offset: Skip this many lists (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffset
create_watchlist
Create watchlist
Create a watchlist with the given name and ticker symbols.
Args:
name: Watchlist name
symbols: List of stock symbols (e.g. ["AAPL", "MSFT"])
輸入參數name必填symbols必填
update_watchlist
Update watchlist
Update a watchlist's name and/or symbols.
Args:
watchlist_id: The watchlist UUID
name: New name (optional)
symbols: Updated list of symbols (optional)
輸入參數namesymbolswatchlist_id必填
list_screeners
List screeners
List the authenticated user's saved screeners (filter queries + schedule).
Args:
offset: Skip this many screeners (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffset
create_screener
Create screener
Save a screener filter query for scheduled enter/exit (joiner/leaver) notifies.
Same rows as Terminal Save on /screener. Pass last_symbols (current matches)
or call run_screener after create to seed the baseline; later runs notify
names that enter or leave when Settings Screener in & out is on.
Args:
name: Screener name (blank → derived from filters)
query: Filter blob {universe, fmp, metrics, ai, member?, view?}
schedule: "off", "daily", or "weekly" (weekly requires Pro)
notify_on_change: Notify on enter/exit after the first seed (default true)
last_symbols: Current result tickers to seed the enter/exit baseline
輸入參數namequeryschedulelast_symbolsnotify_on_change
update_screener
Update screener
Update a saved screener's name, query, schedule, or baseline symbols.
Args:
screener_id: The screener UUID from list_screeners
name: New name (optional)
query: Updated filter blob (optional)
schedule: "off", "daily", or "weekly" (optional; weekly requires Pro)
notify_on_change: Toggle enter/exit notifies (optional)
last_symbols: Refresh enter/exit baseline from the live table (optional)
輸入參數namequeryschedulescreener_id必填last_symbolsnotify_on_change
delete_screener
Delete screener
Delete a saved screener by ID.
Args:
screener_id: The screener UUID from list_screeners
輸入參數screener_id必填
Re-run a saved screener; persist last_symbols; return entered/exited.
First seed does not notify. Later runs notify joiners and leavers when
Settings Screener in & out is on. Same path as Terminal Run now.
Args:
screener_id: The screener UUID from list_screeners
輸入參數screener_id必填
list_strategies
List strategies
List the authenticated user's agent-rail strategies (id, name, active, color).
Does not include full markdown — use get_strategy for the live playbook text,
settings, and links. Strategy writes require the Terminal browser or agent.
無需輸入參數。
Read one strategy's current or historical generation (markdown, settings, links).
Args:
strategy_id: Strategy UUID from list_strategies
generation: Optional GCS generation for an older save (from list_strategy_versions)
輸入參數generationstrategy_id必填
list_strategy_versions
List strategy versions
List saved generations for a strategy (newest first, with version notes).
Args:
strategy_id: Strategy UUID from list_strategies
輸入參數strategy_id必填
list_portfolios
List portfolios
List the authenticated user's portfolios.
Args:
offset: Skip this many portfolios (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffset
create_portfolio
Create portfolio
Create a portfolio with a name and base currency.
Args:
name: Portfolio name
currency: Base currency (default USD)
輸入參數name必填currency
add_transaction
Add portfolio transaction
Add a buy, sell, deposit, withdrawal, dividend, short, or cover to a portfolio.
Attach an investment case with library_item_id. That is the document id.
search_library returns it as item_id. list_library_items returns it as id.
Pass the id, not the title. The accept card and the transaction row show
the case. Leave library_item_id empty when there is no case.
A buy, sell, short, or cover is a portfolio order. Call get_portfolio_rules
first and size it to those rules. filled means the book took it. pending
means the card is open: do not ask again and do not send a second order.
A refused error is a portfolio rule. Do not shrink the order. Dividend,
deposit, and withdrawal still record a transaction immediately.
order_type market ignores price and uses the live price. With HIL on, or
the order above Skip HIL up to, the card opens at that live price. HIL
off, or under the skip, fills. A past date records that day's average.
A future date is refused. order_type limit requires price. The card opens
before the limit rests when HIL requires it. Accept arms it. The card
does not open again when the price hits. A past date records the price
after that day's range check.
expires_kind is gtc (90 days), day, or delete_after. delete_after needs
expires_at. after_hours lets a stock or ETF print in the extended session.
on_touch review wakes you when the limit hits so you can look and then
submit. on_touch direct applies the book rules then, with no second look.
A hard limit still refuses. HIL still opens the card for a resting limit.
A short names the stock. qty is the shares sold short. price is the sale
price per share. A cover names the stock. qty is the shares bought back.
price is the price per share. Neither uses $CASH. A short while long, a
cover larger than the short, a sell larger than the long, and a buy while
short come back as the terminal's 400. Do not rewrite
輸入參數qty必填date必填side必填pricesymbol必填on_touchexpires_atorder_typeafter_hourslimit_priceexpires_kindportfolio_id必填另有 1 個
edit_order
Edit portfolio order
Change an open portfolio order. Use this before cancel_order.
Attach or replace the investment case with library_item_id. That is the
document id. search_library returns it as item_id. list_library_items
returns it as id. Pass the id, not the title. An empty library_item_id
removes the case. The accept card and the book show it.
qty, price, expires_kind (day, gtc, or delete_after), expires_at,
after_hours, and library_item_id. Send only the fields that change.
Rules still apply. HIL on,
or an order above Skip HIL up to, opens the accept card again. A day
order needs an open session. A good till that lasts past the next open
can stay open while the session is closed.
Args:
portfolio_id: The portfolio UUID
order_id: The order UUID
qty: New share count
price: New price, or the new limit
expires_kind: day, gtc (90 days), or delete_after
expires_at: Required with delete_after. Naive times are New York.
after_hours: Extended session for a stock or ETF
library_item_id: The investment case. The document id from search_library
(item_id) or list_library_items (id). Not the title. An empty string removes the case.
輸入參數qtypriceorder_id必填expires_atafter_hoursexpires_kindportfolio_id必填library_item_id
cancel_order
Cancel portfolio order
Cancel an open portfolio order. No fill is written.
Args:
portfolio_id: The portfolio UUID
order_id: The order UUID
輸入參數order_id必填portfolio_id必填
get_positions
Get portfolio positions
Get current holdings with quantity, cost basis, market value, and unrealized P&L.
A short has negative shares, a positive avg_cost, a negative total_cost_book
(the open credit), and a negative market value. Unrealized profit is positive.
Cash includes short proceeds and is reduced when the short owes a dividend.
Open cost of a long is already net of dividends still held. Realized P&L
from closed longs and shorts is on get_portfolio_statistics.
Args:
portfolio_id: The portfolio UUID
輸入參數portfolio_id必填
get_portfolio_rules
Get portfolio rules
Read the order limits for a portfolio.
Call this before add_transaction on a buy, sell, short, or cover.
The rules say which assets are allowed and how large an order may be.
This tool cannot change the rules.
Args:
portfolio_id: The portfolio UUID
輸入參數portfolio_id必填
get_portfolio_statistics
Get portfolio statistics
Get portfolio performance statistics (returns, allocation, risk).
gross_exposure and net_exposure are in book currency. A weight may be
negative. dividend_income is cash by stock and can be negative when a
short owes the dividend. total_gain is unrealized_pnl + realized_pnl.
Do not add dividend_income on top of total_gain.
Args:
portfolio_id: The portfolio UUID
輸入參數portfolio_id必填
List price, event, and clock alerts for the authenticated user.
Args:
offset: Skip this many alerts (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffset
Create a price alert, an event alert, or a clock.
Calling this stores the alert. A clock may omit the ticker.
Args:
symbol: Stock symbol (e.g. "AAPL"). Required for price and event alerts. Optional for a clock.
alert_type: "target_price", "movement_pct", "event", or "schedule"
direction: Required for price alerts — "above", "below", or "either"
threshold: Required for price alerts — price level or percentage move
notes: Optional description. Not the agent instruction.
event_types: Required when alert_type is "event". Live-tape ids such as
filing_13f, politician_senate, options_unusual, ipo_upcoming.
event_filters: Optional slices. Example: {"politician_senate": {"type": ["purchase"]}}.
An omitted field matches every value.
name: Optional title. Blank is filled from the rule.
agent_instruction: What the agent does when this fires. Empty means notify only.
max_fires: How many fires before it leaves Active. Omit to keep a repeating alert firing.
schedule_at: ISO time. Required when alert_type is "schedule".
schedule_tz: IANA zone. UTC when omitted.
schedule_repeat: once, daily, weekdays, weekly, or monthly. Default once.
輸入參數namenotessymboldirectionmax_firesthresholdalert_typeevent_typesschedule_atschedule_tzevent_filtersschedule_repeat另有 1 個
get_notifications
Get notifications
Get alert notifications. Unread only, unless history is set.
Args:
offset: Skip this many rows (default 0)
limit: Page size (default 50, max 100). Unread upstream cap is 50.
history: When true, return fired alerts including ones already read, newest first.
輸入參數limitoffsethistory
delete_alert
Delete price alert
Delete an alert by ID.
Args:
alert_id: The alert UUID
輸入參數alert_id必填
list_library_folders
List library folders
List folders in the authenticated user's research library.
Args:
offset: Skip this many folders (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffset
create_library_folder
Create library folder
Create a library folder, optionally nested under a parent.
Args:
name: Folder name
parent_id: Parent folder UUID (optional — omit for a root folder)
輸入參數name必填parent_id
rename_library_folder
Rename library folder
Rename a library folder.
Args:
folder_id: The folder UUID
name: New folder name
輸入參數name必填folder_id必填
move_library_folder
Move library folder
Move a library folder under a different parent (or to root).
Args:
folder_id: The folder UUID to move
parent_id: New parent folder UUID (omit / null for library root)
輸入參數folder_id必填parent_id
delete_library_folder
Delete library folder
Delete a library folder and everything inside it.
Args:
folder_id: The folder UUID
輸入參數folder_id必填
list_library_items
List library items
List documents in a library folder, or at the root if no folder is given.
Args:
folder_id: Folder UUID to list (optional — omit for root-level items)
offset: Skip this many items (default 0)
limit: Page size (default 50, max 100)
輸入參數limitoffsetfolder_id
get_library_item
Get library item
Get a library document's metadata and content.
Content is markdown, raw HTML (content_type text/html), or a signed URL for PDFs.
Args:
item_id: The item UUID
輸入參數item_id必填
create_library_item
Create library item
Create a markdown or HTML document in the research library.
Args:
title: Document title
content: Markdown body, or raw HTML when content_type is text/html
folder_id: Folder UUID (optional — omit for library root)
content_type: text/markdown (default) or text/html. HTML is stored as source.
輸入參數title必填content必填folder_idcontent_type
update_library_item
Update library item (versioned)
Update a library document's title and/or content (content edits create a new version).
Content is markdown, or raw HTML when the document is already text/html.
The document type does not change.
Args:
item_id: The item UUID
title: New title (optional)
content: New markdown or HTML source (optional)
輸入參數titlecontentitem_id必填
move_library_item
Move library item
Move a library document into a different folder (or to root).
Args:
item_id: The item UUID to move
folder_id: Destination folder UUID (omit / null for library root)
輸入參數item_id必填folder_id
delete_library_item
Delete library item
Delete a library document and all of its stored versions.
Args:
item_id: The item UUID
輸入參數item_id必填
list_library_item_versions
List library item versions
List version history for a library document (newest first).
Args:
item_id: The item UUID
輸入參數item_id必填
search_library
Search research library
Full-text search across the authenticated user's library documents.
Args:
query: Search terms
limit: Max results (default 20, capped at 50)
輸入參數limitquery必填
list_journal
List journal entries
List generated daily research journal entries (most recent first).
Entries appear only after the automatic end-of-day journal generation run.
Drafts from submit_journal_draft are not listed until that run completes.
Args:
offset: Skip this many entries (default 0)
limit: Page size (default 50, max 100). Upstream returns at most 90 days.
輸入參數limitoffset
get_journal_entry
Get journal entry
Get a full generated journal entry by ID from list_journal.
Draft ids from submit_journal_draft are not readable until end-of-day
generation; use list_journal after the daily run for valid entry ids
(integer or legacy UUID).
Args:
entry_id: Journal entry id from list_journal (integer or UUID)
輸入參數entry_id必填
submit_journal_draft
Submit journal draft
Submit a journal draft for a day. Same-day resubmissions are retained as separate drafts.
The draft is accepted immediately but the readable daily journal entry is
generated automatically at end of day; it then appears in list_journal.
The returned draft id is not a list_journal / get_journal_entry id until then.
Args:
entry_date: Day the draft is for (YYYY-MM-DD)
content: Draft text
輸入參數content必填entry_date必填
run_deepdive
Run DeepDive analysis
Queue a full DeepDive suite for a stock using a monthly custom-run grant.
Prepaid search credits cannot pay for this. Free plans have 0 runs;
Basic has 10/month; Pro has 50/month. Re-running a ticker already
unlocked this month does not consume another grant. The call returns
as soon as the job is queued — do not poll.
Args:
ticker: Stock symbol (e.g. "AAPL")
force: Re-queue every chapter even when a current report exists.
Use when on-file content is the wrong instrument (e.g. ZS
Thesis written as soybeans).
輸入參數forceticker必填
Log a bug in the same inbox as the terminal bug button (5 per user per day).
Use only when the user asks, or when you have confirmed a real data/UI
error. Do not file speculative bugs. Pass ticker/section so admins get a
terminal URL; page_url is optional if it is already a terminal.manawa.app link.
Args:
description: What is wrong (10–2000 characters)
ticker: Optional stock symbol the bug is about
section: Optional tab (overview, financials, thesis, valuation, …)
page_url: Optional full terminal URL if already known
輸入參數tickersectionpage_urldescription必填
marketing_inbox
Marketing inbox
Admin only. Latest teasers plus already-generated images.
Use ticker for all current items on a symbol, type for one content_type
across symbols, or since for the worker poll. Then call
marketing_graphics(content_id) for live formats. Reuse items[].images[]
when the option you want is already rendered.
Args:
since: ISO timestamptz — inbox newer than this
ticker: Current items for this symbol
type: allowlisted content_type or research_drop
limit: 1–200 (default 50)
輸入參數typelimitsinceticker
marketing_graphics
Marketing graphics
Admin only. Live formats for one inbox item, or the catalog.
For a bot, pass content_id from marketing_inbox. Empty options means skip
the item. Already-rendered images are included so you can reuse a cache hit.
Args:
content_id: gc:{id} or rd:{uuid} — live formats for that item
section: Catalog filter (no content_id)
language: Catalog filter
format: Catalog filter
status: live or draft (catalog only)
輸入參數formatstatussectionlanguagecontent_id
marketing_render
Marketing render
Admin only. Render one live format and wait until image.url exists.
Blocks until GCS has the PNG (or a cache hit). Do not poll. Draft
formats return option_not_live.
Args:
content_id: gc:{id} or rd:{uuid}
option_id: live option from marketing_graphics
force: Bypass render cache
輸入參數forceoption_id必填content_id必填