Skip to main content

Notes, Playlists & Portfolios

These tools answer questions like:

  • "Save this thesis about TSMC for later"
  • "What did I write about semiconductor supply chains last month?"
  • "Add NVDA, ASML, and TSMC to my chip watchlist"
  • "How is my Tech portfolio performing?"
  • "What drove my portfolio's return in Q1?"

Tools at a glance​

ToolWhat it doesWrite?
write_noteSave a research note to your knowledge baseβœ… Write
query_notesRecall notes by semantic meaning or entityRead
get_noteRead the full body of a saved note by idRead
list_playlistsList your stock watchlist playlistsRead
create_playlistCreate a new playlistβœ… Write
add_to_playlistAdd tickers to a playlistβœ… Write
remove_from_playlistRemove tickers from a playlistβœ… Write
list_portfoliosList your portfoliosRead
portfolio_contextDeep portfolio analysis β€” returns, attribution, compositionRead

Everything here is owner-scoped β€” you only ever read and write your own data.


Notes​

write_note β€” Save to your knowledge base​

Saves a note that persists across conversations and is linked to the entities it's about β€” tickers, themes, GICS codes, portfolios. This is the tool that makes the AI a long-term research partner, not just a one-session assistant.

The note becomes retrievable later by entity or meaning: "show me my notes on TSMC" or "what did I write about foundry manufacturing?" both work.

When the AI saves a note:

  • After a substantive investment answer β€” a thesis, a dated market read, a sector explainer, a comparison table
  • When you explicitly say "save this" / "ΰΈˆΰΈ”ΰΉ„ΰΈ§ΰΉ‰"

What makes a good note:

  • Tables stay as tables (markdown | syntax) β€” not flattened into prose
  • Absolute column headers (FY2025, not Latest)
  • Entity links filled in: stocks, megatrend_ids, gics β€” these make the note findable by interest later

Key params:

ParamDescription
subjectShort title for the note
bodyFull content in Markdown β€” preserve tables and structure
summaryOne-sentence gist for scanning
note_typereference, tracking, thesis, or decision
tagsFree-text tags
stocksMarketDX ticker(s) this note is about
mentioned_stocksTickers only referenced in passing
megatrend_idsNode ids from find_megatrend β€” link a theme note to the graph
gicsGICS code(s) for a sector note
agentWhich app is writing: Claude, Claude Code, ChatGPT, etc.

query_notes β€” Recall notes by meaning or entity​

Searches your personal notes in two ways:

Semantic recall β€” q="what did I say about foundry manufacturing?" finds notes by meaning, cross-language.

Structured filters β€” narrow to a specific entity:

  • stock β€” notes about a ticker (use relation="direct" for notes about it vs merely referencing it)
  • theme β€” theme name β†’ resolved to megatrend node, subtree included
  • gics β€” GICS code
  • tag β€” a tag you used when saving
  • note_type β€” thesis, reference, tracking, decision
  • since β€” 30d or an ISO date

Returns note summaries with similarity scores β€” not the full body. Call get_note(id) to read the full content.


get_note β€” Read the full note​

Returns the complete body of a saved note by its id (from query_notes results). Owner-scoped β€” 404 if it's not your note.


Playlists​

A playlist is a curated list of tickers that drives your news feed. Follow themes, track competitors, or manage a personal watchlist.

list_playlists​

Lists all your playlists β€” id, name, emoji, item count, and items. Call this first whenever you want to add to or manage a specific playlist by name β€” match the name yourself, since the user might mis-spell it.

create_playlist​

Creates a new playlist. Don't auto-create from a possible typo β€” always call list_playlists first and only create when the name genuinely doesn't exist or the user confirms.

create_playlist(name="Chip Supply Chain", emoji="πŸ”¬")

add_to_playlist​

Adds tickers to a playlist. Always resolve names via find_stock first β€” the playlist stores MarketDX tickers.

add_to_playlist(
playlist_id=12,
tickers=["NVDA.US", "2330.TW", "ASML.NL"]
)

remove_from_playlist​

Removes one or more tickers from a playlist.


Portfolios​

list_portfolios​

Lists all your portfolios: id, name, base currency, account type, NAV, total return, unrealized PnL, and position count.

Call this first whenever someone says "my portfolio" without a number β€” show the names and let them pick.


portfolio_context β€” Deep portfolio analysis​

The most comprehensive portfolio tool. Returns a full LLM-ready snapshot of one portfolio for direct analysis.

Default view (no window):

  • meta β€” portfolio info
  • summary β€” key stats at a glance
  • lifetime block β€” all-time performance (return/CAGR/Sharpe/Sortino/drawdown) + attribution + positions + composition
  • recent block β€” same but for the last ~12 months

Windowed view (from_/to or window): Replaces lifetime+recent with one window block scoped to that period. This is how you answer period-specific questions: "how did the portfolio do in Q1?" or "compare H1 2025 vs H1 2026".

:::warning Period questions require re-calling with a window The default/lifetime/recent blocks do not contain an arbitrary period's performance. To answer "how did the portfolio do in Q1 2026?" you must call portfolio_context again with from_="2026-01-01" and to="2026-03-31". Never derive a specific period's return or attribution from the default view β€” those numbers aren't in it. :::

Key params:

ParamDescription
portfolio_idFrom list_portfolios
from_ / toISO date range to scope the analysis
windowShorthand: 7d, 30d, 90d, 180d, 1y, mtd, qtd, ytd
snapshotsComposition granularity: year, quarter, month, week, day, off

What the analysis covers:

  • attribution.contributors[] β€” per-holding PnL contribution + % of NAV change for the period; includes since-sold positions. Reconciles to nav_change to the cent.
  • composition β€” point-in-time holdings at each snapshot date
  • flags β€” auto-detected risk flags (concentration, drawdown, behavior patterns)
  • inferred_behavior β€” AI-inferred portfolio style/bias

:::info Cost portfolio_context costs 5 credits. :::


Routing guide​

You want to…Use
Save this analysis for laterwrite_note
"What did I write about TSMC?"query_notes(stock="TSMC")
"What did I write about foundry manufacturing?"query_notes(q="foundry manufacturing")
Add stocks to a watchlistlist_playlists β†’ add_to_playlist
See your portfolioslist_portfolios
"How is my portfolio doing?" (news pulse)portfolio_pulse (see Pulse)
"What drove my portfolio's return in Q1?"portfolio_context(from_=..., to=...)