_ registry / mcp http-sse · checked 2h ago

alphanume

https://mcp.alphanume.com

Registry code: cc4982cb98c9eb79

api record

Alphanume quant datasets (https://alphanume.com) -- point-in-time,

survivorship-aware datasets for US equities and options research, one tool per dataset.

endpoint
https://mcp.alphanume.com/key/mcp
protocol
http-sse ·2025-06-18
authentication
bearer
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is alphanume live?
Yes — it answered the hub's last check (checked 2h ago). It answered 99% of checks over the last 30 days.
Is alphanume free to use?
Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
What tools does alphanume have?
32 tools: get_de_spac_events, get_iv_hv_premium, get_iv_rank, get_vol_of_vol, get_earnings_move_history, get_corporate_default_events, get_next_day_movers, get_reverse_splits, ….
Is alphanume safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.1%

90 days 99.3%· all time 99.3%

latency
309ms

last good check

priced tools
0

of 32 tools

_ answered our checks, 90 days 582 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • screen options volatility premium
  • get iv rank for a stock
  • track dilution and shelf filings
  • get reverse split calendar
  • get earnings move history
takes → gives
text → data
tools
25 reads
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 32 tools
32 auth-required 32 of 32 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_de_spac_events reads auth-required 11h ago

    De-SPAC lifecycle: one row per SPAC business combination tracked from the definitive-agreement announcement through registration, definitive proxy, shareholder vote, exchange listing and completion (or termination / trust liquidation). Every row carries the SPAC's own symbol (prior_ticker), the combined company's symbol as soon as a filing names it (new_ticker -- the definitive proxy does so in most deals, weeks before the close), warrant ticker, exchange, SPAC / target / new company names, and the dated milestones: announced_date, meeting_date, record_date, vote_approved_date, listing_filed_date, expected_close_date and expected_trading_date (each with a *_basis column saying whether the date was stated in a filing or derived), closing_date, trading_commencement_date, terminated_date, plus next_event_date / next_event_type for what comes next. Completed rows also carry the closing financials (redemption shares and dollars, trust remaining, PIPE, gross proceeds, pro forma shares, enterprise and equity value), a confidence score and the supporting evidence quote. `date` is the SEC filing date of the filing that set the row's current status (for completed deals: the closing 8-K). `ticker` is the symbol trading for the deal today (new_ticker once listing is pending, otherwise prior_ticker). Fields are null where no filing supported them; quality_flags lists any rule that altered or withheld a value. Use status=pending&upcoming=true to see de-SPACs before the new symbol trades, ticker=<SPAC symbol> to follow one deal, view=history to replay what was known on a given date, or status=completed with a date range for the classic redemption-rate event study. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "view": {
          "anyOf": [
            {
              "enum": [
                "latest",
                "history"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'latest' (default): one row per deal with its current status. 'history': the append-only status log, one row per transition (deal_id, status, date = filing date, created_at = when the pipeline first recorded it) for point-in-time replays."
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Comma-separated deal statuses to return: announced, registration_filed, registration_effective, vote_scheduled, approved, listing_pending, completed, terminated, liquidated; or the shorthands 'all' (default) and 'pending' (every non-terminal status). Unknown values return a 400 listing the valid ones."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Symbol filter matched against BOTH the SPAC's own symbol (prior_ticker) and the post-combination symbol (new_ticker), so either side of the rename works."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "upcoming": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only pending deals with a future milestone (next_event_date >= today); 'false' = everything else. Omit for both."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this timestamp (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS); for incremental syncs."
        },
        "next_event_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD: only deals whose next milestone (meeting, expected close or expected first trade) is on or before this date."
        }
      },
      "additionalProperties": false
    }
    arguments 147 lines
  • get_iv_hv_premium reads auth-required 27h ago

    Volatility risk premium screener: answers "are this name's options rich or cheap right now?" For every liquid US optionable equity, per trading day: ~30-day at-the-money implied volatility (iv) vs ~30-day realized volatility (hv), their spread (iv-hv) and ratio (iv/hv), plus daily cross-sectional percentile ranks and z-scores for each measure, option notional volume, and the ATM strike/expiry/spot used. Rows update intraday (is_final=0) and settle after the close (is_final=1). Use it to find overpriced premium to sell (high iv_hv_ratio / min_ratio_rank near 1), underpriced options to buy, or to track one ticker's premium history via `ticker`. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "only_final": {
          "type": "boolean",
          "default": false,
          "description": "If true, return only settled end-of-day rows (is_final=1). By default the latest value is returned, which intraday may be provisional."
        },
        "min_ratio_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose iv/hv ratio sits at or above this cross-sectional percentile for the day, in [0, 1]. 0.95 = the day's richest 5%."
        },
        "max_iv_hv_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_hv_ratio <= this value (e.g. 0.9 to screen for cheap options)."
        },
        "min_iv_hv_ratio": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_hv_ratio >= this value (e.g. 1.5 for names whose options price 50%+ over realized vol)."
        }
      },
      "additionalProperties": false
    }
    arguments 124 lines
  • get_iv_rank reads auth-required 27h ago

    IV Rank & IV Percentile (52-week): answers "is this name's volatility high or low *for itself*?" For each US optionable equity, per trading day: where current ~30-day implied vol and 20-day realized vol sit inside that name's own trailing-year range -- iv_rank/hv_rank (0-100 position between the 52w low and high), iv_percentile / hv_percentile (share of the past year's days below today), the 52w high/low/median levels themselves, and daily cross-sectional ranks/z-scores for context. Rows update intraday and settle after the close (is_final=1). The classic premium-selling timing filter: min_iv_rank=50 finds names in the upper half of their own vol range regardless of absolute vol level. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "only_final": {
          "type": "boolean",
          "default": false,
          "description": "If true, return only settled end-of-day rows (is_final=1). By default the latest value is returned, which intraday may be provisional."
        },
        "max_hv_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with hv_rank <= this value, range [0, 100]."
        },
        "max_iv_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_rank <= this value, range [0, 100]."
        },
        "min_hv_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with hv_rank >= this value, range [0, 100]."
        },
        "min_iv_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_rank >= this value, range [0, 100]."
        },
        "min_iv_percentile": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_percentile >= this value, range [0, 100]."
        }
      },
      "additionalProperties": false
    }
    arguments 148 lines
  • get_vol_of_vol reads auth-required 15h ago

    Vol-of-Vol Index: answers "how unstable is this name's volatility itself?" For each US optionable equity, per trading day: the coefficient of variation of its ~30-day implied vol (iv_vov) and 20-day realized vol (hv_vov) over the trailing month (std/mean of the last 21 observations), the underlying trailing mean and std, and a daily cross-sectional ranking of the most vol-unstable names. Rows update intraday and settle after the close (is_final=1). High vol-of-vol names are where vega risk is most treacherous (and where vol dislocations appear); low vol-of-vol names have sticky, well-behaved vol surfaces. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "max_hv_vov": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with hv_vov <= this value."
        },
        "max_iv_vov": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_vov <= this value."
        },
        "min_hv_vov": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with hv_vov >= this value (>= 0)."
        },
        "min_iv_vov": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with iv_vov >= this value (>= 0)."
        },
        "only_final": {
          "type": "boolean",
          "default": false,
          "description": "If true, return only settled end-of-day rows (is_final=1). By default the latest value is returned, which intraday may be provisional."
        },
        "min_hv_vov_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose realized vol-of-vol sits at or above this cross-sectional percentile for the day, in [0, 1]."
        },
        "min_iv_vov_rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose implied vol-of-vol sits at or above this cross-sectional percentile for the day, in [0, 1]."
        }
      },
      "additionalProperties": false
    }
    arguments 160 lines
  • get_earnings_move_history reads auth-required never probed

    Earnings move track record: answers "does the options market systematically over- or under-price this name's earnings moves?" One row per earnings event per ticker: the pre-earnings ATM straddle price and implied move (% and $), ATM IV, the realized post-earnings return and absolute move, the over/under-pricing gap and move ratio, an `overpriced` flag, EPS estimate vs actual, plus running per-ticker history stats (events to date, hit rate of straddle overpricing, average implied vs realized move to date). Use it before an earnings trade: query `ticker` to see whether selling or buying the earnings straddle has historically paid on that name, or screen a `date` to review how yesterday's reporters resolved. `date` is the earnings date. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 83 lines
  • get_corporate_default_events reads auth-required 18h ago

    Corporate default events labeled from SEC filings: answers "which public companies just defaulted on an obligation, and on what terms?" One row per default event: ticker, event date, source filing URL, plus enriched fields extracted from the filing text -- event type, the obligation's name and type, creditor name, principal outstanding, amount accelerated, missed payment amount, stated default date, grace period end, whether acceleration was declared, and a confidence score with the supporting evidence quote. Fields are null where the filing text did not explicitly support them. Use it for distressed screening, credit event studies, or monitoring a date range for fresh defaults. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_next_day_movers auth-required never probed

    Next-Day Movers: each trading day, the US equities a volatility model ranks most likely to make an outsized price move in the *next* session. Rows carry the ticker, the list date, and -- once the next session has traded -- the realized outcome (`return` = signed next-day return, `absolute_move` = unsigned magnitude), so the dataset doubles as its own scorecard. Use it to focus long-gamma / straddle / breakout attention on a short daily list, or to backtest the signal against realized moves over a date range. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_reverse_splits reads auth-required 24h ago

    Reverse-split calendar: every US reverse stock split, executed and UPCOMING, with pre-split price, market-cap tier, and dilution/shelf cross-links. One row per (ticker, execution date), sourced daily from Polygon's reference splits feed. Because the feed carries future execution dates, upcoming=true is a genuine forward calendar (~40 scheduled splits at any moment); ~70-100 reverse splits execute per month, almost all sub-$1 microcaps curing a listing deficiency. first_seen_at records when the pull first observed the row (an announcement proxy; for rows backfilled before launch it is set to the execution date itself and is synthetic). Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees full history and the forward calendar. Research context, stated plainly: in the Alphanume anomaly sweep (2022-2026, matched-control event study), reverse-split names underperform controls by roughly -6%/-12%/-18%/-40% over the 21/63/126/252 sessions after execution (~60% of events negative; Kim-Klein-Rosenfeld 2008 found the same). That makes this a screening/avoidance signal -- e.g. exclude fresh reverse-splitters from long screens, or use the calendar to anticipate the event. It is NOT a tradeable short card: borrow on these names is scarce and expensive and is not modeled anywhere, the calendar-time short portfolio was statistically inconclusive net of costs, and the long-horizon numbers are survivor-conditioned (only ~47% of events still have a full price history 252 sessions out). No CAR columns are served; the feed is the product. Enrichment semantics. sub_dollar_flag marks names whose unadjusted close the session before the split was under $1 (the raw price is an internal input and is not served). market_cap_before / market_cap_tier are populated from 2024-01-02 (NULL earlier -- the cap history starts there). ratio = split_to/split_from (<1 = reverse; a 1-for-10 is 0.1); is_deficiency_candidate flags ratio <= 0.5, separating real consolidations from ADR-fee-style near-1.0 adjustments, which are served raw. dilution_link_flag/shelf_link_flag mark an S-1 or S-3/F-3 filing by the same ticker in the trailing 365 days (dilution links meaningful from 2026, shelf links from 2025 -- the linked datasets' own history floors). Upcoming rows carry NULL sub_dollar_flag until execution; OTC names outside the coverage universe may keep it NULL along with cap fields. Open-end mutual fund share adjustments are excluded at ingest; ETFs and closed-end funds are included. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date and cursor_ticker back to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "cap_tier": {
          "anyOf": [
            {
              "enum": [
                "nano",
                "micro",
                "small",
                "mid_plus"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Market-cap tier as of the session before the split (from the Alphanume cap history; populated from 2024-01-02)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "upcoming": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only splits with an execution date today or later (the forward calendar); 'false' = only already-executed splits. Omit for both."
        },
        "ratio_gte": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with ratio >= this value, range (0, 1]. ratio = split_to/split_from, so 0.1 is a 1-for-10."
        },
        "ratio_lte": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with ratio <= this value, range (0, 1]. ratio_lte=0.1 keeps 1-for-10 and larger consolidations."
        },
        "sub_dollar": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only names whose unadjusted close before the split was under $1 (the classic deficiency-cure cohort); 'false' = $1 and above."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_ticker' value from the previous response's next_cursor. Must be sent together with cursor_date."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs."
        },
        "deficiency_only": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only listing-deficiency-sized splits (ratio <= 0.5, i.e. 1-for-2 or larger). Filters out ADR-fee-style near-1.0 adjustments."
        }
      },
      "additionalProperties": false
    }
    arguments 197 lines
  • get_lockup_expirations reads auth-required 25h ago

    Lock-up expiration calendar: when insider and pre-offering shares become eligible for sale after a US IPO or follow-on offering, past and UPCOMING, with the size of the locked block versus the offering float. One row per lock-up tranche per offering, sourced from the final prospectus (SEC Form 424B4 / 424B1) filed the day after pricing. `date` (also served as expiration_date) = the lock-up anchor (normally the prospectus date) plus the lock-up length in calendar days; shares_sellable_from is the first NYSE session on or after it. A plain 180-day lock-up is one row (tranche_seq 1 of 1); a staggered release is several rows sharing accession_no with tranche_pct. lockup_type separates operating-company IPOs (typically 180 days) from follow-on offerings by already-public issuers (typically 60-90 days). Blank-check (SPAC) IPOs are excluded. History from 2021. Sizing: locked_shares is the prospectus-stated locked count where given, otherwise shares outstanding after the offering minus shares offered. float_shares_at_offering = shares sold in the offering (plus the over-allotment when its exercise is stated); locked_to_float_ratio = locked / float, so 3.0 means three times the offering float unlocks on `date`. locked_pct_of_outstanding is the same block as a share of total shares outstanding. Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees full history and the forward calendar. Honest limits, stated plainly. Early-release clauses are common in recent IPOs (a release tied to the first earnings announcement, a price-based release, or staged tranches); the row carries early_release_type and the verbatim early_release_terms, but v1 does not compute the earlier date -- treat `date` as the contractual outside date when early_release_type is not 'none'. The over-allotment exercise is unknown at prospectus time, so the float can be understated by up to 15%. ticker may be NULL for a few days on a brand-new IPO; first_trade_date is IPO-only (NULL on follow-ons); market_cap_at_offering is NULL until the cap history covers the ticker; rows are never dropped for missing enrichment. confidence (0-1) is a per-row quality signal for the extracted terms; 0.9 means every term was resolved by the deterministic parser. first_seen_at is when our pull first observed the prospectus (synthetic = filing time for rows backfilled before launch). Default order: upcoming expirations first, nearest to today first, then already-expired rows most recent first -- so the first page is the calendar of what happens next. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_ticker and cursor_id back to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "status": {
          "anyOf": [
            {
              "enum": [
                "upcoming",
                "expired"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Row status as of the last nightly sweep (ET)."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "upcoming": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only lock-ups expiring today or later (the forward calendar); 'false' = only already-expired lock-ups. Omit for both."
        },
        "cursor_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_id' value from the previous response's next_cursor."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_ticker and cursor_id."
        },
        "lockup_type": {
          "anyOf": [
            {
              "enum": [
                "ipo",
                "follow_on"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'ipo' = operating-company initial public offerings (typically 180-day lock-ups); 'follow_on' = offerings by already-public issuers (typically 60-90 days)."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_ticker' value from the previous response's next_cursor (may be an empty string)."
        },
        "early_release": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only lock-ups with an early-release clause (earnings-, price-based or staggered); 'false' = plain fixed-period lock-ups only."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs."
        },
        "min_confidence": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with extraction confidence >= this value (0-1). Regex-resolved rows carry 0.9; LLM-assisted rows carry the model's own estimate."
        },
        "min_locked_to_float": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose locked block is at least this multiple of the shares sold in the offering (e.g. 2 = locked shares >= 2x the offering float)."
        }
      },
      "additionalProperties": false
    }
    arguments 211 lines
  • get_spinoffs auth-required 24h ago

    Spin-off calendar: US spin-offs registered on Form 10 since 2015 -- the new company's ticker, the parent's ticker before and after, the distribution ratio, record and distribution dates, and the first regular-way trading day of the new shares, each key value stamped with the time it first became public on EDGAR. Built for the spin-off pair trade (e.g. long the parent, short the spun-off company) and for point-in-time backtests. One row per spin-off; spin_id is the spun-off company's SEC CIK. `date` filters apply to first_trade_date. first_trade_date is the first REGULAR-WAY session of the new shares. first_trade_basis says how firm it is: 'stated' (a filing gives the date), 'estimated' (the session after the distribution date -- about a third of spin-offs instead start trading ON the distribution date), 'confirmed' (the first daily bar actually printed). first_trade_confirmed_at is the UTC time the live pipeline first saw it trade (NULL for history loaded before launch). ratio = new shares per ONE parent share as the filing states it (0.5 = one for every two; before any reverse split the parent does at the spin). when_issued_date and child_wi_symbol / parent_wi_symbol describe the when-issued lines (lowercase 'w' symbols such as MSGRw), which trade thinly in the days before regular-way. parent_listing says whether parent_ticker is a US line verified to trade before the spin ('us_listed'), or why there is none: 'foreign_only' (see parent_home_ticker, e.g. a Tel Aviv or Johannesburg listing), 'not_listed' (e.g. a non-traded REIT). Point-in-time: registered_at (Form 10 first public), child_ticker_first_seen_at, ratio_first_seen_at and trade_date_first_seen_at are EDGAR acceptance times (UTC) of the first filing that stated the value now served. A press release can lead EDGAR by a few days. Confidential draft filings are never used. Scope and limits: spin-offs registered on Form 10 / Form 20-F only (about 97% of spin-offs that created a new ticker since 2016); split-offs and separations registered on S-1/S-4 (e.g. tracking-stock reorganizations) are not covered. About 1 spin-off in 7 has no trading date until it trades. Default order: the forward calendar first (registered / scheduled, nearest expected first trade first), then everything else, most recent first trade first. Requires an Alphanume Pro API key. There is no date clamp on this route.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Comma-separated statuses: registered (Form 10 public, no trade date yet), scheduled (a first trade date is stated or estimated), completed (the new shares traded regular-way), withdrawn, inactive (no trade 10+ days past the expected date, or no filing for 18 months); or the shorthands 'all' (default) and 'upcoming' (registered + scheduled)."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Symbol matched against the spun-off company (child_ticker), the parent before the spin (parent_ticker) and the parent after it (parent_ticker_after), so any side works."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs."
        }
      },
      "additionalProperties": false
    }
    arguments 107 lines
  • get_private_placements reads auth-required 24h ago

    PIPE / private-placement deal feed: US-listed issuers raising money through unregistered placements (PIPEs, registered directs with warrants, convertible notes and preferreds, equity lines / ELOCs, SEPA pre-paid advances), each deal graded 0-3 for how toxic -- how price-dependent and dilutive -- its terms are. One row per 8-K private-placement deal event: an announcement (the securities purchase agreement is signed and disclosed), a closing (funds received), an amendment or price reset, or a termination; event_kind says which. announce_date is the 8-K filing date and is the feed's clock; event_date and closing_date are the dates the filing states. A deal announced and later closed is two rows sharing ticker and cik under different accession_no values. Deal economics served per row: gross_proceeds_usd (or committed_capacity_usd for an equity line), shares_sold, price_per_share_usd, discount_to_prior_close_pct, price_basis (fixed / variable_discount_to_market / lesser_of / unstated) with the variable discount, lookback window and floor, reset_provision, warrant_coverage_pct with exercise price and term, has_prefunded_warrants, original_issue_discount_pct, the stated investors / investor type / placement agent / exemption, the resale registration deadline and (once filed) the resale S-1 / S-3 form and dates, and market_cap_at_announce_usd with proceeds_pct_of_market_cap. toxicity_score, the 0-3 scale, derived from the stated terms: 3 = variable-price conversion (priced off a discount to future VWAP / lowest close, or the lesser of a fixed price and market) or a VWAP-priced equity line -- dilution grows as the price falls; 2 = a ratchet / price-reset provision, or >= 100% warrant coverage at >= 15% discount to the prior close, or original issue discount >= 10%; 1 = any common warrants, or a >= 10% discount, or any OID, or an equity line without a stated pricing formula; 0 = fixed price at or above market with at most pre-funded warrants; NULL = the terms live in an exhibit v1 did not read. The grade summarizes structure, not the issuer's prospects: a 0 can still be a large raise by a struggling company, which is what proceeds_pct_of_market_cap is there to show. Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees the full history. Honest limits, stated plainly. v1 reads the 8-K body, not its exhibits, so a deal whose economics live only in the attached purchase agreement carries price_basis='unstated', terms_in_exhibit_flag=1 and a NULL toxicity_score -- filter min_toxicity to keep only graded rows, or read terms_in_exhibit_flag before treating a NULL as benign. Investor names are frequently undisclosed ("certain institutional investors"); investor_names_stated is what the filing says, nothing more. discount_to_prior_close_pct needs a Polygon daily bar for the prior session and is NULL for unlisted or brand-new tickers and for variable-priced deals. market_cap_at_announce_usd and proceeds_pct_of_market_cap are NULL when the cap history does not cover the ticker; resale_* columns are NULL until a resale registration is filed / effective. SPAC-related placements (a PIPE into a de-SPAC, trust-extension financing) are flagged with is_spac_related=1, not removed. Rows are never dropped for missing enrichment. confidence (0-1) is a per-row quality signal for the extracted terms. first_seen_at is when our pull first observed the 8-K (synthetic = filing time for rows backfilled before launch). Default order: newest announce_date first, then ticker, so the first page is the most recent deals. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_ticker and cursor_id back to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "spac": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only SPAC-related placements (PIPE into a de-SPAC, trust-extension financing); 'false' = operating-company deals only. Omit for both."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_id' value from the previous response's next_cursor."
        },
        "structure": {
          "anyOf": [
            {
              "enum": [
                "common",
                "units_with_warrants",
                "convertible_note",
                "convertible_preferred",
                "equity_line",
                "sepa_prepaid_advance",
                "other"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Deal structure: 'common' = registered-direct-style common stock; 'units_with_warrants' = common (or pre-funded warrants) sold with common warrants; 'convertible_note' / 'convertible_preferred' = convertible instruments; 'equity_line' = an at-the-issuer's-option purchase facility (ELOC); 'sepa_prepaid_advance' = a standby equity purchase agreement with a pre-paid advance; 'other'."
        },
        "event_kind": {
          "anyOf": [
            {
              "enum": [
                "announcement",
                "closing",
                "amendment_or_reset",
                "termination",
                "unstated"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which deal event the 8-K discloses: 'announcement' (purchase agreement signed), 'closing' (funds received), 'amendment_or_reset' (terms changed or conversion / exercise price reset), 'termination', or 'unstated'."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_ticker and cursor_id."
        },
        "has_warrants": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only deals with common-warrant coverage > 0%; 'false' = deals with no (or zero) common warrants. Pre-funded warrants do not count as coverage."
        },
        "min_toxicity": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with toxicity_score >= this value (integer 0-3). Rows with a NULL score (terms in an unread exhibit) are excluded whenever this is set."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_ticker' value from the previous response's next_cursor (may be an empty string)."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs."
        },
        "min_confidence": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with extraction confidence >= this value (0-1), the model's own estimate of how faithfully the served terms reflect the filing."
        },
        "variable_price": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'true' = only deals priced off a discount to future market price (variable_discount_to_market or lesser_of); 'false' = fixed-price deals only. Omit for both."
        }
      },
      "additionalProperties": false
    }
    arguments 231 lines
  • get_buybacks reads auth-required never probed

    Buyback announcements: US-listed companies telling the market they will (or may) repurchase their own common stock, read from 8-K filings and their press releases. One row per 8-K that announces something NEW; event_type says what: a new repurchase authorization, an increase / extension / renewal (including a raised buyback target), an accelerated share repurchase, an issuer tender offer, a Rule 10b5-1 repurchase plan, or a program being completed, terminated or suspended. event_date is the announcement date the filing states (falling back to the 8-K period of report, then the filing date); filed_at is when the 8-K reached EDGAR and is the point-in-time clock. Served per row: ticker, cik, company_name, accession_no, a one-sentence event_description, authorized_amount_usd (for an increase: the increment when the filing states one, the new total when it states only that), authorized_shares for share-denominated programs, pct_of_market_cap (announced dollars over the market cap on the last session before the filing, in percent), expiry_date, replaces_prior_program (1 replaces / 0 in addition / NULL silent), remaining_prior_amount_usd (capacity the filing says was left under the prior or existing program), confidence and last_updated. Only first announcements are served. A later filing that restates an announcement already in the feed (the earnings release two weeks after the 8-K, an 8-K/A) and mentions of actions more than 45 days old are withheld, so a company's $50B authorization appears once, not every time it is repeated. Rows the labeler scored under 0.75 confidence are not served. Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees the full history. Honest limits, stated plainly. These are ANNOUNCEMENTS: an authorization is permission, not a commitment, and how much was actually repurchased is not in this dataset. authorized_amount_usd is NULL when the size is stated only in shares or not at all -- 10b5-1 plans and completions usually state none. pct_of_market_cap is NULL without a dollar size or market-cap history and is suppressed above 100. One event per filing: when an 8-K announces an authorization and a 10b5-1 plan under it, the authorization is the row. Not covered: issuer tender offers filed only on Schedule TO-I, foreign private issuers (6-K), and non-traded REIT / fund redemption plans (deliberately excluded -- those are investor liquidity, not buybacks). A small share of real announcements buried in long earnings releases is missed. History starts 2024-01-01. Default order: newest event_date first, then ticker, so the first page is the most recent announcements. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_ticker and cursor_id back to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_id": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_id' value from the previous response's next_cursor."
        },
        "event_type": {
          "anyOf": [
            {
              "enum": [
                "new_authorization",
                "increase_or_extension",
                "accelerated_share_repurchase",
                "tender_offer",
                "10b5_1_plan",
                "completion_or_termination"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which action the 8-K announces: 'new_authorization' (board authorizes a new repurchase program); 'increase_or_extension' (an existing program is enlarged, extended or renewed, or the company raises its stated buyback target); 'accelerated_share_repurchase' (an ASR agreement); 'tender_offer' (issuer tender offer / Dutch auction announced or results reported); '10b5_1_plan' (a Rule 10b5-1 repurchase plan adopted under an existing authorization); 'completion_or_termination' (a program completed, terminated or suspended)."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_ticker and cursor_id."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_ticker' value from the previous response's next_cursor (may be an empty string)."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows updated at or after this date/datetime (YYYY-MM-DD or YYYY-MM-DD HH:MM:SS) -- for incremental syncs."
        },
        "min_amount_usd": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with authorized_amount_usd >= this many dollars (e.g. 1000000000 for $1B). Share-denominated and unsized rows are excluded whenever this is set."
        },
        "min_confidence": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with extraction confidence >= this value (0-1). Rows under 0.75 are never served, so values below that have no effect."
        },
        "min_pct_of_market_cap": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows where the announced dollar size is at least this percent of the issuer's market cap (0-100). Rows with no ratio are excluded whenever this is set."
        }
      },
      "additionalProperties": false
    }
    arguments 187 lines
  • get_momentum_index reads auth-required 25h ago

    Quant Galore Momentum Index constituents: the daily holdings of a rules-based 12-1 momentum strategy (long the highest-momentum US names, refreshed on a fixed schedule). One row per constituent per day: date, ticker, and rank (1 = strongest). History is point-in-time -- each day shows exactly what the index held then, so backtests are free of look-ahead. Use it to mirror the index, source high-momentum candidates, or study momentum portfolio turnover. Query a single `date` for that day's basket, or a range to see how the basket evolved. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_spx_0dte_strike_band reads auth-required 20h ago

    SPX 0-DTE strike band: for each trading day, a model-derived intraday range (lower_strike, upper_strike) that same-day S&P 500 index options are expected to stay within, plus the instrument it applies to. One row per day. Use it to structure 0-DTE trades -- e.g. sell iron condors with short strikes at or beyond the band, or fade band breaches -- and to backtest how often the band held over a date range. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_sp500_risk_regime reads auth-required 22h ago

    S&P 500 risk regime: a daily binary classification of whether the US equity tape is in a risk-on or risk-off state. One row per trading day: date and risk_regime label. Deliberately minimal -- it is designed to be the overlay/kill-switch input to other strategies (e.g. only run momentum or premium-selling in the favorable regime), not a dataset you mine on its own. Query the latest date for the current regime, or a range to backtest a regime-filtered strategy. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_dividend_capture reads auth-required 2h ago

    Dividend-capture calendar and scorecard: answers "which ex-dividend events are coming up, and how has capturing this name's dividend actually worked?" One row per ex-dividend event: the full schedule (declaration/record/pay dates, cash amount, frequency, type, annualized dividend, capture yield), the ex-day price action (cum-day close, ex open/close, price drop and drop ratio at open and close, net capture %), and the recovery record (breakeven price, recovery status/date, days to recover, recovered-within 1/3/5/10/20-day flags). A drop ratio well below 1 means the stock historically falls less than the dividend -- the raw material of a capture strategy. Set upcoming=true for the forward ex-div calendar (default 7 days out, up to 120 via future_days); use `ticker` for one name's full capture history. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "upcoming": {
          "type": "boolean",
          "default": false,
          "description": "If true, return only the FORWARD calendar: ex-dividend dates after today, out to future_days ahead. Overrides date range filters."
        },
        "future_days": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Forward horizon in calendar days for the upcoming calendar (default 7, max 120)."
        },
        "recovery_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Filter by the recovery_status label of the ex-div event (values as returned in the data, e.g. whether the price has recovered to breakeven yet)."
        }
      },
      "additionalProperties": false
    }
    arguments 112 lines
  • list_market_cap_tickers auth-required 11h ago

    Coverage map for the historical market cap dataset: every available ticker with its first available date. Use it to check whether (and since when) a name is covered before querying get_historical_market_cap, or to enumerate the full point-in-time universe. No parameters besides the row cap.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "max_rows": {
          "type": "integer",
          "default": 0,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 11 lines
  • get_wikipedia_views reads auth-required 13h ago

    Wikipedia attention tracker: daily page views of each covered company's Wikipedia article, with a 30-day rolling average and a relative 30-day z-score. Retail and media attention shows up in Wikipedia lookups before (and during) big price moves -- a z-score spike means the name is suddenly being researched far more than its own baseline. One row per ticker per day: ticker, company name, date, raw views, avg_30d, zscore_30d. Screen zscore_30d_gte=3 over recent dates for fresh attention spikes, or pull one `ticker`'s history to line attention up against price. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and ticker back as cursor_date and cursor_ticker to fetch the next page. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'ticker' value from the previous response's next_cursor. Must be sent together with cursor_date."
        },
        "zscore_30d_eq": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact 30-day z-score match. Cannot be combined with the z-score range parameters."
        },
        "zscore_30d_gt": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with 30-day z-score > this value."
        },
        "zscore_30d_lt": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with 30-day z-score < this value."
        },
        "zscore_30d_gte": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with 30-day z-score >= this value. zscore_30d_gte=3 finds extreme attention spikes."
        },
        "zscore_30d_lte": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with 30-day z-score <= this value."
        }
      },
      "additionalProperties": false
    }
    arguments 167 lines
  • get_shelf_registrations auth-required 22h ago

    Shelf registrations: every S-3/F-3 shelf registration statement, amendment and automatic (WKSI) shelf, normalized into a point-in-time capacity ledger -- the upstream signal behind every dilution screener. One row per filing: ticker, cik, company name, form, shelf_type (new|amendment|automatic), capacity_amount in USD (NULL means an indeterminate/automatic shelf -- never a guessed number), securities covered, WKSI flag, is_resale (selling-stockholder registrations), EFFECT date, days_to_effective, a 3-year expiry estimate, 424B5 takedown count, and market cap / shares outstanding at filing. Authorization is not issuance: capacity_amount is what the shelf REGISTERS, not what was sold. Screen date_gte over recent weeks for fresh shelf capacity, filter shelf_type=new + is_resale=0 rows for primary dilution risk, or pull one `ticker`'s history. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and accession_number back as cursor_date and cursor_accession to fetch the next page. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "cik": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "SEC CIK number (digits only) to filter by issuer."
        },
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "form": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact form type: S-3, F-3, S-3/A, F-3/A, S-3ASR or F-3ASR."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "shelf_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Shelf category: new, amendment, or automatic (WKSI ASR shelves)."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose last_updated is on/after this date (YYYY-MM-DD) -- catches EFFECT/takedown refreshes."
        },
        "cursor_accession": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Accession number from next_cursor for keyset pagination (pass with cursor_date)."
        }
      },
      "additionalProperties": false
    }
    arguments 155 lines
  • get_sec_trading_suspensions reads auth-required 22h ago

    SEC trading suspensions: every Section 12(k) order halting trading in a stock, 1995 to today -- the terminal-risk tape for dying OTC and small-cap names. One row per (order, issuer): who was halted, when trading stopped, when it could legally resume (first NYSE session after the order terminates), the cited reason normalized to a 4-value taxonomy, listing venue, and the order PDF URL. Bulk delinquency orders (2013-2021) name up to ~55 issuers under one release_number -- use issuer_count/issuer_index to collapse rows back to order level. Ticker is NULL where the order states none (most pre-2022 rows). resumption_at is when trading MAY resume; many suspended names never quote again. The SEC's suspension output collapsed after 2021: expect only a handful of orders per year since. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing. Note the newest event may be months old: short date windows can legitimately be empty on this dataset.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "cik": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "SEC CIK number (digits only) to filter by issuer. The only survivorship-proof id for dead shells; NULL on most bulk-order rows."
        },
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "active_on": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD: rows whose suspension window covers this date -- 'which stocks were untradeable on day X'. Not expressible via the release-date window."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'date' from next_cursor (send all three cursor params together)."
        },
        "has_resumed": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true/false: whether the date trading could legally resume is in the past. Resumption is permission, not evidence of quoting (Rule 15c2-11)."
        },
        "issuer_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring match on the issuer name -- the only handle on rows with no ticker."
        },
        "cited_reason": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Why the SEC suspended trading: delinquent_filings, market_manipulation, accuracy_adequacy_of_information, or other."
        },
        "single_issuer": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true = single-issuer orders only (the modern manipulation cases); false = bulk multi-issuer orders only."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD, on last_updated -- rows touched by the resumption sweep since this date."
        },
        "release_number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exchange Act release number, e.g. '34-92362' (a bare '92362' is normalized). One bulk order returns one row per named issuer."
        },
        "cursor_issuer_index": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'issuer_index' from next_cursor."
        },
        "cursor_release_number": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'release_number' from next_cursor."
        }
      },
      "additionalProperties": false
    }
    arguments 215 lines
  • get_cyber_incidents auth-required 15h ago

    Material cybersecurity incidents: every Form 8-K filed under Item 1.05 (the SEC cyber-disclosure rule, live since 2023-12-18) plus its 8-K/A amendments -- the entire population, ~80 filings and growing. One row per filing, with FOUR distinct date roles kept rigorously separate: incident discovered, materiality determined (both extracted from prose, with day/month/quarter precision enums), disclosed and amended (both structural EDGAR dates, never model-guessed) -- plus the intervals between them (investigation time, compliance-clock time, total latency). Flags are three-state: 1 = filing says yes, 0 = filing says no, NULL = filing does not say -- never collapsed. Amendments are separate rows linked to their original (original_accession_number, days_original_to_amendment); an incident with three 8-K/As is four rows. materiality_determined_date is sparse (~15% fill) because most filings simply do not state one. days_determination_to_disclosure is CALENDAR days; the SEC's deadline is four BUSINESS days -- adjust before compliance claims. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "cik": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "SEC CIK number (digits only) -- the durable issuer key (3 rows have no ticker)."
        },
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "refused": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1/0: rows where the labeler declined the filing text (served with NULL extraction fields; the disclosure event is still real)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "attack_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "One of data-breach, unauthorized-access, ransomware, business-email-compromise, other, unstated."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'date' from next_cursor (send with cursor_accession)."
        },
        "amended_flag": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1 = originals that were later amended, 0 = originals never amended (NULL on amendment rows themselves)."
        },
        "is_amendment": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1 = 8-K/A amendments only, 0 = original 8-Ks only."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD, on last_updated -- rows touched by the amendment-linkage sweep since this date."
        },
        "cursor_accession": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'accession_number' from next_cursor (send with cursor_date)."
        },
        "data_compromised_flag": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1/0 three-state flag: filing states data was/was not stolen (unfiltered rows include NULL = filing does not say)."
        },
        "operations_disrupted_flag": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1/0 three-state flag: filing states operations were/were not disrupted."
        },
        "third_party_incident_flag": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1/0 three-state flag: incident originated at a vendor/third party."
        }
      },
      "additionalProperties": false
    }
    arguments 215 lines
  • get_historical_market_cap reads auth-required 27h ago

    Point-in-time historical market capitalization: daily market_cap and shares_outstanding per US ticker, as they were known on each date (no restatement, no survivorship bias). The backbone reference for size filters, cap-weighted baskets, and normalizing anything by company size in a backtest. Requirements: provide `ticker` OR at least one date filter. A single `date` with no ticker returns the whole market for that day; a date RANGE without a ticker is capped at 7 calendar days. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and ticker back as cursor_date and cursor_ticker to fetch the next page. Companion tool: list_market_cap_tickers shows which tickers exist and their first available date. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'ticker' value from the previous response's next_cursor. Must be sent together with cursor_date."
        }
      },
      "additionalProperties": false
    }
    arguments 107 lines
  • get_short_locates auth-required 20h ago

    Short-locate costs: what it costs to locate (borrow for shorting) shares of every hard-to-borrow US stock, observed twice a day -- point-in-time, never revised. One row per (date, slot, ticker). Each sweep prices every listed US stock the broker marks NOT easy-to-borrow (~7,500 names). Served per row: date (US/Eastern trading date of the sweep), slot (am / pm), snapshot_time_utc (when the sweep ran, UTC to the minute, e.g. '2026-10-15 11:45' -- every row of a sweep shares it), ticker, status, price_per_share (USD per share), cost_per_100 (USD to locate 100 shares) and available_qty (shares that can be located right now). price_per_share and cost_per_100 are NULL unless status is 'offered'; available_qty is NULL unless a quote came back (0 for 'no_shares'). Typical uses: the borrow cost of a short idea on a given morning, names whose locate cost spiked or whose availability dried up, threshold-list membership over time, and the cost side of a short-selling backtest from 2026-10-08 onward. Requires an Alphanume Pro API key. There is no date clamp on this route. Honest limits, stated plainly. These are one broker's (Alpaca's) locate quotes for its own inventory, not a market-wide borrow rate -- another broker can quote the same name 2x higher or lower. Names the broker lends freely (easy-to-borrow) are not in the dataset. History starts 2026-10-08 and there is no backfill: locate quotes only exist live. Two sweeps a day, so intraday moves between sweeps are not captured. Default order: newest date first, pm before am, then ticker, so the first page is the latest sweep. One sweep is ~7,500 rows: filter by ticker, date, slot or status to keep results small. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's cursor_date, cursor_slot and cursor_ticker back to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "slot": {
          "anyOf": [
            {
              "enum": [
                "am",
                "pm"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which daily sweep: 'am' (11:45 UTC; 07:45 ET in summer, 06:45 ET in winter) or 'pm' (17:30 UTC; 13:30 ET in summer, 12:30 ET in winter)."
        },
        "status": {
          "anyOf": [
            {
              "enum": [
                "offered",
                "no_shares",
                "threshold",
                "unavailable",
                "corporate_action",
                "error"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "What the broker answered: 'offered' (shares can be located; price and availability set); 'no_shares' (none available right now); 'threshold' (on the Reg SHO threshold list, cannot be located); 'unavailable' (no quote); 'corporate_action' (cannot be quoted due to a corporate action); 'error' (other refusal)."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_date' value from the previous response's next_cursor. Send with cursor_slot and cursor_ticker."
        },
        "cursor_slot": {
          "anyOf": [
            {
              "enum": [
                "am",
                "pm"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_slot' value from the previous response's next_cursor."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'cursor_ticker' value from the previous response's next_cursor."
        },
        "min_cost_per_100": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows whose cost to locate 100 shares is at least this many US dollars (e.g. 5 for $5 per 100 shares). Unpriced rows are excluded whenever this is set."
        }
      },
      "additionalProperties": false
    }
    arguments 171 lines
  • get_optionable_tickers reads auth-required 25h ago

    Historical optionable universe: point-in-time snapshots of which US equities had listed options on each snapshot date, with the average number of days between listed expirations (avg_days_between -- lower means a denser expiration calendar) and a has_weeklies flag. Essential for honest options backtests: it tells you what was actually tradable *then*, not what is optionable today. Filter by snapshot date range; omit filters for the most recent snapshots first. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and ticker back as cursor_date and cursor_ticker to fetch the next page. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'ticker' value from the previous response's next_cursor. Must be sent together with cursor_date."
        }
      },
      "additionalProperties": false
    }
    arguments 83 lines
  • get_advisory_committee_votes reads auth-required 18h ago

    FDA advisory-committee (AdCom) votes: every drug/biologic advisory committee meeting from 2024 forward, with the committee's exact vote tallies extracted from the official minutes PDFs (verified against the PDFs) -- one row per (meeting, vote question). The tally (vote_yes/vote_no/vote_abstain), the verbatim question, which answer was the product-favorable one, and whether the favorable side won; plus sponsor, drug, indication, committee, center, meeting status, and links to the minutes/transcript/briefing materials so any number can be checked at the source. A meeting with no tally is still a row -- vote_evidence says why (minutes not posted yet vs discussion-only vs not held), which is the difference between 'no data' and 'no vote'. Minutes land MONTHS after meetings, so recent meetings sit at minutes_not_posted until FDA publishes; rows re-label automatically when materials change. The forward calendar (scheduled meetings) is included. AdCom votes precede FDA decisions by weeks-to-months and FDA usually -- not always -- follows them. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing. Note: meetings are sparse (a few per month), so short date windows are often legitimately empty.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "drug": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring on the drug/asset name (2-100 chars)."
        },
        "center": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Owning FDA center: CDER, CBER, or OC (Office of the Commissioner)."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "sponsor": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring on the sponsor company (2-100 chars)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "asset_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact normalized asset key -- the group-by for 'every AdCom appearance of this asset' and the linkage audit key."
        },
        "committee": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Committee abbreviation (e.g. ODAC, VRBPAC, PDAC) or name substring. Matches joint meetings via the full committee list, so PDAC finds meetings where it co-sat."
        },
        "has_tally": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true = only rows with a numeric vote tally; false = only placeholder/no-tally rows."
        },
        "application": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Substring on the application identifiers (NDA/BLA/sNDA numbers as stated in the materials)."
        },
        "meeting_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact meeting page slug -- all vote rows of one meeting."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD, on last_updated -- rows re-projected after FDA posted new materials (minutes land months late)."
        },
        "vote_evidence": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Why a row does/doesn't carry numbers: minutes_tally (real tally), minutes_no_tally, no_vote_held (discussion-only), minutes_not_posted (FDA hasn't published minutes yet), meeting_not_held."
        },
        "meeting_status": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "held, scheduled, postponed, or cancelled. 'scheduled' rows are the forward calendar."
        },
        "meeting_topic_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "product_specific, compounding_nominations, strain_selection, safety_review, or policy_or_class_review."
        },
        "vote_outcome_favorable": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true = the product-favorable side won; false = it lost. Ties and strain-selection votes are NULL and excluded by either value."
        }
      },
      "additionalProperties": false
    }
    arguments 227 lines
  • get_fda_response_events reads auth-required 2h ago

    Adverse FDA regulatory actions disclosed in 8-Ks: Complete Response Letters, full and partial clinical holds, and refuse-to-file letters, 2024+, each graded by an explicit severity precedence rule with the evidence flags the grade depends on served alongside it (new-trial-required, manufacturing-related, resubmission-path, hold-lifted). Follow-ups and resolutions are linked per (issuer, drug program), so an original hold row answers 'was it ever lifted, and how long did it take'. By default only classified FDA events are returned (~196 rows); the ~1,520 audited not-an-event rows the full-text sweep also retrieved are available with include_rejects=true. The date window filters disclosed_date (the EDGAR filing date); event_letter_date is extracted with its own precision enum and days_letter_to_disclosure is the selective-disclosure measure -- on initial_disclosure rows only (on follow-ups it measures distance to the original letter). Selective disclosure is the headline caveat: a CRL disclosed only in a 10-Q, or never, is not here. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "cik": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "SEC CIK number (digits only)."
        },
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "resolved": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true = events with a linked later resolution (hold lifted, approval, resubmission accepted); false = still open. NULL rows are themselves resolutions."
        },
        "severity": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Comma-separated severity grades: program_terminated, major_delay_new_trial_required, manufacturing_only, addressable_deficiencies, safety_signal_no_path_stated, unstated, not_restated. Rank encodes grading precedence, NOT market impact."
        },
        "asset_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact normalized program key -- groups all filings about one program and audits the served linkage columns."
        },
        "event_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Comma-separated: crl, clinical_hold_full, clinical_hold_partial, refuse_to_file, other_fda_action. (not_a_setback_event requires include_rejects=true.)"
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'date' from next_cursor (send with cursor_accession)."
        },
        "drug_search": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring on the drug/asset name (3+ chars)."
        },
        "filing_role": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "What the document does about the event: initial_disclosure, follow_up_update, or resolution. Counting rows without this filter overstates events ~2.4x -- one program's hold can be 3+ filings."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD, on last_updated -- rows touched by the linkage sweep since this date."
        },
        "include_rejects": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "true = include the ~1,520 audited 'not_a_setback_event' rows (boilerplate the recall-first sweep retrieved and the labeler rejected, each with its reason). Default = real FDA events only."
        },
        "cursor_accession": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'accession_number' from next_cursor (send with cursor_date)."
        }
      },
      "additionalProperties": false
    }
    arguments 215 lines
  • get_filing_intensity auth-required 2h ago

    SEC filing intensity: the number of EDGAR filings each company submitted per day. Corporate action leaves fingerprints in the filing stream -- financings, restructurings, activist involvement, and deal activity all show up as bursts of filings before the news is digested. One row per ticker per day: ticker, company name, date, filing_count. Screen filing_count_gte over recent dates to surface names with unusual filing bursts, or pull one `ticker`'s history to spot regime changes in its filing cadence. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and ticker back as cursor_date and cursor_ticker to fetch the next page. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_ticker."
        },
        "cursor_ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'ticker' value from the previous response's next_cursor. Must be sent together with cursor_date."
        },
        "filing_count_eq": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact filing count match. Cannot be combined with the filing_count range parameters."
        },
        "filing_count_gt": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with filing_count > this value."
        },
        "filing_count_lt": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with filing_count < this value."
        },
        "filing_count_gte": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with filing_count >= this value (non-negative)."
        },
        "filing_count_lte": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with filing_count <= this value."
        }
      },
      "additionalProperties": false
    }
    arguments 167 lines
  • get_ticker_classification reads auth-required 18h ago

    Ticker sector/industry classification: maps every covered US ticker into Alphanume's own 11-sector / 25-industry scheme (derived from SIC codes, but normalized into groups actually useful for trading -- e.g. 'semiconductors' and 'software' are separate industries under 'technology'). One row per ticker: ticker, alphanume_sector, alphanume_industry. Use it to group any other Alphanume dataset by sector, build sector-neutral baskets, or pull all names in one industry. Look up one `ticker`, or filter by `sector`/`industry` to enumerate a group. No date dimension and no tier restriction -- the mapping is current-state.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "sector": {
          "anyOf": [
            {
              "enum": [
                "essential_goods",
                "raw_materials",
                "energy_resources",
                "consumer_cyclical",
                "industrial_transport",
                "communications_media",
                "healthcare",
                "technology",
                "utilities_infrastructure",
                "finance",
                "real_assets"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Filter to one Alphanume sector."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "industry": {
          "anyOf": [
            {
              "enum": [
                "food_beverage",
                "basic_materials",
                "energy_production",
                "durables_apparel",
                "industrial_equipment",
                "business_services",
                "media_content",
                "pharma_biotech",
                "household_products",
                "automotive",
                "hardware_devices",
                "semiconductors",
                "healthcare_services",
                "transport_logistics",
                "telecom",
                "utilities",
                "retail_cyclical",
                "retail_staples",
                "consumer_services",
                "banking",
                "financial_services",
                "insurance",
                "real_estate_development",
                "reits",
                "software"
              ],
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Filter to one Alphanume industry."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 87 lines
  • check_api_status reads auth-required 20h ago

    Connectivity and API-key check against the Alphanume API. Returns the API's status and version. Call this first if any other tool errors, to distinguish a bad/missing API key from a dataset-specific problem.

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_dilution_filings reads auth-required 11h ago

    S-1 dilution filings tracker: answers "which companies are registering new share supply, and where is each registration in its lifecycle?" One row per S-1 registration event: ticker, company name, filing timestamp, market cap at filing, whether the filing is dilutive and/or a resale, shares offered, whether/when it became effective (with days-to-effective), whether/when it was withdrawn, and the SEC accession number + filing URL for the source document. Use it to flag dilution overhang on small caps, track time-to-effectiveness, or build event studies around registration filings. Filters by ticker and filing-date range (no exact-date parameter on this dataset). Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        }
      },
      "additionalProperties": false
    }
    arguments 71 lines
  • get_premarket_drop_risk reads auth-required never probed

    Pre-market drop risk: model-estimated probability of an intraday decline in US microcaps, published each morning before the open. Each trading morning, by ~09:25 ET and ahead of the 09:30 open, a RandomForestClassifier scores every microcap that actually traded in the pre-market session and this dataset serves the names ranked by modeled drop risk. Features are cut at a fixed 09:00 ET pre-market cutoff. prob_drop is P(intraday open->close return <= -5%); one row per (date, ticker), ordered by rank_for_date (1 = the highest-probability name that day). It measures the subset the model flags, not everything that moved overnight, and is built for researchers and traders analyzing pre-market activity in US microcaps. Requires an Alphanume Pro API key. There is no date clamp on this route: a Pro key sees the whole history, whatever dates it asks for. Sub-$1 names are featured, not filtered. Every row the model flags is published, each carrying a sub_dollar flag: pass min_price=1 for the legacy '$1 and up' screen, sub_dollar=1 (or max_price=1) to isolate the penny cohort, max_rank=5 for the day's top five. History before go-live (2026-08-31) is walk-forward simulated: generated retrospectively by re-running the walk-forward loop (train on strictly-prior rows only, then score that date). There is no look-ahead in the features or the training window, but rows dated before go-live are not a real-time publication record; rows from go-live onward are published live each morning before the open. Outcomes fill in late, never early. intraday_return_pct lands the same evening; return_lead_1d / return_lead_5d / return_lead_30d only once 1 / 5 / 20 NYSE sessions have elapsed -- NULL means not yet mature, or no exchange print existed at maturity (halts and delistings, which this microcap universe produces regularly). Three documented quirks kept for continuity with the training set: return_lead_30d is 20 trading sessions rather than 30 calendar days; return_lag_1m uses the 21-session price change over the price 252 sessions back (a legacy denominator quirk, so it is not a clean 1-month return); and the t_0..t_9 pre-market return grid is 0-filled, not NULL, when no print exists at or before that clock mark. Borrow and locate costs are NOT modeled. Shorting a sub-$1 microcap needs a locate that may be expensive or simply unavailable, and no number served here carries that cost. sub_dollar and min_price are the levers for filtering toward borrowable names. Pagination: results are capped at 50,000 rows per request; when the response has has_more=true, pass next_cursor's date and rank_for_date back as cursor_date and cursor_rank to fetch the next page.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "ticker": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Ticker symbol filter, e.g. 'AAPL'. Case-insensitive."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with rank_for_date <= this value (>= 1). max_rank=5 gives the top five names per day."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "min_prob": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with prob_drop >= this value, range [0, 1]. 0.7 keeps the model's higher-conviction names."
        },
        "max_price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with px_at_trading <= this value (USD, >= 0). max_price=1 isolates the sub-$1 cohort. Must be >= min_price."
        },
        "min_price": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Only rows with px_at_trading >= this value (USD, >= 0). min_price=1 reproduces the legacy '$1 and up' screen."
        },
        "sub_dollar": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "'1' = only names priced under $1 at the 09:00 ET cutoff, '0' = only names at $1 or above. Convenience equivalent of min_price/max_price around $1."
        },
        "cursor_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'date' value from the previous response's next_cursor. Must be sent together with cursor_rank."
        },
        "cursor_rank": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: the 'rank_for_date' value from the previous response's next_cursor. Must be sent together with cursor_date."
        }
      },
      "additionalProperties": false
    }
    arguments 167 lines
  • get_crypto_enforcement reads auth-required 15h ago

    US digital-asset enforcement, one normalized tape across the three agencies that bring it: SEC litigation releases and administrative proceedings, CFTC enforcement press releases, and DOJ criminal announcements, 2024+. One row per (action, respondent): what was alleged (multi-category), statutes cited, tokens/assets involved (real JSON arrays), monetary relief with its stated basis, settled flag (three-state), listed-issuer linkage where the document itself states one, and a follow-up chain linking successive actions by the same agency against the same respondent (complaint -> consent order, indictment -> plea). The date window filters published_date (structural, the agency's announcement date); action_date is extracted from the document with its own precision enum. One matter can appear once per agency -- nothing links across agencies, by design. monetary_relief_usd repeats on each respondent row of one action; de-duplicate on action_key before summing. Requires an Alphanume Pro API key. A 403 PRO_SUBSCRIPTION_REQUIRED or DATE_RANGE_RESTRICTED error means the key's plan does not cover the request -- it does not mean the data is missing.

    mcp-tool

    {
      "type": "object",
      "properties": {
        "date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact date, YYYY-MM-DD. Cannot be combined with the date range parameters."
        },
        "asset": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring over the assets list, e.g. 'bitcoin'. Asset strings are unnormalized document literals (Bitcoin/BTC both occur)."
        },
        "agency": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Which agency brought the action: sec, cftc, or doj."
        },
        "date_gt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, exclusive (YYYY-MM-DD)."
        },
        "date_lt": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, exclusive (YYYY-MM-DD)."
        },
        "settled": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Three-state: true (document says settled), false (document says not settled), unknown (document does not say). Never collapse unknown into false."
        },
        "date_gte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Start of date range, inclusive (YYYY-MM-DD)."
        },
        "date_lte": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "End of date range, inclusive (YYYY-MM-DD)."
        },
        "max_rows": {
          "type": "integer",
          "default": 500,
          "description": "Maximum data rows to return to the client (applied after the API responds). Default 500. Use 0 for no cap. Prefer narrowing with date/ticker filters over raising this."
        },
        "record_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact served row id: '<action_key>#<respondent_index>'."
        },
        "action_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact action id, e.g. 'sec-lr:LR-26456', 'cftc:9285-26', 'doj:<uuid>'. One action returns one row per respondent."
        },
        "allegation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Matches anywhere in the allegation list: fraud, unregistered_offering, unregistered_exchange_or_broker, market_manipulation, aml_bsa, sanctions, misappropriation, other."
        },
        "respondent": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Case-insensitive substring over the respondent name and its normalized key, e.g. 'bankman'."
        },
        "action_type": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "What the document announces NOW: civil_complaint, administrative_proceeding, settled_order, criminal_indictment, criminal_plea, trial_verdict, other."
        },
        "is_followup": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1 = this action follows an earlier action by the same agency against the same respondent."
        },
        "has_followup": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1 = a later action by the same agency against the same respondent exists."
        },
        "source_index": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Document kind: litigation-release, administrative-proceeding (SEC only; the PDF orders), or press-release (CFTC/DOJ)."
        },
        "updated_since": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "YYYY-MM-DD, on last_updated -- rows touched by the follow-up sweep since this date."
        },
        "respondent_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Exact normalized respondent key (lower-cased, suffixes stripped) -- the group-by for 'every action against this party' within one agency."
        },
        "respondent_kind": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "person or company."
        },
        "cursor_action_key": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'action_key' from next_cursor."
        },
        "primary_allegation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Matches only the lead allegation (same enum as allegation)."
        },
        "has_monetary_relief": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "1 = a dollar amount was stated, 0 = none stated."
        },
        "max_monetary_relief": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Maximum monetary_relief_usd."
        },
        "min_monetary_relief": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Minimum monetary_relief_usd. CAUTION: relief repeats on every respondent row of one action -- summing across rows double-counts."
        },
        "action_date_precision": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Precision of the extracted action_date: day, month, quarter, year, unstated."
        },
        "cursor_published_date": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'published_date' from next_cursor (send all three cursor params together)."
        },
        "cursor_respondent_index": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Pagination: 'respondent_index' from next_cursor."
        }
      },
      "additionalProperties": false
    }
    arguments 335 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id cc4982cb98c9eb79.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/cc4982cb98c9eb79/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/cc4982cb98c9eb79/badge.svg)](https://brick.blue/agent/cc4982cb98c9eb79?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.