Skip to content
FrontierPicks

Agents · open, no auth, no rate limits

Stock research data and API for AI agents.

Every research note, the journal, the macro read and the track record are published as structured JSON alongside the HTML — no key, no quota, no crawl budget to negotiate. This page is the index of those surfaces.

FrontierPicks is a fully static publisher: prerendered HTML, no client state, no auth, no rate limits. Every resource has a stable, canonical URL and ships with JSON-LD structured data. If you're building an agent that consumes equity research, this is your entry surface.

Discovery

  • /llms.txt — high-signal index for LLM context windows. Surfaces, themes, archetype taxonomy, full research-note list, recent journal entries.
  • /llms-full.txt — extended index with inline thesis + kill-line excerpts per research note, regime + body excerpts per journal entry.
  • /agent-tools.json — machine-readable manifest of surfaces, schemas, archetype taxonomy, and the full research-note + journal index.
  • /.well-known/webmcp.json — WebMCP capability manifest.
  • /.well-known/openapi.json — OpenAPI 3.1 pointer document for the resource URLs.
  • /.well-known/ai-plugin.json — ai-plugin manifest.
  • /feed.json · /rss.xml — JSON Feed v1.1 and RSS 2.0 streams: portfolio changes, weekly letters, journal entries and research changes, newest first.
  • /sitemap.xml — full sitemap.
  • /robots.txt — explicit allows for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, and 12+ others.

Content surfaces

  • GET /dossiers/ — list every research note (HTML + ItemList JSON-LD).
  • GET /dossiers/{TICKER}/ — one research note (HTML + Article JSON-LD).
  • GET /dossiers/{TICKER}.json — the same research note as machine-readable JSON. Optional fields: frame (the business, what is changing, what the price assumes, linked companies; null on a note written before it had one), caveats (standing caveats, each with its source and as-of date; an empty list when there are none) and filed_numbers (figures from its SEC filings with period and filing date, valuation at the last close, short interest, insiders' open-market trades in dollars; null when no filing is on file). On a held stock portfolio.spy_return_pct is null: it is filled when the position is sold.
  • GET /journal/ — dated index of regime-tagged entries.
  • GET /journal/{YYYY-MM-DD}/ — single entry (HTML + Article JSON-LD).
  • GET /journal/{YYYY-MM-DD}.json — same entry as machine-readable JSON.
  • GET /today.json — the daily change feed as exported: every result, SEC filing, rating change, kill line crossed, material change, new coverage, read-through from a linked company's results and insider purchase, over the last two weeks, one line each with its date. Dollar amounts only. A rating change is a move between two ratings on a stock the research covers; a first rating is not one, and a stock no longer covered is not counted. A move whose note stated no reason is listed and says so.
  • GET /measured.json — the tested patterns: each registered test on US stock prices with what was tested, the method, the result by period with its 90% range and its state (holds, rules out the belief or too little data to tell; a descriptive line is a measurement, not a test), then the studies registered before their results were seen (studies: each belief with its claimed size and source, its state, why it has not run, and its periods).
  • GET /now.json — the live market snapshot as JSON: the regime call (VIX, breadth, SPY vs its 200-day EMA), the momentum top movers, and what changed. Non-monetary.
  • GET /macro.json — the macro regime dashboard as JSON: the regime call, VIX, breadth (share + counts), SPY's close (the S&P 500's measure, priced at about a tenth of the index level) and its distance to its 200-day EMA. Non-monetary.
  • GET /hot.json — the live momentum board as JSON: the strongest US stocks by a momentum score (1-month price trend 50%, 3-month trend 20% and acceleration 30%), with sector and research coverage.
  • GET /latest.json — the change feed as JSON: every new or refreshed research note, conviction change, portfolio purchase and sale, journal entry, market regime change and momentum entrant over the last 30 days.
  • GET /calendar.json — the catalyst calendar as JSON: every dated event in our research notes, grouped by date into the next seven days, the week after and later, plus recently passed.
  • GET /themes/motion.json — the theme status board as JSON: accelerating / maturing / saturated themes with the names in each.
  • GET /portfolio/ — the portfolio in percent and dates: the portfolio against the S&P 500 since its first day; each holding's entry date and its return, alone and against the same money in the S&P 500 from the minute it was bought; each holding's written case, the dated fact it was bought on and its exit conditions; every buy, add, trim and sale with its date and its reason; the share of the portfolio invested, rounded to the nearest 5%; every sold stock's result against the S&P 500 over the days it was held, and the reason it was sold; Claude's weekly portfolio letter (HTML + Dataset JSON-LD). Never sizes or weights.
  • GET /macro/ — the macro view, rewritten every trading day.
  • GET /sector-rotation/ — the sector flow read, recomputed every trading day.
  • GET /methodology/ — the full method: schedule, conviction, grading, archetypes, regimes.
  • GET /glossary/ — DefinedTermSet (archetypes, regimes, conviction, and the research and portfolio vocabulary).

The portfolio, machine-readable

The portfolio's owner review and the weekly theme radar, each as JSON beside its page, with the same data as the page and no sizes, prices, weights or raw returns:

  • GET /gates.json — the owner review, the one rule registered before the first trade, and its live status.
  • GET /radar.json — this week's triggered clusters (leader, members, breadth, volume_ratio). Theme research, not positions.

Explanation & authority surfaces

How the system works and what its terms mean — citable, with structured data:

  • GET /how-it-works/ — how the research notes are made and how Claude runs the portfolio, in five steps (TechArticle).
  • GET /anatomy/ — a live research note dissected, part by part (TechArticle).
  • GET /regimes/ — macro-regime taxonomy (DefinedTermSet): each regime and the fixed rule that sets it.
  • GET /archetypes/ — the seven archetypes (DefinedTermSet).
  • GET /trust/ — how every call can be checked (TechArticle).
  • GET /state/ — what the research covers right now: how many stocks, the conviction mix, themes, the current market regime.
  • GET /track-record/ — the track record: every stock the portfolio has bought: the ones held with their return so far, and the ones sold graded against the S&P 500 over the days they were held. Machine-readable at /track-record.json.

Field names are stable. The reader-facing label for the pre-registered kill condition is “kill line”; the machine key stays invalidation_trigger in every JSON surface and schema.

Structured data

Every page carries JSON-LD nodes for Organization, WebSite, and WebPage (or Article), plus BreadcrumbList where applicable. Dossier and journal pages add a full Article node with datePublished / dateModified, headline, description, keywords, and publisher. The index page exposes ItemList.

Integration examples

Fetch a single research note:

curl https://frontierpicks.com/dossiers/QBTS.json | jq .

List all research notes with conviction + archetype + themes:

curl https://frontierpicks.com/agent-tools.json | jq '.dossiers'

Poll the merged feed for new journal entries + research notes:

curl https://frontierpicks.com/feed.json | jq '.items[] | {date: .date_published, url, title}'

Give an agent the whole site as context:

// Drop /llms-full.txt into your system prompt for context.
const ctx = await fetch("https://frontierpicks.com/llms-full.txt").then(r => r.text());

Use from an LLM tool definition (OpenAI / Anthropic function-calling):

{
  "name": "get_frontierpicks_dossier",
  "description": "Fetch a FrontierPicks research note for a US-listed ticker.",
  "parameters": {
    
    "type": "object",
    "properties": {
      "ticker": { "type": "string", "pattern":"^[A-Z]{1,5}([.-][A-Z]{1,2})?$" }
    },
    "required": ["ticker"]
  }
}
// fetch with: `https://frontierpicks.com/dossiers/${ticker}.json`

Citation guidance

Each resource is canonical at its own URL — please link the specific page when citing (e.g. https://frontierpicks.com/dossiers/{TICKER}/) rather than the homepage. article:published_time and article:modified_time meta are present on stock and journal pages. Author / publisher is FrontierPicks.

What's published

Every thesis with its kill line, the stocks the portfolio holds and the ones the research is watching, the regime and macro calls, and the portfolio's record against the S&P 500, all machine-readable through the surfaces above.