Insider Buy Signals
REMOTE · MCP.TRADESTARINSIDER.COM · SCANNED SEP 29
Filing-verified U.S. insider-buy signals from SEC Form 4: cluster buys and large-vs-holdings buys.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security46
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 12 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS enforcement could not be verified: the plaintext port answered with HTTP 405, which proves neither a plaintext path nor enforcement. View diagnostics → Unverified
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability63
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 3129 tokens (~260/item across 12 items; 12 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management70
- Stability observed for 21 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 12 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Insider Buy Signals MCP server?
Insider Buy Signals is a hosted endpoint at https://mcp.tradestarinsider.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.tradestarinsider.com
claude mcp add --transport http com-tradestarinsider-edgar-insider-signals 'https://mcp.tradestarinsider.com/mcp'
{
"mcpServers": {
"com-tradestarinsider-edgar-insider-signals": {
"url": "https://mcp.tradestarinsider.com/mcp"
}
}
} {
"servers": {
"com-tradestarinsider-edgar-insider-signals": {
"type": "http",
"url": "https://mcp.tradestarinsider.com/mcp"
}
}
} [mcp_servers.com-tradestarinsider-edgar-insider-signals] url = "https://mcp.tradestarinsider.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-tradestarinsider-edgar-insider-signals": {
"type": "remote",
"url": "https://mcp.tradestarinsider.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-tradestarinsider-edgar-insider-signals --url 'https://mcp.tradestarinsider.com/mcp' --transport streamable-http
mcp_servers:
com-tradestarinsider-edgar-insider-signals:
url: "https://mcp.tradestarinsider.com/mcp" {
"McpServers": {
"com-tradestarinsider-edgar-insider-signals": {
"Transport": "http",
"Url": "https://mcp.tradestarinsider.com/mcp"
}
}
} assistant mcp add com-tradestarinsider-edgar-insider-signals -t streamable-http -u 'https://mcp.tradestarinsider.com/mcp'
{
"mcpServers": {
"com-tradestarinsider-edgar-insider-signals": {
"type": "http",
"url": "https://mcp.tradestarinsider.com/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 0
- Tool “activist_stakes_recent” rewrote its description, which is the text the model reads security
- Tool “federal_awards_recent” rewrote its description, which is the text the model reads security
- Tool “fund_position_changes” rewrote its description, which is the text the model reads security
- Tool “insider_cluster_buys” rewrote its description, which is the text the model reads security
- Tool “insider_signals_by_date_range” rewrote its description, which is the text the model reads security
- Tool “insider_signals_by_ticker” rewrote its description, which is the text the model reads security
- Tool “insider_signals_today” rewrote its description, which is the text the model reads security
- Schema quality: 175 → 260 ▼ functional
- “activist_stakes_recent” added an optional parameter “days” cosmetic
- “activist_stakes_recent” added an optional parameter “offset” cosmetic
- “federal_awards_recent” added an optional parameter “days” cosmetic
- “federal_awards_recent” added an optional parameter “offset” cosmetic
- “fund_position_changes” added an optional parameter “days” cosmetic
- “fund_position_changes” added an optional parameter “offset” cosmetic
- “insider_cluster_buys” added an optional parameter “days” cosmetic
- “insider_cluster_buys” added an optional parameter “limit” cosmetic
- “insider_cluster_buys” added an optional parameter “offset” cosmetic
- “insider_cluster_buys” added an optional parameter “ticker” cosmetic
- “insider_signals_by_date_range” added an optional parameter “days” cosmetic
- “insider_signals_by_date_range” added an optional parameter “limit” cosmetic
- “insider_signals_by_date_range” added an optional parameter “offset” cosmetic
- “insider_signals_by_date_range” added an optional parameter “ticker” cosmetic
- “insider_signals_by_ticker” added an optional parameter “days” cosmetic
- “insider_signals_by_ticker” added an optional parameter “limit” cosmetic
- “insider_signals_by_ticker” added an optional parameter “offset” cosmetic
- “insider_signals_today” added an optional parameter “days” cosmetic
- “insider_signals_today” added an optional parameter “limit” cosmetic
- “insider_signals_today” added an optional parameter “offset” cosmetic
- “insider_signals_today” added an optional parameter “ticker” cosmetic
- “activist_stakes_recent” reworded the description of “limit” cosmetic
- “federal_awards_recent” reworded the description of “limit” cosmetic
- “fund_position_changes” reworded the description of “limit” cosmetic
- 25 Sept 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 23 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Sept 26 +1
- Schema quality: 1780 → 2107 ▼ functional
- New tool “verify_13f_holding” functional
- 20 Sept 26 −2
- Schema quality: pass → fail ▼ functional
- New tool “fund_position_changes” functional
- New tool “verify_8k_event” functional
- New tool “verify_activist_13d” functional
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 29 Sept 2026 · Probed https://mcp.tradestarinsider.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=tradestarinsider.com | CN=WE1,O=Google Trust Services,C=US | 7 Sept 2026 | 6 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | acdfcc380c2b2d670ef5cc3e9ca73b73 |
| SANs: tradestarinsider.com, *.tradestarinsider.com | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.tradestarinsider.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| tradestarinsider.com. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.tradestarinsider.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.tradestarinsider.com/mcp | Inconclusive | 405 |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
activist_stakes_recent Recent activist stakes (SEC Schedule 13D) ~229
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only stakes filed within the last N days. |
| limit | integer | – | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. |
| min_percent | number | – | Only stakes at or above this percent-of-class |
| offset | integer | – | Rows to skip before this page (pagination). Default 0. |
| ticker | string | – | Filter to one subject ticker (case-insensitive), e.g. DH |
No output schema declared.
No examples provided.
federal_awards_recent Recent federal contract awards (USAspending) ~181
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only awards signed within the last N days. |
| limit | integer | – | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. |
| min_amount | number | – | Only awards at or above this USD amount |
| offset | integer | – | Rows to skip before this page (pagination). Default 0. |
No output schema declared.
No examples provided.
fund_position_changes Fund position changes (SEC 13F quarter-over-quarter) ~512
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).
| Name | Type | Req | Description |
|---|---|---|---|
| change_type | string | – | Only this kind of quarter-over-quarter change |
| days | integer | – | Only changes filed within the last N days. |
| filer | string | – | Filter to one fund by name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK |
| limit | integer | – | Max rows to return (default 25, newest first). Page with offset; the response's total_matched shows the full count. limit<=0 = no cap. |
| min_value_usd | number | – | Only positions at or above this current value in WHOLE US dollars |
| offset | integer | – | Rows to skip before this page (pagination). Default 0. |
No output schema declared.
No examples provided.
insider_cluster_buys Insider cluster buys ~258
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only rows filed within the last N days (relative to today). |
| limit | integer | – | 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 | integer | – | Rows to skip before this page (pagination). Default 0. |
| ticker | string | – | Case-insensitive exact ticker filter, e.g. DKS. |
No output schema declared.
No examples provided.
insider_filing_lookup Single filing lookup by accession ~62
The single Rule-2 record for one SEC filing accession, with its filing_url. Returns an error if no gated filing matches the accession.
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | yes | SEC filing accession, e.g. 0001493152-26-040454 |
No output schema declared.
No examples provided.
insider_signals_by_date_range Insider-buy signals in a date range ~197
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only rows filed within the last N days (relative to today). |
| end | string | yes | Inclusive end date, ISO YYYY-MM-DD |
| limit | integer | – | 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 | integer | – | Rows to skip before this page (pagination). Default 0. |
| start | string | yes | Inclusive start date, ISO YYYY-MM-DD |
| ticker | string | – | Case-insensitive exact ticker filter, e.g. DKS. |
No output schema declared.
No examples provided.
insider_signals_by_ticker Insider-buy signals for a ticker ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only rows filed within the last N days (relative to today). |
| limit | integer | – | 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 | integer | – | Rows to skip before this page (pagination). Default 0. |
| ticker | string | yes | Ticker symbol (case-insensitive), e.g. DKS |
No output schema declared.
No examples provided.
insider_signals_today Today's insider-buy signals ~172
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.
| Name | Type | Req | Description |
|---|---|---|---|
| days | integer | – | Only rows filed within the last N days (relative to today). |
| limit | integer | – | 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 | integer | – | Rows to skip before this page (pagination). Default 0. |
| ticker | string | – | Case-insensitive exact ticker filter, e.g. DKS. |
No output schema declared.
No examples provided.
verify_13f_holding Verify a 13F holding claim against SEC Form 13F-HR ~327
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cusip | string | – | 9-char CUSIP of the held security — give this or issuer_name. (ticker is never accepted: 13F carries no authoritative ticker) |
| end | string | – | Quarter-window end (ISO) if the claim spans quarters |
| filer | string | – | Fund/institution name substring (case-insensitive, e.g. 'Berkshire') or exact filer CIK — REQUIRED |
| issuer_name | string | – | Held company/issuer name (e.g. 'Apple') — give this or cusip |
| quarter | string | – | As-of quarter-end the claim is about, ISO YYYY-MM-DD (e.g. '2026-06-30') |
| start | string | – | Quarter-window start (ISO) if the claim spans quarters |
No output schema declared.
No examples provided.
verify_8k_event Verify an 8-K disclosure claim against SEC Form 8-K ~318
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.
| Name | Type | Req | Description |
|---|---|---|---|
| accession | string | – | SEC filing accession, e.g. 0001193125-26-389400 |
| cik | string | – | Registrant CIK (leading zeros ignored), e.g. 320193 |
| company_name | string | – | Registrant name substring (case-insensitive), e.g. 'Apple' |
| date | string | – | Claimed filing date, ISO YYYY-MM-DD (matched ±3 filing days) |
| end | string | – | Window end (ISO) if the claim is a range |
| items | string | – | Claimed SEC 8-K item code(s), comma-separated (e.g. '5.02' or '1.01,9.01') — checked against the filing |
| start | string | – | Window start (ISO) if the claim is a range |
No output schema declared.
No examples provided.
verify_activist_13d Verify an activist 13D claim against SEC Schedule 13D/13D-A ~339
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.
| Name | Type | Req | Description |
|---|---|---|---|
| date | string | – | Claimed filed date, ISO YYYY-MM-DD (matched ±3 filing days) |
| end | string | – | Window end (ISO) if the claim is a range |
| filer_name | string | – | Activist filer name in any order, e.g. 'Elliott Management' |
| form_type | string | – | Optional; only activist 13D/13D-A is covered — a passive 13G returns out_of_scope |
| intent | string | – | Optional pre-registered intent: I1 control/take-private, I2 board/proxy, I3 strategic/value |
| percent_of_class | number | – | Claimed percent-of-class owned (matched ±0.5 percentage points) |
| start | string | – | Window start (ISO) if the claim is a range |
| subject_name | string | – | Subject/target company name (use if you don't have the ticker) |
| ticker | string | – | Subject-company ticker (case-insensitive), e.g. DH |
No output schema declared.
No examples provided.
verify_insider_purchase Verify an insider-purchase claim against SEC Form 4 ~303
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount_usd | number | – | Claimed purchase value in USD (matched ±5% or ±$1) |
| date | string | – | Claimed date, ISO YYYY-MM-DD (matched ±3 filing days) |
| end | string | – | Window end (ISO) if the claim is a range |
| issuer_name | string | – | Issuer/company name (use if you don't have the ticker) |
| person | string | – | Insider name in any order, e.g. 'Alfonso de Angoitia' |
| shares | number | – | Claimed share count |
| start | string | – | Window start (ISO) if the claim is a range |
| ticker | string | – | Issuer ticker (case-insensitive), e.g. CAVA |
| txn_type | string | – | Optional; only open-market buys are covered — sale/option/grant returns out_of_scope |
No output schema declared.
No examples provided.
What is the Insider Buy Signals MCP server?
Insider Buy Signals is an MCP server listed in the public MCP registry as com.tradestarinsider/edgar-insider-signals. Filing-verified U.S. insider-buy signals from SEC Form 4: cluster buys and large-vs-holdings buys. This page covers its hosted endpoint (https://mcp.tradestarinsider.com/mcp).
Is the Insider Buy Signals MCP server safe to use?
Insider Buy Signals scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Insider Buy Signals MCP server expose?
Insider Buy Signals exposes 12 tools: insider_signals_today, insider_signals_by_ticker, insider_signals_by_date_range, insider_cluster_buys, insider_filing_lookup, and 7 more. Their descriptions and schemas cost roughly 3,063 tokens of context every time the server is loaded.
Does the Insider Buy Signals MCP server require authentication?
No. We connected to Insider Buy Signals without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Insider Buy Signals MCP server still maintained?
Insider Buy Signals is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.