TickerGuard
Buy Day today: Good (67) Broad market participation · no major macro event

Beta - free

Data API for developers

Our own signals and verdicts as JSON: typed responses, fixed schemas, plus an MCP server for AI agents.

What comes out of here

We watch stocks with our own scanners and our own editorial desk. This interface hands out what that produces: our findings — not the raw data they rest on.

Five areas

  • Early-warning signals — four scanners report upcoming catalysts, reported insider buying, unusual trading activity and our own exit warnings. Every signal carries our assessment and, once the observation window has closed, the measured outcome as a percentage.
  • Conference call verdicts — we read the public transcripts of the last two to three years and record what management promised against what it delivered. The Q&A counts for more than the prepared statement.
  • Superinvestors — the Form 13F filings with the SEC, loaded by us, plus our own five-year reconstruction of the reported portfolio against the S&P 500.
  • Congressional trades — the securities transactions of the US Congress from their STOCK Act disclosures, with the official amount range, trade date and disclosure date.
  • Hype radar — which symbols currently stand out in retail investor forums. Attention is explicitly not an assessment.

AI-native

Every response is typed and carries the same envelope. Field names and enum values are English and identical on both brands, the ordering is deterministic — an agent learns the schema once, not twice. The same data is also available as an MCP server: tools/list describes every tool including its allowed values, its ordering and the limits of the answer, so a model can work with it without further explanation.

Three steps

  1. 1 Request a key — the form at the end of this page returns it right away.
  2. 2 Send the key as a header: X-Api-Key: YOUR_KEY or Authorization: Bearer YOUR_KEY.
  3. 3 Call GET /api/v1/status. A 200 means everything is in place.

The envelope of every response

Successful responses carry data and meta. meta always states how old the answer is (as_of), where it comes from (source), which brand answered (brand) and where these docs live (docs). Paginated lists add page, per_page and total.

{
    "data": [],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers"
    }
}

Endpoints

All data endpoints are GET and live under /api/v1. The paths are the same on both brands; only the text content in the responses is localised.

Without an entry a list returns 25 records per page; a larger limit is capped at 100 rather than rejected. meta.total says how much lies behind it.

GET /api/v1/status

Self-description of your access: plan, requests so far, quota. The first place to look when setting up — a 200 means key and header are right.

Parameters

none

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/status"

Example response

{
    "data": {
        "plan": "beta",
        "email_masked": "d****@example.com",
        "requests_total": 128,
        "rate_limit_per_minute": 60,
        "created_at": "2026-07-29T08:14:02+00:00"
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers"
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/signals

The newest early-warning signals from all four scanners, newest first. pattern narrows the list to one scanner, since to signals from a given day onwards.

Parameters

  • pattern catalyst | insider | volume | exit
  • since YYYY-MM-DD
  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/signals?pattern=catalyst&limit=1"

Example response

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "pattern": "catalyst",
            "signal_date": "2026-07-28",
            "title": "Earnings on 12 Aug - first report after the acquisition",
            "recommendation": "Watch ahead of the date, do not buy",
            "assessment": "The catalyst is dated and expectations are low; leverage remains the sticking point.",
            "outcome": {
                "max_gain_pct": 18.4,
                "max_drawdown_pct": -6.1,
                "finalized_at": null
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 47
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/signals/{ticker}

Every signal we have recorded for one symbol, newest first. A symbol we do not hold answers with a 404 — a statement about our coverage, not about the company.

Parameters

  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/signals/EXMPL"

Example response

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "pattern": "catalyst",
            "signal_date": "2026-07-28",
            "title": "Earnings on 12 Aug - first report after the acquisition",
            "recommendation": "Watch ahead of the date, do not buy",
            "assessment": "The catalyst is dated and expectations are low; leverage remains the sticking point.",
            "outcome": {
                "max_gain_pct": 18.4,
                "max_drawdown_pct": -6.1,
                "finalized_at": null
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 25,
        "total": 3
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/call-ratings

Our verdicts on the earnings calls, ordered by symbol. rating narrows the list to one level.

Parameters

  • rating positive | neutral | flagged
  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/call-ratings?rating=flagged&limit=1"

Example response

{
    "data": [
        {
            "ticker": "EXMPL",
            "company_name": "Example Industries Inc.",
            "rating": "flagged",
            "label": "Promise and delivery diverge",
            "as_of": "2026-07-22"
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 61
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/call-ratings/{ticker}

The verdict for one symbol. A company whose calls we have not evaluated carries no verdict and answers with a 404 — not with a neutral one.

Parameters

none

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/call-ratings/EXMPL"

Example response

{
    "data": {
        "ticker": "EXMPL",
        "company_name": "Example Industries Inc.",
        "rating": "flagged",
        "label": "Promise and delivery diverge",
        "as_of": "2026-07-22"
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers"
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/superinvestors

The investors we follow through their quarterly filings, with our five-year calculation against the S&P 500. Largest lead first.

Parameters

  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/superinvestors?limit=1"

Example response

{
    "data": [
        {
            "slug": "example-investor",
            "name": "Example Investor",
            "fund_name": "Example Capital Management",
            "latest_period": "2026-03-31",
            "portfolio_value": 18420000000,
            "positions_count": 42,
            "perf_5y": {
                "portfolio": 91.4,
                "spx": 74.8,
                "diff": 16.6
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 15
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/superinvestors/{slug}

One investor's reported positions for a single quarter, largest first, each with the change against the previous quarter. period selects an earlier quarter; a 13F is always a snapshot, never a live portfolio.

Parameters

  • period YYYY-MM-DD
  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/superinvestors/example-investor?period=2026-03-31&limit=1"

Example response

{
    "data": {
        "slug": "example-investor",
        "name": "Example Investor",
        "fund_name": "Example Capital Management",
        "latest_period": "2026-03-31",
        "portfolio_value": 18420000000,
        "positions_count": 42,
        "perf_5y": {
            "portfolio": 91.4,
            "spx": 74.8,
            "diff": 16.6
        },
        "period": "2026-03-31",
        "holdings": [
            {
                "ticker": "EXMPL",
                "company_name": "Example Industries Inc.",
                "put_call": null,
                "value_usd": 2140000000,
                "shares": 9800000,
                "pct_portfolio": 11.62,
                "share_change": 1200000,
                "is_new": false,
                "rank": 1
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 42
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/politicians

The curated representatives and senators with our buy-side result against the index. Deliberately curated rather than complete.

Parameters

  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/politicians?limit=1"

Example response

{
    "data": [
        {
            "slug": "example-politician",
            "name": "Example Representative",
            "chamber": "house",
            "party": "independent",
            "state": "XX",
            "buy_performance": {
                "perf_pct": 23.9,
                "spx_pct": 14.2,
                "diff_pct": 9.7,
                "hit_rate": 61.5,
                "rated": 26,
                "total": 31,
                "as_of": "2026-07-30"
            }
        }
    ],
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 11
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/politicians/{slug}

One person's disclosed transactions, newest first — with the side, the official amount range, the trade date and the disclosure date.

Parameters

  • limit integer, 1–100
  • page integer, ≥ 1

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/politicians/example-politician?limit=1"

Example response

{
    "data": {
        "slug": "example-politician",
        "name": "Example Representative",
        "chamber": "house",
        "party": "independent",
        "state": "XX",
        "buy_performance": {
            "perf_pct": 23.9,
            "spx_pct": 14.2,
            "diff_pct": 9.7,
            "hit_rate": 61.5,
            "rated": 26,
            "total": 31,
            "as_of": "2026-07-30"
        },
        "trades": [
            {
                "ticker": "EXMPL",
                "asset_name": "Example Industries Inc.",
                "side": "buy",
                "amount_label": "$15,001 - $50,000",
                "traded_at": "2026-06-18",
                "disclosed_at": "2026-07-11",
                "performance": {
                    "change_pct": 12.4,
                    "spx_change_pct": 3.1
                }
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "page": 1,
        "per_page": 1,
        "total": 31
    }
}

Shortened. The field names are real, the values are made up.

GET /api/v1/hype

Two rankings in one response: our own Reddit scanner and, where this instance carries them, the wallstreet-online lists. This endpoint does not paginate — limit caps both lists.

Parameters

  • limit integer, 1–100

Example request

curl -H "X-Api-Key: $API_KEY" \
  "https://tickerguard.com/api/v1/hype?limit=1"

Example response

{
    "data": {
        "reddit": [
            {
                "ticker": "EXMPL",
                "name": "Example Industries Inc.",
                "mentions": 214,
                "first_seen_at": "2026-07-29T21:04:11+00:00"
            }
        ],
        "wo": [
            {
                "name": "Example Industries",
                "ticker": "EXMPL",
                "source": "discussed",
                "score": 7,
                "first_seen_at": "2026-07-30T05:02:39+00:00"
            }
        ]
    },
    "meta": {
        "as_of": "2026-07-30T06:12:44+00:00",
        "source": "own-analysis",
        "brand": "minnowstreet",
        "docs": "https://tickerguard.com/developers",
        "limit": 1,
        "reddit_total": 38,
        "wo_total": 20,
        "wo_available": true
    }
}

Shortened. The field names are real, the values are made up.

POST /api/v1/mcp

The MCP server: JSON-RPC 2.0 over HTTP, the only POST in the interface. It fetches its data through the same controllers as the GET endpoints and therefore returns exactly the same thing by construction.

Parameters

none

Example request

curl -X POST "https://tickerguard.com/api/v1/mcp" \
  -H "X-Api-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_signals","arguments":{"pattern":"catalyst","limit":1}}}'

Example response

{
    "jsonrpc": "2.0",
    "id": 1,
    "result": {
        "isError": false,
        "structuredContent": {
            "data": [
                {
                    "ticker": "EXMPL",
                    "company_name": "Example Industries Inc.",
                    "pattern": "catalyst",
                    "signal_date": "2026-07-28",
                    "title": "Earnings on 12 Aug - first report after the acquisition",
                    "recommendation": "Watch ahead of the date, do not buy",
                    "assessment": "The catalyst is dated and expectations are low; leverage remains the sticking point.",
                    "outcome": {
                        "max_gain_pct": 18.4,
                        "max_drawdown_pct": -6.1,
                        "finalized_at": null
                    }
                }
            ],
            "meta": {
                "as_of": "2026-07-30T06:12:44+00:00",
                "source": "own-analysis",
                "brand": "minnowstreet",
                "docs": "https://tickerguard.com/developers",
                "page": 1,
                "per_page": 1,
                "total": 47
            }
        }
    }
}

Shortened. The field names are real, the values are made up.

Errors

Errors carry an error object with code and message instead of data. The HTTP status says the same thing again.

{
    "error": {
        "code": "invalid_parameter",
        "message": "Unknown value for \"pattern\". Allowed: catalyst, insider, volume, exit."
    }
}
  • 401 Key missing, unknown or revoked. All three cases answer identically on purpose.
  • 404 We hold nothing for this symbol or identifier — or the path you asked for does not exist.
  • 405 The path exists, but not with this HTTP method. The right one is in the Allow header.
  • 422 A parameter carries a value that does not exist, or a list where a single value belongs.
  • 429 Quota exhausted: 60 requests per minute and key.
  • 500 Something went wrong on our side. Your request was fine; a second attempt is worth it.

Setting up the MCP server

The server speaks streamable HTTP and needs no installation. The key travels in the X-Api-Key header.

Claude Desktop and Cursor

Add it to the client configuration file — claude_desktop_config.json or ~/.cursor/mcp.json — and restart the client.

{
    "mcpServers": {
        "tickerguard": {
            "type": "http",
            "url": "https://tickerguard.com/api/v1/mcp",
            "headers": {
                "X-Api-Key": "bl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
            }
        }
    }
}

Claude Code

One command in the terminal is enough.

claude mcp add --transport http tickerguard https://tickerguard.com/api/v1/mcp \
  --header "X-Api-Key: $API_KEY"

Tools

The server reports these tools. Their descriptions come with tools/list — in English, like the field names.

  • get_signals
  • get_signal
  • get_call_ratings
  • get_call_rating
  • get_superinvestors
  • get_superinvestor_holdings
  • get_politicians
  • get_politician_trades
  • get_hype

Beta, quota and licence

  • The beta is free.
  • 60 requests per minute and key. Above that the interface answers with a 429 rather than throttling.
  • What is delivered is exclusively our own analysis and data we loaded ourselves from official sources — SEC filings and STOCK Act disclosures. Raw market prices from third-party vendors are not included; that is why there are percentages here, but no prices.
  • If you publish the data, please name TickerGuard as the source. It is not mandatory, but it is appreciated.
  • Paid plans with more volume are planned but not live yet. If you need them, tick the box below — we will get in touch before anything changes.

Request a key

An email address is enough. The key appears on this page right away — exactly once.

We store the address only to tie it to your access and to inform you about changes.

Was this page helpful to you?