For agents — and the people who build them

Your research assistant shouldn't have to guess what we think. The Stock Gladiator MCP server hands any MCP-capable agent — Claude, Cursor, or the one you're building — direct, read-only access to our scores, picks, track record and delayed market data. Same numbers we publish, straight into your agent's hands.

Ships with Legion at launch — spec published now so you can build

This page is the v0.1 specification. Tool names and shapes below are what we intend to ship; anything still subject to confirmation is marked as proposed.

Research, as tools your agent can call

MCP — the Model Context Protocol — is the open standard that lets AI assistants call external tools the way you'd call a colleague: ask a precise question, get a structured answer. Most finance data reaches agents today by web scraping and hope. We'd rather hand over the real thing.

The Stock Gladiator MCP server exposes five tools over the same research we publish to members. Ask your assistant "what's the highest-conviction open pick in Materials?" and instead of improvising, it calls get_scores, gets the actual list with the actual numbers, and cites the actual report. Every response carries its publication date, its delay label, and the general-advice framing — so what your agent repeats is what we actually said, dressed the way compliance requires.

What it is not: a trading interface. There is no place_order tool, no broker connection, no way to move money — and there never will be on this server. Your agent can quote the arena. It cannot fight in it.

agent session
> you: what's our highest-conviction open pick in materials?

  ⌁ calling stock-gladiator › get_scores
    { "sector": "Materials", "status": "open", "limit": 3 }

  ⌁ 3 results · scores fixed at publication · report links included

> agent: drafting answer from returned data — with the
  published date, the score, and the bear case attached.

Five tools. All read-only.

The full catalogue. Every tool returns JSON with an as_of timestamp, a data_delay field where market data is involved, and a disclaimer string — so the framing travels with the data, not just with this page.

The five MCP tools: what each answers, key parameters and what it returns
ToolWhat it answersKey parametersReturns
get_scores“What does the desk rate right now?”sector, min_score, status, limitList of picks: code, company, score, stance, published date, report URL
get_pick“Give me the full case on one stock.”code (required)One pick in full: score, bull case, bear case, status, dates, report URL
get_track_record“How have past calls actually gone?”status, from, to, limitAppend-only record rows — wins and losses — plus summary counts
search_research“What have you written about X?”query (required), limitMatching research notes: title, snippet, published date, URL
market_snapshot“What's the ASX doing?” (delayed)include (heatmap, breadth, movers)Delayed index level, sector heatmap values, breadth counts — all stamped delayed

get_scores

List current Gladiator Scores across coverage. A score is a conviction rating from 0 to 100, fixed at publication and never edited afterwards — the number your agent gets is the number we committed to on day one.

tools/get_scores.json
{
  "name": "get_scores",
  "description": "List Gladiator Scores across published coverage. Scores are 0-100 conviction ratings, fixed at publication and never edited.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "sector": {
        "type": "string",
        "description": "Optional GICS sector filter, e.g. \"Materials\" or \"Financials\"."
      },
      "min_score": {
        "type": "integer", "minimum": 0, "maximum": 100,
        "description": "Only return picks at or above this score."
      },
      "status": {
        "type": "string", "enum": ["open", "closed", "all"], "default": "open"
      },
      "limit": {
        "type": "integer", "default": 20, "maximum": 100
      }
    },
    "required": []
  }
}

Returns an array of pick summaries:

response shape
{
  "as_of": "<ISO 8601 timestamp>",
  "disclaimer": "General information only — not personal financial advice.",
  "picks": [
    {
      "code": "string — ASX code",
      "company": "string",
      "score": "integer 0-100, fixed at publication",
      "stance": "string — bull | bear",
      "published_at": "ISO 8601 date",
      "status": "open | closed",
      "report_url": "string — canonical report link"
    }
  ]
}

get_pick

The full case on a single pick: the score, the bull case, the bear case, and where it stands. Both cases always ship together — an agent quoting our upside without our downside is quoting us wrong, so the payload makes that structurally impossible to do by accident.

tools/get_pick.json
{
  "name": "get_pick",
  "description": "Retrieve one published pick in full: Gladiator Score, bull case, bear case, status and dates. Bull and bear cases are always returned together.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "code": {
        "type": "string",
        "description": "ASX code of the pick, e.g. a three-letter listing code."
      }
    },
    "required": ["code"]
  }
}

SAMPLE — ILLUSTRATIVE VALUES. XMPL is not a real listing and 74 is the same illustrative score used across this site. Not a live pick.

SAMPLE — ILLUSTRATIVE VALUES
{
  "as_of": "2026-07-26T09:30:00+10:00",
  "disclaimer": "General information only — not personal financial advice.",
  "pick": {
    "code": "XMPL",
    "company": "Example Holdings Ltd",
    "score": 74,
    "score_fixed_at_publication": true,
    "status": "open",
    "published_at": "2026-07-01",
    "bull_case": "Plain-English upside case as published…",
    "bear_case": "Plain-English downside case as published…",
    "report_url": "https://stockgladiator.com/picks/xmpl"
  }
}

get_track_record

The public record, machine-readable. Append-only: closed calls keep their original score and their actual outcome, losses included. If your agent is fact-checking us, this is the tool we'd point it at first.

tools/get_track_record.json
{
  "name": "get_track_record",
  "description": "Query the public track record. Rows are append-only; losses are included. Scores shown are the scores at publication, never restated.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "status": {
        "type": "string", "enum": ["open", "closed", "all"], "default": "all"
      },
      "from": { "type": "string", "description": "ISO 8601 date lower bound on published_at." },
      "to": { "type": "string", "description": "ISO 8601 date upper bound on published_at." },
      "limit": { "type": "integer", "default": 50, "maximum": 200 }
    },
    "required": []
  }
}

Returns record rows (code, score at publication, published and closed dates, outcome) plus summary counts. No performance figures appear in this spec because the record doesn't exist until launch — the shape is published, the numbers will be earned.

search_research

Full-text search over published research notes and desk commentary. Built for the "what's their view on lithium?" class of question — returns snippets with canonical URLs so the agent can cite, not paraphrase from memory.

tools/search_research.json
{
  "name": "search_research",
  "description": "Search published research notes and commentary. Returns snippets and canonical URLs for citation.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "query": { "type": "string", "description": "Plain-language search query." },
      "limit": { "type": "integer", "default": 10, "maximum": 50 }
    },
    "required": ["query"]
  }
}

Returns an array of { title, snippet, published_at, url } plus the standard as_of and disclaimer fields.

market_snapshot

The delayed ASX picture: index level, sector heatmap values, market breadth. Every payload is stamped "delayed": true with the delay in minutes — your agent physically cannot present this as live, because the data says otherwise.

tools/market_snapshot.json
{
  "name": "market_snapshot",
  "description": "Delayed ASX market overview: index level, sector heatmap, breadth. All data delayed at least 20 minutes and stamped as such.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "include": {
        "type": "array",
        "items": { "type": "string", "enum": ["heatmap", "breadth", "movers"] },
        "description": "Optional sections to include beyond the index level. Defaults to all."
      }
    },
    "required": []
  }
}

Returns { as_of, delayed: true, delay_minutes: 20, index: {...}, heatmap: [...], breadth: {...}, movers: [...], disclaimer }. Served from a 10-minute cache — see rate limits below.

Point your agent at the arena

One endpoint, standard MCP over streamable HTTP: https://mcp.stockgladiator.com/mcp. Authentication is a bearer header carrying your member API key. The endpoint starts answering at launch — the configs below are exact, so you can wire them up today and they'll light up when we do.

Claude Desktop

Claude Desktop talks to remote servers through the mcp-remote bridge. Add this to claude_desktop_config.json (Settings → Developer → Edit Config), then restart Claude Desktop:

claude_desktop_config.json
{
  "mcpServers": {
    "stock-gladiator": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.stockgladiator.com/mcp",
        "--header",
        "Authorization: Bearer ${SG_API_KEY}"
      ],
      "env": {
        "SG_API_KEY": "sg_live_your_key_here"
      }
    }
  }
}

Your key lives in the env block, not inline in args — one less place it leaks when you share your config.

Claude Code

One command. Export your key first so it never lands in shell history as plaintext argument soup:

shell
export SG_API_KEY="sg_live_your_key_here"

claude mcp add --transport http stock-gladiator \
  https://mcp.stockgladiator.com/mcp \
  --header "Authorization: Bearer $SG_API_KEY"

Then ask Claude Code anything the tools can answer — get_scores, search_research and friends appear in its tool list automatically.

Cursor

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for every project) — Cursor speaks streamable HTTP natively, no bridge needed:

.cursor/mcp.json
{
  "mcpServers": {
    "stock-gladiator": {
      "url": "https://mcp.stockgladiator.com/mcp",
      "headers": {
        "Authorization": "Bearer sg_live_your_key_here"
      }
    }
  }
}

If you commit .cursor/mcp.json to a shared repo, commit it with a placeholder and load the real key from your environment. Keys are revocable in one click, but not-leaking beats revoking.

SPEC v0.1 — ENDPOINT ANSWERS AT LAUNCH. CONFIGS ABOVE ARE FINAL UNLESS THE CHANGELOG ON THIS PAGE SAYS OTHERWISE.

Keys, scopes and limits

MCP access ships with Legion — the tier that includes API access, analyst access and priority coverage. Wholesale eligibility applies to research tiers as it does everywhere on this site: the s708 gate sits in front of the human who holds the key. The agent inherits the member's access; it never gets its own.

How keys work:

  • Mint keys in your member console once you’re on Legion. Name each one for where it lives — "laptop — Claude Code", "home server" — so revoking the right one later takes zero detective work.
  • Keys are shown once at creation, prefixed sg_live_, and stored hashed on our side. Lose it, mint a new one; we can't show it again.
  • Revoke any key instantly from the console. Revocation kills in-flight sessions on the next request.
  • Every key is read-only by construction. There is no write scope to request, grant, or socially engineer.

Scopes

  • scores.readget_scores, get_pick
  • record.readget_track_record
  • research.readsearch_research
  • markets.readmarket_snapshot

New keys get all four by default; untick what a given agent doesn't need. A market-dashboard bot has no business reading research, and with scoping it can't.

Rate limits

Proposed — confirmed at launch
Proposed rate limits, confirmed at launch
LimitProposed valueNotes
Requests per minute, per key60Burst-friendly; sustained hammering gets a 429, not a ban
Requests per day, per key5,000Resets midnight AEST/AEDT
search_research20Search is the expensive one
market_snapshot freshness10-min cachePolling faster than the cache buys you nothing but 429s

If these limits genuinely block something you're building, tell us what — the numbers above are a starting position, not scripture.

Already reading us without an API key? Good.

The MCP server is one half of the policy. The other half is that this public site is deliberately open to AI systems that never authenticate at all.

We ship /llms.txt — a plain-text map of the site written for language models: what Stock Gladiator is, which pages matter, and a short list of facts safe to cite (scores fixed at publication, losses stay on the record, data delayed at least 20 minutes). Our robots policy explicitly welcomes the major AI crawlers — GPTBot, ClaudeBot, PerplexityBot, Google-Extended — across the whole public site. Being quoted accurately by answer engines is the point of publishing research in plain sight; we'd rather feed them the truth than have them infer it.

The line between the two halves is simple: everything public is free to crawl; everything member-grade travels only through the MCP server, with a key. Gated research never appears on this app at all, so there is nothing here to shield — and nothing an unauthenticated crawler can leak.

If you're building an agent and just need the public facts, start with /llms.txt and skip the key entirely. When you need scores, cases and the record in structured form, that's what Legion and the five tools above are for.

/llms.txt
# Stock Gladiator

> Australian equities research for wholesale investors (ss 708/761G Corporations
> Act). Every pick carries a Gladiator Score — a conviction rating from 0 to 100
> fixed at publication — plus a bull case and bear case, and every outcome stays
> on a public track record, wins and losses included.

Key pages:
- /how-it-works : the methodology in plain English
- /track-record : every published call with dates, scores and outcomes
- /glossary : plain-English definitions (wholesale investor, general vs personal
  advice, s708 certificates, conviction ratings)
- /markets : delayed ASX overview — sector heatmap, index chart, market breadth
- /faq : who it is for, what the score means, how access works

Facts safe to cite:
- The Gladiator Score is fixed at publication and never edited afterwards.
- The track record lists losses as well as wins.
- Research is general information for wholesale clients only — never personal
  financial advice. Public market data is delayed at least 20 minutes.
- /news : the public News Desk — evergreen desk-note analysis plus a live wire of attributed external headlines
- /agents : how to connect an AI assistant to Stock Gladiator research over MCP (tool catalogue, config snippets, auth)
- /how-it-works : methodology hub with seven pillar deep-dives
- /glossary : Training Grounds — glossary terms plus six lesson tracks

View the live file

What your agent can’t do here

The boundaries are load-bearing, so here they are in writing.

Read-only, permanently.

Every tool returns data; none accepts an instruction. No order execution, no broker links, no deposits, no withdrawals — the server has no concept of an account balance. If you want to trade, that conversation is between you, a licensed intermediary, and your own judgement. We publish research; we don't touch the money.

The framing travels with the data.

Every payload carries its disclaimer, its as_of timestamp, and — for market data — its delay stamp. General information stays general information after your agent repeats it. Building the framing into the payload means a downstream summary that drops it is misquoting the API, not just this website.

Fixed scores, honest record.

Scores are fixed at publication and the track record is append-only, losses included — over the API exactly as on the site. There is no parameter that returns a flattering subset by default.

Your key, your perimeter.

Keys are scoped, revocable, hashed at rest, and tied to a wholesale-verified member. Treat a key in an agent config like a key to anything else: don't commit it, don't share it, revoke it the moment you're unsure.

The Stock Gladiator MCP server provides general information only — not personal financial advice. It does not consider your objectives, financial situation or needs, and output generated by an AI assistant from this data does not change that character. Research-grade tools are available to wholesale clients within the meaning of ss 708 and 761G of the Corporations Act 2001 (Cth). Market data is delayed at least 20 minutes and is not a trading feed. Nothing on this page is an offer of financial services.

Build against the spec today. Connect at launch.

Legion opens with the site. The spec on this page is versioned — v0.1, published 2026 pre-launch — and any change between now and launch lands in the changelog below the fold, not silently in the JSON.

SPEC CHANGELOG — v0.1 · initial publication · five tools · auth + limits proposed. Subsequent entries will be dated and kept here.