Insider Buy Signals

Filing-verified U.S. insider-buy signals from SEC Form 4: cluster buys and large-vs-holdings buys.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
93%
命名品質
87%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,590Token(工具定義)
~2.0 KB典型回應大小
顯著的注意力影響(128k 上下文的 2.80%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "edgar-insider-signals": {
      "command": "uvx",
      "args": [
        "insider-signals-mcp"
      ]
    }
  }
}

可執行的套件

pypiinsider-signals-mcp1.1.0stdio

遠端端點

https://mcp.tradestarinsider.com/mcpstreamable-http

它能做什麼

工具清單

工具(12)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
⚪insider_signals_today(limit, offset, days, ticker)

Rule-2 insider-buy signals filed today (SEC code P open-market purchases). Returns the newest 25 by default (set `limit`; page with `offset`); the response's `total_matched` reports the full count. Optional `days`/`ticker` filters. Each record carries its source filing_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only rows filed within the last N days (relative to today)."
    },
    "ticker": {
      "type": "string",
      "description": "Case-insensitive exact ticker filter, e.g. DKS."
    }
  },
  "required": [],
  "additionalProperties": false
}
⚪insider_signals_by_ticker(ticker, limit, offset, days)

All Rule-2 insider-buy signals for one ticker (case-insensitive). Returns the newest 25 by default (set `limit`; page with `offset`; optional `days`); `total_matched` reports the full count. Each record carries its source filing_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Ticker symbol (case-insensitive), e.g. DKS"
    },
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only rows filed within the last N days (relative to today)."
    }
  },
  "required": [
    "ticker"
  ],
  "additionalProperties": false
}
⚪insider_signals_by_date_range(start, end, limit, offset, days, ...)

Rule-2 insider-buy signals filed within an inclusive ISO date range. Returns the newest 25 by default (set `limit`; page with `offset`; optional `days`/`ticker`); `total_matched` reports the full count. Each record carries its source filing_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "start": {
      "type": "string",
      "format": "date",
      "description": "Inclusive start date, ISO YYYY-MM-DD"
    },
    "end": {
      "type": "string",
      "format": "date",
      "description": "Inclusive end date, ISO YYYY-MM-DD"
    },
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only rows filed within the last N days (relative to today)."
    },
    "ticker": {
      "type": "string",
      "description": "Case-insensitive exact ticker filter, e.g. DKS."
    }
  },
  "required": [
    "start",
    "end"
  ],
  "additionalProperties": false
}
⚪insider_cluster_buys(limit, offset, days, ticker)

Rule-2 cluster buys only (>=2 insiders buying the same issuer in-window) — the highest-signal subset. Each row carries `uniform_price_cluster`: true when >=3 distinct insiders bought at the IDENTICAL price on the same filed_date for the same issuer — the fingerprint of an offering/conversion (one administered price), NOT independent open-market conviction. Note Form-4 code P covers open-market purchases AND some offering/conversion purchases filed under P; this flag marks the latter. Genuine clusters rank ABOVE uniform-price ones. Returns the newest 25 by default (set `limit`; page with `offset`; optional `days`/`ticker`); `total_matched` reports the full count. Each record carries its source filing_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only rows filed within the last N days (relative to today)."
    },
    "ticker": {
      "type": "string",
      "description": "Case-insensitive exact ticker filter, e.g. DKS."
    }
  },
  "required": [],
  "additionalProperties": false
}
⚪insider_filing_lookup(accession)

The single Rule-2 record for one SEC filing accession, with its filing_url. Returns an error if no gated filing matches the accession.

輸入結構描述

{
  "type": "object",
  "properties": {
    "accession": {
      "type": "string",
      "description": "SEC filing accession, e.g. 0001493152-26-040454"
    }
  },
  "required": [
    "accession"
  ],
  "additionalProperties": false
}
⚪federal_awards_recent(min_amount, limit, offset, days)

Recently signed U.S. federal new awards from USAspending.gov, newest first. Returns the newest 25 by default (set `limit`; page with `offset`); `total_matched` reports the full count. Optional min_amount (USD floor) and `days` (last-N-days window). Every award carries its source award_url; awards without a source link are dropped and never returned.

輸入結構描述

{
  "type": "object",
  "properties": {
    "min_amount": {
      "type": "number",
      "description": "Only awards at or above this USD amount"
    },
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only awards signed within the last N days."
    }
  },
  "required": [],
  "additionalProperties": false
}
⚪activist_stakes_recent(min_percent, ticker, limit, offset, days)

Recent activist Schedule 13D / 13D-A filings on US-listed companies, newest first then by stated-intent strength (control/take-private > board/proxy > strategic/value, or none stated). Returns the newest 25 by default (set `limit`; page with `offset`); `total_matched` reports the full count. Optional min_percent (percent-of-class floor), ticker, and `days` (last-N-days window). Every stake carries its source filing_url; filings without a source link are dropped.

輸入結構描述

{
  "type": "object",
  "properties": {
    "min_percent": {
      "type": "number",
      "description": "Only stakes at or above this percent-of-class"
    },
    "ticker": {
      "type": "string",
      "description": "Filter to one subject ticker (case-insensitive), e.g. DH"
    },
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only stakes filed within the last N days."
    }
  },
  "required": [],
  "additionalProperties": false
}
🟡fund_position_changes(filer, change_type, min_value_usd, limit, offset, ...)

What large institutional filers CHANGED quarter-over-quarter in their SEC 13F-HR holdings (opened / added / trimmed / exited a position) — the delta is the product; the raw snapshot is only the input. Every row carries as_of_quarter_end, filed_date and lag_days (values are up to ~45 days stale), value_usd in whole dollars, cusip + issuer_name, and its source filing_url. ticker is null (no authoritative free CUSIP->ticker source; never guessed). A missing prior quarter is the explicit state 'first_filing_on_record', not 'everything new'. Covers LONG US 13(f)-listed positions only — no shorts, non-US, or options. UNIVERSE: the fifty largest 13F filers by reported value as of the latest quarter, re-ranked quarterly. Because it is ranked BY REPORTED VALUE, the head is the biggest asset managers (BlackRock, Vanguard, State Street, Fidelity, ...) whose quarter-over-quarter changes largely reflect index rebalancing, not conviction; the feed reports WHAT WAS FILED, not what it means, and does not tag any manager active or passive (that would be inference). Coverage is PER SEC CIK, not per brand: a firm filing under several CIKs appears as several entries, and when a filer's 13F moves to a new CIK, historical coverage stays attached to the CIK that filed it. This is a convenience/completeness view of public data, NOT a trading edge. Returns the newest 25 by default (set `limit`; page with `offset`); `total_matched` reports the full count. Optional filer, change_type, min_value_usd, and `days` (last-N-days window).

輸入結構描述

{
  "type": "object",
  "properties": {
    "filer": {
      "type": "string",
      "description": "Filter to one fund by name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK"
    },
    "change_type": {
      "type": "string",
      "enum": [
        "new_position",
        "added",
        "trimmed",
        "exited",
        "no_prior_quarter"
      ],
      "description": "Only this kind of quarter-over-quarter change"
    },
    "min_value_usd": {
      "type": "number",
      "description": "Only positions at or above this current value in WHOLE US dollars"
    },
    "limit": {
      "type": "integer",
      "description": "Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap."
    },
    "offset": {
      "type": "integer",
      "description": "Rows to skip before this page (pagination). Default 0."
    },
    "days": {
      "type": "integer",
      "description": "Only changes filed within the last N days."
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢verify_insider_purchase(ticker, issuer_name, person, amount_usd, shares, ...)

Check a claim about an insider open-market buy (ticker/issuer, person, amount, timeframe) against the filed record. Returns status=confirmed with the source filing(s) + link; not_found; partial (same insider/company but value/date differs, itemised claimed-vs-filed); out_of_scope (sales/options/grants aren't covered); or out_of_coverage (outside the collected window). Every response states the coverage window checked. Rule-2: no estimates, no unlabelled partial matches — absence is reported as absence, never guessed.

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Issuer ticker (case-insensitive), e.g. CAVA"
    },
    "issuer_name": {
      "type": "string",
      "description": "Issuer/company name (use if you don't have the ticker)"
    },
    "person": {
      "type": "string",
      "description": "Insider name in any order, e.g. 'Alfonso de Angoitia'"
    },
    "amount_usd": {
      "type": "number",
      "description": "Claimed purchase value in USD (matched ±5% or ±$1)"
    },
    "shares": {
      "type": "number",
      "description": "Claimed share count"
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Claimed date, ISO YYYY-MM-DD (matched ±3 filing days)"
    },
    "start": {
      "type": "string",
      "format": "date",
      "description": "Window start (ISO) if the claim is a range"
    },
    "end": {
      "type": "string",
      "format": "date",
      "description": "Window end (ISO) if the claim is a range"
    },
    "txn_type": {
      "type": "string",
      "description": "Optional; only open-market buys are covered — sale/option/grant returns out_of_scope"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢verify_activist_13d(ticker, subject_name, filer_name, percent_of_class, intent, ...)

Check a claim about an activist stake (ticker/subject, filer, percent-of-class, stated intent, timeframe) against the filed Schedule 13D/13D-A record. Returns status=confirmed with the source filing(s) + link; not_found; partial (same filer/subject but percent/intent/date differs, itemised claimed-vs-filed); out_of_scope (passive 13G isn't covered); or out_of_coverage (outside the collected window). Every response states the coverage window checked. Rule-2: no estimates — absence is reported as absence, never guessed.

輸入結構描述

{
  "type": "object",
  "properties": {
    "ticker": {
      "type": "string",
      "description": "Subject-company ticker (case-insensitive), e.g. DH"
    },
    "subject_name": {
      "type": "string",
      "description": "Subject/target company name (use if you don't have the ticker)"
    },
    "filer_name": {
      "type": "string",
      "description": "Activist filer name in any order, e.g. 'Elliott Management'"
    },
    "percent_of_class": {
      "type": "number",
      "description": "Claimed percent-of-class owned (matched ±0.5 percentage points)"
    },
    "intent": {
      "type": "string",
      "enum": [
        "I1",
        "I2",
        "I3"
      ],
      "description": "Optional pre-registered intent: I1 control/take-private, I2 board/proxy, I3 strategic/value"
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Claimed filed date, ISO YYYY-MM-DD (matched ±3 filing days)"
    },
    "start": {
      "type": "string",
      "format": "date",
      "description": "Window start (ISO) if the claim is a range"
    },
    "end": {
      "type": "string",
      "format": "date",
      "description": "Window end (ISO) if the claim is a range"
    },
    "form_type": {
      "type": "string",
      "description": "Optional; only activist 13D/13D-A is covered — a passive 13G returns out_of_scope"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢verify_8k_event(cik, company_name, accession, items, date, ...)

Check a claim that a registrant (cik/company/accession) filed an 8-K carrying specific SEC item code(s) in a timeframe, against the filed record. Returns status=confirmed with the source filing(s) + link; not_found; partial (same registrant/filing but the claimed item(s) aren't carried, or the date differs — itemised claimed-vs-filed); out_of_scope (claims about the body's meaning/materiality aren't covered — the filing is never paraphrased); or out_of_coverage. Every response states the coverage window checked. Rule-2: item codes are the SEC controlled vocabulary parsed from the filing — never inferred from prose.

輸入結構描述

{
  "type": "object",
  "properties": {
    "cik": {
      "type": "string",
      "description": "Registrant CIK (leading zeros ignored), e.g. 320193"
    },
    "company_name": {
      "type": "string",
      "description": "Registrant name substring (case-insensitive), e.g. 'Apple'"
    },
    "accession": {
      "type": "string",
      "description": "SEC filing accession, e.g. 0001193125-26-389400"
    },
    "items": {
      "type": "string",
      "description": "Claimed SEC 8-K item code(s), comma-separated (e.g. '5.02' or '1.01,9.01') — checked against the filing"
    },
    "date": {
      "type": "string",
      "format": "date",
      "description": "Claimed filing date, ISO YYYY-MM-DD (matched ±3 filing days)"
    },
    "start": {
      "type": "string",
      "format": "date",
      "description": "Window start (ISO) if the claim is a range"
    },
    "end": {
      "type": "string",
      "format": "date",
      "description": "Window end (ISO) if the claim is a range"
    }
  },
  "required": [],
  "additionalProperties": false
}
🟢verify_13f_holding(filer, issuer_name, cusip, quarter, start, ...)

Check whether a fund (filer name/CIK) HELD an issuer (issuer_name or cusip) as of a quarter, against the filed 13F-HR record. Returns status=held with the source filing(s) + link; not_held (the fund reported the position EXITED that quarter — a filed 'no', distinct from not_found); not_found (no such row in the covered window); or out_of_coverage (the claimed quarter is outside the collected as-of window). Every response states the coverage window checked. Rule-2: LONG US 13(f) positions only, values are as-of quarter-end and up to ~45 days stale, and ticker is never guessed — match on issuer_name or cusip.

輸入結構描述

{
  "type": "object",
  "properties": {
    "filer": {
      "type": "string",
      "description": "Fund/institution name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK — REQUIRED"
    },
    "issuer_name": {
      "type": "string",
      "description": "Held company/issuer name (e.g. 'Apple') — give this or cusip"
    },
    "cusip": {
      "type": "string",
      "description": "9-char CUSIP of the held security — give this or issuer_name. (ticker is never accepted: 13F carries no authoritative ticker)"
    },
    "quarter": {
      "type": "string",
      "format": "date",
      "description": "As-of quarter-end the claim is about, ISO YYYY-MM-DD (e.g. '2026-06-30')"
    },
    "start": {
      "type": "string",
      "format": "date",
      "description": "Quarter-window start (ISO) if the claim spans quarters"
    },
    "end": {
      "type": "string",
      "format": "date",
      "description": "Quarter-window end (ISO) if the claim spans quarters"
    }
  },
  "required": [],
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本12 個工具
已驗證未記錄版本11 個工具