Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Signal8

REMOTE · MCP.SIGNAL8.AI · 2 COMPONENTS

SEC filings, dilution, insider & institutional ownership, and political-trade data for AI agents.

0 this week 92 Trust /100

Last scanned (13 hours ago)

Scores higher than 99% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Finance and Payments

Trust breakdown (7 categories)

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 Security89
Transport & Reachability100
Schema Quality & AI Usability79
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 45091 tokens (~186/item across 242 items; 113 tools + 129 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
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
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 113 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 115 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
What we tested

Checks we ran (13)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

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.

  • 5 Nov 26 0
    • Stability: 0.97 → pass security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “get_accumulation_snapshot” rewrote its description, which is the text the model reads security
    • Tool “get_analyst_coverage” rewrote its description, which is the text the model reads security
    • Tool “get_analyst_estimates” rewrote its description, which is the text the model reads security
    • Tool “get_baby_shelf_capacity” rewrote its description, which is the text the model reads security
    • Tool “get_cash_history” rewrote its description, which is the text the model reads security
    • Tool “get_cash_position” rewrote its description, which is the text the model reads security
    • Tool “get_cash_runway_calendar” rewrote its description, which is the text the model reads security
    • Tool “get_clinical_trials” rewrote its description, which is the text the model reads security
    • Tool “get_company_profile” rewrote its description, which is the text the model reads security
    • Tool “get_compliance” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_coverage” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_history” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_instruments” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_performance” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_risk” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_snapshot” rewrote its description, which is the text the model reads security
    • Tool “get_donor_aggregates” rewrote its description, which is the text the model reads security
    • Tool “get_earnings” rewrote its description, which is the text the model reads security
    • Tool “get_ended_reverse_splits” rewrote its description, which is the text the model reads security
    • Tool “get_executives” rewrote its description, which is the text the model reads security
    • Tool “get_exhibit_content” rewrote its description, which is the text the model reads security
    • Tool “get_filing_document” rewrote its description, which is the text the model reads security
    • Tool “get_filing_documents” rewrote its description, which is the text the model reads security
    • Tool “get_filing_exhibits” rewrote its description, which is the text the model reads security
    • Tool “get_filing_structured” rewrote its description, which is the text the model reads security
    • Tool “get_financials” rewrote its description, which is the text the model reads security
    • Tool “get_float” rewrote its description, which is the text the model reads security
    • Tool “get_float_history” rewrote its description, which is the text the model reads security
    • Tool “get_historical_prices” rewrote its description, which is the text the model reads security
    • Tool “get_insider_cross_company” rewrote its description, which is the text the model reads security
    • Tool “get_insider_positions_by_ticker” rewrote its description, which is the text the model reads security
    • Tool “define_term” rewrote its description, which is the text the model reads security
    • Tool “get_analyst_consensus” rewrote its description, which is the text the model reads security
    • Tool “get_insider_transactions” rewrote its description, which is the text the model reads security
    • Tool “get_institution_derivatives” rewrote its description, which is the text the model reads security
    • Tool “get_institution_detail” rewrote its description, which is the text the model reads security
    • Tool “get_institution_position_changes” rewrote its description, which is the text the model reads security
    • Tool “get_institution_top_aum” rewrote its description, which is the text the model reads security
    • Tool “get_institutions_leaderboards” rewrote its description, which is the text the model reads security
    • Tool “get_intraday_bars” rewrote its description, which is the text the model reads security
    • Tool “get_learn_guide” rewrote its description, which is the text the model reads security
    • Tool “get_legislative_calendar” rewrote its description, which is the text the model reads security
    • Tool “get_market_breadth” rewrote its description, which is the text the model reads security
    • Tool “get_market_metrics” rewrote its description, which is the text the model reads security
    • Tool “get_market_news” rewrote its description, which is the text the model reads security
    • Tool “get_news” rewrote its description, which is the text the model reads security
    • Tool “get_ownership” rewrote its description, which is the text the model reads security
    • Tool “get_policy_events” rewrote its description, which is the text the model reads security
    • Tool “get_policy_trade_leaderboard” rewrote its description, which is the text the model reads security
    • Tool “get_policy_trade_overlap” rewrote its description, which is the text the model reads security
    • Tool “get_political_sector_rotation” rewrote its description, which is the text the model reads security
    • Tool “get_politician_committees” rewrote its description, which is the text the model reads security
    • Tool “get_politician_detail” rewrote its description, which is the text the model reads security
    • Tool “get_politician_disclosures” rewrote its description, which is the text the model reads security
    • Tool “get_politician_donor_summary” rewrote its description, which is the text the model reads security
    • Tool “get_politician_donors” rewrote its description, which is the text the model reads security
    • Tool “get_politician_late_filers” rewrote its description, which is the text the model reads security
    • Tool “get_politician_pnl” rewrote its description, which is the text the model reads security
    • Tool “get_politician_roles” rewrote its description, which is the text the model reads security
    • Tool “get_politician_scorecard” rewrote its description, which is the text the model reads security
    • Tool “get_post_earnings_movers” rewrote its description, which is the text the model reads security
    • Tool “get_premarket_scan_history” rewrote its description, which is the text the model reads security
    • Tool “get_premarket_scanner” rewrote its description, which is the text the model reads security
    • Tool “get_quote” rewrote its description, which is the text the model reads security
    • Tool “get_recent_congressional_votes” rewrote its description, which is the text the model reads security
    • Tool “get_recent_uplistings” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_split_authority” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_split_lifecycle” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_splits_list” rewrote its description, which is the text the model reads security
    • Tool “get_rvol_history” rewrote its description, which is the text the model reads security
    • Tool “get_senate_trades_by_ticker” rewrote its description, which is the text the model reads security
    • Tool “get_short_interest” rewrote its description, which is the text the model reads security
    • Tool “get_split_history” rewrote its description, which is the text the model reads security
    • Tool “get_split_performance” rewrote its description, which is the text the model reads security
    • Tool “get_stock_price_change” rewrote its description, which is the text the model reads security
    • Tool “get_top_movers” rewrote its description, which is the text the model reads security
    • Tool “get_trading_halts” rewrote its description, which is the text the model reads security
    • Tool “get_upcoming_reverse_splits” rewrote its description, which is the text the model reads security
    • Tool “get_volume_profile” rewrote its description, which is the text the model reads security
    • Tool “lookup_accession_number” rewrote its description, which is the text the model reads security
    • Tool “screen_companies” rewrote its description, which is the text the model reads security
    • Tool “screen_must_raise” rewrote its description, which is the text the model reads security
    • Tool “screen_sec_filings” rewrote its description, which is the text the model reads security
    • Tool “screen_sec_filings_performance” rewrote its description, which is the text the model reads security
    • Tool “search_clinical_trials” rewrote its description, which is the text the model reads security
    • Tool “search_companies” rewrote its description, which is the text the model reads security
    • Tool “search_filing_text” rewrote its description, which is the text the model reads security
    • Tool “search_institutions” rewrote its description, which is the text the model reads security
    • Tool “search_learn_guides” rewrote its description, which is the text the model reads security
    • Tool “search_sec_filings” rewrote its description, which is the text the model reads security
    • “get_exhibit_content” reworded the description of “id” cosmetic
    • “get_filing_document” reworded the description of “filingId” cosmetic
    • “get_filing_exhibits” reworded the description of “filingId” cosmetic
    • “get_legislative_calendar” reworded the description of “minRelevance” cosmetic
    • “get_policy_trade_leaderboard” reworded the description of “sort” cosmetic
    • “get_policy_trade_overlap” reworded the description of “slug” cosmetic
    • “get_politician_pnl” reworded the description of “slug” cosmetic
    • “get_premarket_scan_history” reworded the description of “asOfTime” cosmetic
    • “get_premarket_scan_history” reworded the description of “baselineDays” cosmetic
    • “get_premarket_scan_history” reworded the description of “date” cosmetic
    • “get_premarket_scan_history” reworded the description of “includeNoHistory” cosmetic
    • “get_premarket_scan_history” reworded the description of “includeUnscreened” cosmetic
    • “get_premarket_scan_history” reworded the description of “minBaselineVolume” cosmetic
    • “get_premarket_scan_history” reworded the description of “minSessionVolume” cosmetic
    • “get_recent_uplistings” reworded the description of “dayOffset” cosmetic
    • “get_rvol_history” reworded the description of “asOfTime” cosmetic
    • “get_rvol_history” reworded the description of “baselineDays” cosmetic
    • “get_rvol_history” reworded the description of “session” cosmetic
    • “get_top_movers” reworded the description of “session” cosmetic
    • “screen_companies” reworded the description of “excludeHalted” cosmetic
    • “screen_companies” reworded the description of “maxCash” cosmetic
    • “search_clinical_trials” reworded the description of “phase” cosmetic
    • “search_filing_text” reworded the description of “exhibitTypes” cosmetic
    • “search_filing_text” reworded the description of “facets” cosmetic
    • “search_filing_text” reworded the description of “match” cosmetic
    • “search_filing_text” reworded the description of “matchedSections” cosmetic
    • “search_filing_text” reworded the description of “pattern” cosmetic
    • “search_filing_text” reworded the description of “section” cosmetic
    • “search_sec_filings” reworded the description of “companyTypes” cosmetic
    • “search_sec_filings” reworded the description of “cursor” cosmetic
    • “search_sec_filings” reworded the description of “exchanges” cosmetic
    • “search_sec_filings” reworded the description of “excludeForms” cosmetic
    • “search_sec_filings” reworded the description of “exhibitTypes” cosmetic
    • “search_sec_filings” reworded the description of “facets” cosmetic
    • “search_sec_filings” reworded the description of “foreignIssuer” cosmetic
    • “search_sec_filings” reworded the description of “formTypes” cosmetic
    • “search_sec_filings” reworded the description of “industries” cosmetic
    • “search_sec_filings” reworded the description of “items” cosmetic
    • “search_sec_filings” reworded the description of “match” cosmetic
    • “search_sec_filings” reworded the description of “matchedSections” cosmetic
    • “search_sec_filings” reworded the description of “maxFloat” cosmetic
    • “search_sec_filings” reworded the description of “maxMarketCap” cosmetic
    • “search_sec_filings” reworded the description of “maxPrice” cosmetic
    • “search_sec_filings” reworded the description of “minFloat” cosmetic
    • “search_sec_filings” reworded the description of “minMarketCap” cosmetic
    • “search_sec_filings” reworded the description of “minPrice” cosmetic
    • “search_sec_filings” reworded the description of “q” cosmetic
    • “search_sec_filings” reworded the description of “recentIpo” cosmetic
    • “search_sec_filings” reworded the description of “section” cosmetic
    • “search_sec_filings” reworded the description of “sectors” cosmetic
  • 4 Nov 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “define_term” rewrote its description, which is the text the model reads security
    • Tool “get_baby_shelf_capacity” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_coverage” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_history” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_instruments” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_performance” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_risk” rewrote its description, which is the text the model reads security
    • Tool “get_dilution_snapshot” rewrote its description, which is the text the model reads security
    • Tool “get_filing_document” rewrote its description, which is the text the model reads security
    • Tool “get_filing_documents” rewrote its description, which is the text the model reads security
    • Tool “get_filing_structured” rewrote its description, which is the text the model reads security
    • Tool “get_float” rewrote its description, which is the text the model reads security
    • Tool “get_intraday_bars” rewrote its description, which is the text the model reads security
    • Tool “get_learn_guide” rewrote its description, which is the text the model reads security
    • Tool “get_ownership” rewrote its description, which is the text the model reads security
    • Tool “get_politician_late_filers” rewrote its description, which is the text the model reads security
    • Tool “get_premarket_scan_history” rewrote its description, which is the text the model reads security
    • Tool “get_premarket_scanner” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_split_authority” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_split_lifecycle” rewrote its description, which is the text the model reads security
    • Tool “get_reverse_splits_list” rewrote its description, which is the text the model reads security
    • Tool “screen_companies” rewrote its description, which is the text the model reads security
    • Tool “screen_sec_filings” rewrote its description, which is the text the model reads security
    • Tool “search_filing_text” rewrote its description, which is the text the model reads security
    • Tool “search_learn_guides” rewrote its description, which is the text the model reads security
    • Tool “search_sec_filings” rewrote its description, which is the text the model reads security
    • Resource “Signal8 Stock Screeners: Movers, Halts and Dilution” was removed ▼ functional
    • Resource “Stocks Halted Today: Live Halt List and What Each Code Means” was removed ▼ functional
    • Resource “Upcoming Reverse Splits: The Next Two Weeks, Explained” was removed ▼ functional
    • Stability: pass → 0.97 functional
    • New resource “Congress Stock Trading Ban: Where It Stands” functional
    • New resource “How to Read the Reverse Split Calendar” functional
    • New resource “Signal8 Stock Screeners: Halts, Dilution and Delisting” functional
    • New resource “Why Stocks Get Halted and How to Find Today's Halts” functional
    • “get_dilution_instruments” reworded the description of “family” cosmetic
    • “get_intraday_bars” reworded the description of “extended” cosmetic
  • 3 Nov 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

    • Tool “get_split_history” rewrote its description, which is the text the model reads security
    • Tool “get_quote” rewrote its description, which is the text the model reads security
    • Tool “get_upcoming_reverse_splits” rewrote its description, which is the text the model reads security
    • Schema quality: 355 → 205 ▲ functional
    • New resource “13F Value vs AUM: Why a Fund's 13F Is Not Its Total Assets” functional
    • New resource “8-K Item Codes Explained: Items 1.01 to 9.01” functional
    • New resource “8-K vs 10-K: Event Report Within Four Business Days or the Audited Annual Report” functional
    • New resource “Adverse Financing Terms: MFN, Partitions, No Maturity” functional
    • New resource “At-the-market (ATM) offering” functional
    • New resource “Authorized Share Increases: Reading the Proxy Vote” functional
    • New resource “Authorized shares” functional
    • New resource “Baby Shelf Rule Explained: S-3 I.B.6 vs Form S-1” functional
    • New resource “Baby shelf rule” functional
    • New resource “Beneficial Ownership Blockers: 4.99% and 9.99% Caps” functional
    • New resource “Cash Runway: How to Calculate It From a 10-Q” functional
    • New resource “Cash runway” functional
    • New resource “Cashless exercise” functional
    • New tool “get_ended_reverse_splits” functional
    • New tool “get_reverse_split_authority” functional
    • New tool “get_reverse_splits_list” functional
    • New tool “get_split_performance” functional
  • 31 Oct 26 −1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 21 Oct 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 20 Oct 26 −1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 17 Oct 26 +1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

  • 16 Oct 26 −1

    We did not load change detail this far back for this component, so this day may have recorded more than is shown.

Diagnostics

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 5 Nov 2026 · Probed https://mcp.signal8.ai/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=signal8.ai CN=WE1,O=Google Trust Services,C=US 11 Oct 2026 9 Jan 2027 ECDSA 256 ECDSA-SHA256 347a136f1a654b920efbad0024c768c6
SANs: signal8.ai, *.signal8.ai
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.signal8.ai. — Not signed

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
ai. DS published 1814, 3799 8, 8 Verified
signal8.ai. No DS Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.signal8.ai/.well-known/oauth-protected-resource/mcp"

Bearer resource_metadata="https://mcp.signal8.ai/.well-known/oauth-protected-resource/mcp"

Protected resource metadata

Document https://mcp.signal8.ai/.well-known/oauth-protected-resource/mcp
Retrieved Yes
Resource https://mcp.signal8.ai/mcp
Authorisation server https://api.signal8.ai/

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.signal8.ai/mcp Verified 200
http (plaintext) http://mcp.signal8.ai/mcp HTTPS enforced 308 https://mcp.signal8.ai/mcp
MCP tools · 113 exposed · ~37,618 tokens

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 →

Tool Tokens
get_upcoming_reverse_splits ~911

Reverse stock splits scheduled to take effect within a day-offset window of the current US market day, for companies under a market-cap ceiling. Offsets are days from today on the US market calendar: fromOffset=1, toOffset=1 is tomorrow; fromOffset=1, toOffset=7 is the week ahead. Each row carries the ticker, company name, the exact vendor integers (splitFrom/splitTo), a pre-rendered ratio ("1-for-20"), the effective date, market cap, float in shares, and price. floatShares is on the same split basis as the market cap. floatBasis says what it is: "measured", or "estimate" / "estimate_rebased" (the float ladder's point estimate, moved across this split when it predates it), i.e. an estimate rather than a measurement. floatShares: null means not measured or withheld, not zero and not "no float"; such rows are included (they have a valid market cap) and floatWithheldReason gives the reason. floatUnknownCount counts those null-float rows in the list; it is not a withholding count (withheldCount is). price is on the same split basis as the market cap (null when it cannot be stated on one basis), so it is not comparable with a pre-split price from elsewhere. Rows are splits scheduled as of now, not a guarantee that every split effective in the window is already known: the underlying stock_splits table has no created_at column, so when a row first appeared is unmeasurable, and a split announced later is simply missing. The result is "scheduled as of now", not "all" reverse splits. A scheduled split can also be postponed or cancelled after it is announced. capUnknownCount is a withholding count, not a zero: it counts rows that passed every other filter and were deliberately excluded because Signal8 has no measured market cap for them (typically real OTC microcaps). It does not mean those companies have no dilution, no split or no cap; the cap was not measured, so they cannot be asserted to sit under the stated ceiling, and with capUnknownCount above zero the list is not co…

NameTypeReqDescription
fromOffsetinteger–Window start as a day offset from the US market day (default 1 = tomorrow). Must be <= toOffset; an inverted window is rejected rather than silently returning an empty list.
includeLifecycleboolean–Attach the tracked SEC-filing lifecycle episode to each row (default false). null = no episode tracked, never "no split"; a missing key = not matched to a registrant (not measured).
maxMarketCapnumber–Exclusive market-cap ceiling in USD (default 300000000). Rows with NO measured market cap are excluded and counted in capUnknownCount, never assumed to be under the ceiling.
toOffsetinteger–Window end, inclusive, as a day offset from the US market day (default 1). Use 7 with fromOffset 1 for the week ahead.
NameTypeReqDescription
data–––

No examples provided.

get_volume_profile ~115

Get the volume distribution across price levels for a single trading day: price buckets with volume, the Point of Control (highest-volume level) and the Value Area (the price range containing 70% of volume), which locate support, resistance and high-volume price nodes.

NameTypeReqDescription
bucketSizenumber–Price bucket width in dollars (default $1.00)
datestringyesTrading day (YYYY-MM-DD)
tickerstringyesStock ticker symbol (e.g., "AAPL", "TSLA")
NameTypeReqDescription
data–––

No examples provided.

lookup_accession_number ~160

Look up a filing or exhibit by its SEC accession number. Supports both dashed format (e.g., "0001193125-22-010026") and compact 18-digit format. Returns filing metadata including company name, form type, filing date, exhibit count and `filingId` (the internal id of the stored filing). If the filing is held in Signal8's archive (isInDatabase: true) its content is readable through that filingId; if it is only found on SEC EDGAR the response has isInDatabase: false and basic metadata only.

NameTypeReqDescription
accessionNumberstringyesSEC accession number in dashed (e.g., "0001193125-22-010026") or compact 18-digit format
NameTypeReqDescription
data–––

No examples provided.

screen_companies ~1,191

Screen companies by price range, volume, cash runway, float, shares outstanding, market cap, industry, listing exchange (NASDAQ/NYSE/AMEX), listing market (market="otc" / "exchange"; the reliable OTC test, as the exchange label is inconsistent on OTC rows), float data source, TTM dividend yield and snapshot cash (minCash / maxCash). Sortable by any sortable column. Returns matching companies with key metrics and pagination. Float: "float" is the measured point float (null on a withheld dilution-snapshot row, which then carries "floatEstimate" + "floatEstimateBound" ("point" / "ceiling" / "floor") + "floatEstimateBasis"). A point estimate is a number with its basis as the caveat; a ceiling or floor is a bound, not a figure: the float is not stated and is at most (ceiling) or at least (floor) that number. floatEstimate is not a basis for a market cap, percent-of-float or short-interest ratio. minFloat / maxFloat and the computed_float sort use the figure's value, so a bounded row is kept; a row with neither is not measured, not 0. `shares_outstanding` is dated by `sharesOutstandingAsOf` + `sharesOutstandingAsOfKind` (stated / checked / none = date not recorded) and `sharesOutstandingSource`; the count is only meaningful with its date. Cash runway: a null cash_runway_months carries cashRunwayReason. "estimate_would_be_negative" = the last cash figure (dated cashRunwayAsOf) rolled forward by burn is below zero: estimated exhausted, not a reported zero balance; maxCashRunway drops such rows unless includeRunwayExhausted=true. Any other or null reason is not a runway claim. estimatedCurrentCash (estimatedCashAsOf) is the snapshot's USD cash projection, only for snapshot-covered companies: null = not measured, not "no cash"; a non-USD filer has it null and is never matched by minCash / maxCash. dividendYield (TTM cash dividends with an ex-date in the last 365 days / current price, %), nextExDate, lastExDate: null = not measured or not a payer, not 0%. listingMarket: "exch…

NameTypeReqDescription
countrystring–Company universe by issuer domicile: "US" (default), "CA" (Canadian companies via their US-OTC/US cross-listings), or "all"
exchangestring–Filter by listing exchange: NASDAQ (every tier), NYSE (includes NYSE Arca), or AMEX (NYSE American). Each matches every spelling of that exchange; names that moved to OTC never match. For OTC use mar…
excludeHaltedboolean–When true, exclude tickers with a currently-active trading halt (regulatory or volatility) from the results. Default false: halted rows are included and carry halted/haltCode/haltedAt fields.
floatSourcestring–Filter by float data source
includeRunwayExhaustedboolean–When true, maxCashRunway also returns companies whose estimated cash is already exhausted (cash_runway_months null, cashRunwayReason "estimate_would_be_negative"); they sort first on an ascending run…
industrystring–Filter by company industry (exact match, e.g. "Biotechnology", "Software")
limitnumber–Maximum results per page (default: 25, max: 100)
marketstring–Listing market: "otc" (OTC Markets) or "exchange" (NASDAQ / NYSE / NYSE American / Arca / Cboe). Companies with no listing record match neither
maxCashnumber–Maximum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies only; an uncovered company is not measured, not excluded for having cash
maxCashRunwaynumber–Maximum estimated months of cash remaining
maxDividendYieldnumber–Maximum TTM dividend yield in percent. Rows with no measured yield never match.
maxFloatnumber–Maximum computed public float (shares)
maxMarketCapComputednumber–Maximum market cap in USD (price * shares outstanding)
maxPricenumber–Maximum latest price in USD
maxSharesOutstandingnumber–Maximum shares outstanding from SEC EDGAR
maxVolumenumber–Maximum daily trading volume
minCashnumber–Minimum dilution-snapshot cash projection in USD (estimatedCurrentCash). Snapshot-covered companies reporting in USD only
minCashRunwaynumber–Minimum estimated months of cash remaining
minDividendYieldnumber–Minimum TTM dividend yield in percent (e.g. 3 for 3%). Rows with no measured yield never match.
minFloatnumber–Minimum computed public float (shares)
minMarketCapComputednumber–Minimum market cap in USD (price * shares outstanding)
minPricenumber–Minimum latest price in USD
minSharesOutstandingnumber–Minimum shares outstanding from SEC EDGAR
minVolumenumber–Minimum daily trading volume
offsetnumber–Offset for pagination (default: 0)
sortBystring–Column to sort results by (default: volume)
sortOrderstring–Sort direction (default: desc)
NameTypeReqDescription
data–––

No examples provided.

screen_must_raise ~338

Companies with imminent capital raise needs based on estimated cash runway. Defaults to companies with less than 6 months of cash remaining, sorted by urgency (lowest runway first): distressed companies, imminent dilution situations and potential financing catalysts. Runway is estimated from the current burn rate. Companies whose estimated cash is already exhausted are included by default and listed first: they carry cash_runway_months null with cashRunwayReason "estimate_would_be_negative" (the last cash figure, dated cashRunwayAsOf, rolled forward by the burn rate is below zero today). That is an estimate from a dated balance (estimated exhausted as of today, from the last cash figure as of cashRunwayAsOf), not a reported zero balance and not a statement that the company has no cash. Rows also carry estimatedCurrentCash / estimatedCashAsOf (dilution-snapshot cash projection; null = not measured) and listingMarket.

NameTypeReqDescription
includeExhaustedboolean–Include companies whose estimated cash is already exhausted (default: true)
industrystring–Filter by company industry (exact match, e.g. "Biotechnology", "Software")
limitnumber–Maximum results to return (default: 25, max: 100)
marketstring–Listing market: "otc" (OTC Markets) or "exchange" (NASDAQ / NYSE / NYSE American / Arca / Cboe)
maxMonthsnumber–Maximum months of cash runway to filter by (default: 6)
offsetnumber–Offset for pagination (default: 0)
NameTypeReqDescription
data–––

No examples provided.

screen_sec_filings ~613

Screen SEC filings across all companies with company-level filters (sector, industry, market cap, exchange) combined with filing-level filters (form type, date range). Returns filings enriched with company metadata: ticker, sector, industry, exchange, market cap, and price. Answers questions like "all S-1 filings from biotech companies under $500M market cap" or "recent 8-K filings from Technology sector companies". Results are filings, not a company universe or a company count. Only the 500 largest matching companies by market cap are searched (narrower filters reach smaller ones). Filters for float, price, company type, foreign issuer, recent IPO, full-text queries and 8-K item codes are not available here. Coverage: Signal8's SEC EDGAR archive, updated through the day, in its held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in). Before archiveFrom it holds only a scatter, so absence before archiveFrom is not evidence a filing was never filed; SEC EDGAR itself covers earlier periods. Record-only rows (bodyStored: false) have no stored body; the document is at its sec.gov URL.

NameTypeReqDescription
dateFromstring–Start date filter (YYYY-MM-DD)
dateTostring–End date filter (YYYY-MM-DD)
exchangestring–Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX")
formTypesstring–Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5")
industrystring–Filter by industry (e.g., "Biotechnology", "Software - Application", "Oil & Gas E&P")
maxMarketCapnumber–Maximum market cap in USD (e.g., 500000000 for $500M)
minMarketCapnumber–Minimum market cap in USD (e.g., 1000000000 for $1B)
pagenumber–Page number (1-indexed, default: 1)
pageSizenumber–Results per page (default: 25, max: 100)
sectorstring–Filter by sector (e.g., "Healthcare", "Technology", "Financial Services", "Energy")
sortBystring–Sort results by field (default: filing_date). Ties are broken by filing id, so a given page is stable and reproducible for a fixed corpus.
sortOrderstring–Sort direction (default: desc). Note that paging is offset-based over a corpus that is continuously ingesting new filings, so when walking many pages of a broad date range, newly-arrived filings can…
NameTypeReqDescription
data–––

No examples provided.

screen_sec_filings_performance ~401

Analyze stock price performance after SEC filings. Returns individual filing records with pre-computed price returns at +1 day, +3 days, +7 days, and +30 days after the filing date (numbers in percent points: 4.35 = +4.35%; null = not measured), plus aggregate statistics (average, median, % negative, best, worst) across all matching filings. Company-level filters (sector, industry, market cap, exchange) combine with filing filters (form type, date range). Answers questions like "how did biotech stocks perform after S-1 filings?" or "what was the average 7-day return after 8-K filings from companies under $500M market cap?". These are past returns, not a forecast.

NameTypeReqDescription
dateFromstring–Start date filter (YYYY-MM-DD)
dateTostring–End date filter (YYYY-MM-DD)
exchangestring–Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX")
formTypesstring–Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5")
industrystring–Filter by industry (e.g., "Biotechnology", "Software - Application")
maxMarketCapnumber–Maximum market cap in USD
minMarketCapnumber–Minimum market cap in USD
pagenumber–Page number (1-indexed, default: 1)
pageSizenumber–Results per page (default: 25, max: 100)
sectorstring–Filter by sector (e.g., "Healthcare", "Technology", "Financial Services")
sortBystring–Sort results by field (default: filing_date)
sortOrderstring–Sort direction (default: desc)
NameTypeReqDescription
data–––

No examples provided.

search_clinical_trials ~395

Search clinical trials market-wide (across companies), filtered by phase, indication, sponsor, status and date window, with sorting and pagination. An unrecognised phase, status, dateField or sort value is rejected with the allowed list (it is never silently ignored). A result's ticker is the company whose trial list the row was collected under, which may be the lead sponsor or only a collaborator; metadata.sponsor is the lead sponsor, so a row is that ticker's own trial only when metadata.sponsor is that company.

NameTypeReqDescription
dateFieldstring–Date column the from/to window applies to (default primary_completion_date)
fromstring–Inclusive start: YYYY, YYYY-MM or YYYY-MM-DD
indicationstring–Comma-separated condition names, exact match (case-sensitive), e.g. "Breast Cancer"
limitnumber–Maximum results to return (1-100, default: 50)
offsetnumber–Offset for pagination (default: 0)
orderstring–Sort direction
phasestring–Comma-separated phases, matching ANY of them. Allowed tokens: EARLY_PHASE1, PHASE1, PHASE2, PHASE3, PHASE4 (also accepted: "Phase 2", "2", "Early Phase 1"). Example: "PHASE2,PHASE3". A combined "Phas…
sortstring–Sort column (default primary_completion_date)
sponsorstring–Case-insensitive substring of the LEAD sponsor name (collaborators are not searched)
statusstring–ONE ClinicalTrials.gov overall status
tostring–Inclusive end: YYYY, YYYY-MM or YYYY-MM-DD (a partial date covers its whole year/month)
NameTypeReqDescription
data–––

No examples provided.

search_companies ~84

Search for companies by name or ticker symbol in the Signal8 database. Returns matching companies with their ticker, name, CIK, and exchange.

NameTypeReqDescription
limitnumber–Maximum results to return (default: 10, max: 50)
querystringyesSearch query - company name or ticker symbol (e.g., "Tesla", "TSLA")
NameTypeReqDescription
data–––

No examples provided.

search_filing_text ~1,220

Full-text search across SEC filing content that returns the matching passage: one match per filing, with the exhibit it was found in (`exhibit_id`, `exhibit_type`) and a snippet with context. Query syntax: unquoted words all have to appear (any order, any distance); "quoted phrase" = exact wording; OR between alternatives (merger OR acquisition); -word or -"phrase" to exclude; w1 NEAR/10 w2 (also NEAR(10), or bare NEAR = within 10) = words close together; word* = prefix of 4+ letters (dilut* matches dilution, dilutive); $AAPL or a capitalised ticker scopes to that company; a form code (8-K, 10-Q, S-1), "item 5.02" / "8-K 1.05" and a bare year (2024) scope to that form / 8-K item / year. Quoted multi-word phrases match as phrases; the archive's reading of the query is in meta.understanding. Suited to locating specific clauses ("change of control", "anti-dilution", "right of first refusal") and to the excerpt of a known filing (accessionNumber or filingId). It has no filing-level paging, totals, date ranges, 8-K item, excluded-form or company filters. Filters: CIK, filing, accession number, form type, section (risk_factors, mdna, ex99 …; applied only when meta.sections confirms it, otherwise meta.unsupported says the whole filing was searched) and exhibitTypes (EX-10 …). Coverage: Signal8's SEC EDGAR archive, updated through the day, in its held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in). Before archiveFrom it holds only a scatter, so absence before archiveFrom is not evidence a filing was never filed; SEC EDGAR itself covers earlier periods. Record-only rows (bodyStored: false) have no stored body; the document is at its sec.gov URL.

NameTypeReqDescription
accessionNumberstring–Filter to a specific filing by SEC accession number
cikstring–Filter to a specific company by CIK number
exhibitTypesstring–Keeps only filings carrying any of these exhibit types (comma-separated): a family such as EX-10 (material contracts) matches every member (EX-10.1, EX-10.2…); an exact type such as EX-99.1 (usually…
facetsboolean–true = also return `facets` { forms, years, items }: [{ value, count }] over the whole match set. Absent when not measured (not zero). Default false.
filingIdstring–Filter to a specific filing by internal ID
formTypestring–Filter by form type (e.g., "10-K", "S-1")
limitnumber–Max results (default: 20, max: 100)
matchstring–Word matching. exact = a word matches only itself ("split" does not match "splits"), which is EDGAR full-text search's behaviour; stemmed = English word variations also match. Default when omitted: s…
matchedSectionsboolean–Per-row `matchedSections` (default true): the sections the text matched in. Absent on a row means not measured (index without sections), not "matched nowhere".
patternstringyesSearch query (minimum 2 characters): "exact phrase", OR, -exclude, w1 NEAR/n w2, word*, $TICKER. A CIK/filing-scoped search whose text is not indexed yet falls back to a literal case-insensitive subs…
sectionstring–Restricts matching to sections (comma-separated): business, risk_factors, cybersecurity, legal_proceedings, mdna, market_risk, controls (10-K/10-Q/20-F narrative items, by meaning: mdna is 10-K Item…
snippetLengthnumber–Characters of context around each match (default: 200)
sortstring–Result order: newest (default) or relevance (best match first)
understandboolean–Query understanding (default true): tickers/$TICKER, company names, form codes, "item N.NN" and synonym expansion, reported in meta.understanding. false = match the words literally.
NameTypeReqDescription
data–––

No examples provided.

search_institutions ~136

Search institutional investors (13F filers) by name. Returns matching institutions with CIK, name, AUM, holdings count, and latest filing period. Matches part of a fund or investment manager name (e.g., "Vanguard", "BlackRock", "Citadel"). Results are ranked by AUM descending.

NameTypeReqDescription
limitnumber–Maximum results to return (default: 25, max: 100)
offsetnumber–Offset for pagination (default: 0)
qstringyesSearch term (min 2 characters, e.g., "Vanguard", "BlackRock")
NameTypeReqDescription
data–––

No examples provided.

search_learn_guides ~358

Free: works without an API key or Pro plan (the hosted server only needs a signed-in account). Searches the Signal8 Academy (signal8.ai/learn): plain-English guides that explain dilution (ATMs, warrants, convertibles, baby shelf, cash runway), how to read SEC filings (8-K items, Form 4 codes, 13D/13G, 424B5, S-1/S-3), market structure (halts, short interest, float, reverse splits, STOCK Act disclosures) and how Signal8 works. Returns matching guides with title, description, track, section, reading time, lastVerified date, the public url and the signal8:// resource uri, without bodies. Keyword match: every query word must appear somewhere in the guide; title hits rank highest. An empty query lists every guide (optionally one track) in reading order. An empty result means no guide matched the words given (fewer or broader words match more guides, e.g. "warrant" rather than "warrant inducement repricing"), not that the topic is unimportant.

NameTypeReqDescription
limitinteger–Maximum guides to return (1-50, default 10).
querystring–Words to search for, e.g. "baby shelf", "form 4", "reverse split". Empty string lists every guide.
trackstring–Optional. Restrict to one Academy track: "dilution" (dilution & toxic financing), "filings" (reading SEC filings), "market-structure" (halts, short interest, float, splits, congressional trading), or…
NameTypeReqDescription
data–––

No examples provided.

search_sec_filings ~2,506

Search and list SEC filings by company (CIK), form type, date range, 8-K item codes and excluded forms, optionally with a full-text query over filing bodies and by company facts (market cap, float, price, sector, industry, exchange, company type, foreign issuer, recent IPO). Rows carry `id` (the internal filingId used by the filing-document and exhibit tools), cik, company_name, accession_number, form_type, filing_date, acceptedAt, primaryDocument, bodyStored and itemNumbers (plus `rank` and `snippet` with `q`); `pagination` has `total`, `totalRelation` ("eq" exact; "gte" a lower bound cut at 10,000, when `totalEstimate` is "about N"), `hasMore` and `nextCursor`. The `ciks` filter matches the filing's own CIK: a Form 4 filed under the reporting owner's CIK is not returned for the issuer's CIK. Coverage: Signal8's SEC EDGAR archive, updated through the day, in its held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in). Before archiveFrom it holds only a scatter, so absence before archiveFrom is not evidence a filing was never filed; SEC EDGAR itself covers earlier periods. Record-only rows (bodyStored: false) have no stored body; the document is at its sec.gov URL. Every response carries `archiveFrom` and `rangeStartsBeforeArchive`: a range with no dateFrom or starting before archiveFrom is not definitive (`searchIndex.complete: false`, `reason: "outside_held_range"`, `heldFrom`): an empty result then means the archive holds no match from archiveFrom onward, not that no such filing exists. An empty text result is definitive only when `searchIndex.complete` is true. Full-text `q`: Query syntax: unquoted words all have to appear (any order, any distance); "quoted phrase" = exact wording; OR between alternatives (merger OR acquisition); -word or -"phrase" to exclude; w1 NEAR/10 w2 (also NEAR(10), or bare NEAR = within 10) = words close together; word* = prefix of 4+ letters (dilut* matches dilu…

NameTypeReqDescription
ciksstring–Comma-separated CIK numbers to filter by (e.g., "320193,1018724"; zero-padded also accepted)
companyTypesstring–Company filter. Comma-separated: operating, fund (registered funds/ETFs; adds N-CSR, N-CEN, N-PX, 485BPOS, 497/497K to the default forms), spac (blank-check companies)
cursorstring–Opaque keyset cursor from a previous response's pagination.nextCursor. Stable for deep paging while new filings arrive (page is not). Required for page 2+ of a company-filtered search.
dateFromstring–Start filing date (YYYY-MM-DD). The archive only holds filings from its `archiveFrom` date (stated in every response; currently late 2021, expanding back to 2016): omitting dateFrom, or starting earl…
dateTostring–End filing date (YYYY-MM-DD)
exchangesstring–Company filter. Comma-separated listing venues: NASDAQ, NYSE, AMEX (= NYSE American), OTC
excludeFormsstring–Comma-separated form types to exclude (e.g., "4,13F-HR"). Exact match.
exhibitTypesstring–Keeps only filings carrying any of these exhibit types (comma-separated): a family such as EX-10 (material contracts) matches every member (EX-10.1, EX-10.2…); an exact type such as EX-99.1 (usually…
facetsboolean–true = also return `facets`: { forms, years, items }, each a list of { value, count } over the whole result set (not just this page). Present only when the archive measured them (its OpenSearch engin…
foreignIssuerboolean–Company filter. true = companies with foreign-issuer evidence (a 20-F, 40-F or 6-K seen, or an ADR listing); false = none seen since the evidence log began (companyFilter.foreignEvidenceSince)
formTypesstring–Comma-separated form types (e.g., "10-K,10-Q,8-K,S-1,S-3,424B5"). Exact match; amendments (e.g. "10-K/A") match only when listed. (With company filters, amendments are added automatically.)
industriesstring–Company filter. Industry names separated by "|", exact and case-sensitive (e.g. "Biotechnology|Airlines, Airports & Air Services"; some names contain ", ", so "|" is the safe separator; a bare comma…
itemsstring–Comma-separated 8-K item codes, all required (e.g., "2.02,9.01" = results + financial statements; "5.02" = officer/director changes; "1.01" = material agreements; "3.01" = delisting notice).
matchstring–Word matching for q. exact = a word matches only itself ("split" does not match "splits" or "splitting"), which is EDGAR full-text search's own behaviour; stemmed = English word variations also match…
matchedSectionsboolean–Per-row `matchedSections` (default true): the sections the text matched in. Absent on a row means not measured (index without sections), not "matched nowhere". Ignored without q.
maxFloatnumber–Company filter. Maximum public float, in shares
maxMarketCapnumber–Company filter. Maximum market cap in USD, e.g. 300000000 for under $300M
maxPricenumber–Company filter. Maximum latest share price in USD
minFloatnumber–Company filter. Minimum public float, in shares
minMarketCapnumber–Company filter. Minimum market cap in USD (price × shares outstanding), e.g. 50000000 for $50M
minPricenumber–Company filter. Minimum latest share price in USD
pagenumber–Page number (1-indexed, default: 1). Ignored when cursor is set; not allowed with company filters.
pageSizenumber–Results per page (default: 25, max: 100)
qstring–Full-text query over filing bodies. Query syntax: unquoted words all have to appear (any order, any distance); "quoted phrase" = exact wording; OR between alternatives (merger OR acquisition); -word…
recentIpoboolean–Company filter. true = first listed within the last 365 days, with no evidence of earlier public status (renames and relistings are excluded). false is the same as omitting it.
sectionstring–Restricts matching to sections (comma-separated): business, risk_factors, cybersecurity, legal_proceedings, mdna, market_risk, controls (10-K/10-Q/20-F narrative items, by meaning: mdna is 10-K Item…
sectorsstring–Company filter. Sector names separated by "|" (or a bare comma), exact and case-sensitive (e.g. "Healthcare|Technology"). An unknown name returns a 400 listing every valid sector.
sortstring–newest (by acceptance time, default) or relevance (requires q; best match first)
understandboolean–Query understanding (default true): the archive recognises tickers/$TICKER, company names, form codes, "item N.NN" and expands synonyms, reporting what it applied in meta.understanding. false = searc…
NameTypeReqDescription
data–––

No examples provided.

Install

How do I install the Signal8 MCP server?

Signal8 is a hosted endpoint at https://mcp.signal8.ai/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.signal8.ai

# add to Claude Code
claude mcp add --transport http ai-signal8-mcp 'https://mcp.signal8.ai/mcp'
Common questions

What is the Signal8 MCP server?

Signal8 is an MCP server listed in the public MCP registry as ai.signal8/mcp. SEC filings, dilution, insider & institutional ownership, and political-trade data for AI agents. This page covers its hosted endpoint (https://mcp.signal8.ai/mcp).

Is the Signal8 MCP server safe to use?

Signal8 scores 92 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 Signal8 MCP server expose?

Signal8 exposes 113 tools: search_companies, get_company_profile, get_quote, get_market_metrics, get_short_interest, and 108 more. Their descriptions and schemas cost roughly 37,618 tokens of context every time the server is loaded.

Does the Signal8 MCP server require authentication?

Yes. Signal8 asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Signal8 MCP server still maintained?

Signal8 is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the Signal8 MCP server?

VerifyMCP ran 13 checks on Signal8, covering TLS certificate, Authorization, HTTPS, HSTS header and 9 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.