Signal8
NPM · @SIGNAL8AI/MCP · 2 COMPONENTS
SEC filings, dilution, insider & institutional ownership, and political-trade data for AI agents.
Available components
Last scanned (17 hours ago)
Scores higher than 65% of npm servers
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 39 of 120 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 16 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability76
- 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 37409 tokens (~340/item across 110 items; 108 tools + 2 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
- 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 108 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 110 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
Checks we ran (15)
- Malware scan
- Known CVEs
- Install scripts
- Dependency health
- Source repository
- Provenance
- License
- Maintenance
- Schema quality
- Stability
- Tool coverage
- Injection markers
- Destructive annotations
- Judged manipulation
- MCP protocol
Checks we could not complete (1)
These are gaps on our side, not findings about this package. We only credit what we can confirm, so a category made up entirely of them scores 0.
- Security disclosure in Provenance & TransparencySecurity-disclosure policy not yet verified: we couldn't inspect the source repository.
Does not apply to this package (2)
- Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
- Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
The score does not measure everything. What the score does not measure →
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 −4
- Stability: pass → 0.70 functional
- 4 Nov 26 0
- Security disclosure: fail → unverified ▼ functional
- 30 Oct 26 0
- Stability: 0.97 → pass security
- 29 Oct 26 0
- Stability: pass → 0.97 functional
- 19 Oct 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.18.1 → 0.19.0 functional
- 17 Oct 26 0
- Stability: 0.97 → pass security
- 16 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Oct 26 +45
- Injection markers: unverified → pass ▲ security
- Schema quality: 224 → 324 ▼ functional
- Schema quality: 224 → 315 ▼ functional
- Schema quality: unverified → 100 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Stability: unverified → 0.93 ▲ functional
- Package version: 0.16.1 → 0.18.1 functional
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 · Analysed npm/@signal8ai/mcp@0.19.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | npm |
Background: How many MCP packages publish verified provenance →
Dependencies 120 packages
| Packages resolved | 120 |
|---|---|
| Stale | 39 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
screen_sec_filings Screen SEC Filings ~746
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. Use this to answer questions like "find all S-1 filings from biotech companies under $500M market cap" or "show me recent 8-K filings from Technology sector companies". This is the most powerful filing DISCOVERY tool for filings — use search_sec_filings only when you already know the specific CIK. This tool returns FILINGS, not a company universe: to enumerate or COUNT companies by market cap / price / float (e.g. "find all companies under $300M market cap"), use screen_companies instead — it supports minMarketCapComputed / maxMarketCapComputed and returns a real total COUNT. Searches only the 500 largest matching companies by market cap (narrow the filters to reach smaller ones); for float, price, company-type, foreign-issuer or recent-IPO filters, full-text queries, or 8-K item codes, use search_sec_filings with its company filters. Coverage: Signal8's archive of SEC EDGAR filings in the archive's held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in), updated through the day. The archive only holds filings from its `archiveFrom` date; before that it holds only a scatter (well under 1% of most years), so ABSENCE BEFORE archiveFrom IS NOT EVIDENCE a filing was never filed — check SEC EDGAR for earlier periods. Some rows are record-only (bodyStored: false — metadata from the EDGAR index with no document body), so their text cannot be read here; open them at their sec.gov URL.
| Name | Type | Req | Description |
|---|---|---|---|
| dateFrom | string | – | Start date filter (YYYY-MM-DD) |
| dateTo | string | – | End date filter (YYYY-MM-DD) |
| exchange | string | – | Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX") |
| formTypes | string | – | Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5") |
| industry | string | – | Filter by industry (e.g., "Biotechnology", "Software - Application", "Oil & Gas E&P") |
| maxMarketCap | number | – | Maximum market cap in USD (e.g., 500000000 for $500M) |
| minMarketCap | number | – | Minimum market cap in USD (e.g., 1000000000 for $1B) |
| page | number | – | Page number (1-indexed, default: 1) |
| pageSize | number | – | Results per page (default: 25, max: 100) |
| sector | string | – | Filter by sector (e.g., "Healthcare", "Technology", "Financial Services", "Energy") |
| sortBy | string | – | 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. |
| sortOrder | string | – | 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
screen_sec_filings_performance Screen SEC Filings Performance ~376
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, plus aggregate statistics (average, median, % negative, best, worst) across all matching filings. Combine company-level filters (sector, industry, market cap, exchange) with filing filters (form type, date range). Use this to answer questions like "how do biotech stocks perform after S-1 filings?" or "what is the average 7-day return after 8-K filings from companies under $500M market cap?".
| Name | Type | Req | Description |
|---|---|---|---|
| dateFrom | string | – | Start date filter (YYYY-MM-DD) |
| dateTo | string | – | End date filter (YYYY-MM-DD) |
| exchange | string | – | Filter by exchange (e.g., "NASDAQ", "NYSE", "AMEX") |
| formTypes | string | – | Comma-separated form types (e.g., "S-1", "10-K,10-Q", "8-K", "S-3,424B5") |
| industry | string | – | Filter by industry (e.g., "Biotechnology", "Software - Application") |
| maxMarketCap | number | – | Maximum market cap in USD |
| minMarketCap | number | – | Minimum market cap in USD |
| page | number | – | Page number (1-indexed, default: 1) |
| pageSize | number | – | Results per page (default: 25, max: 100) |
| sector | string | – | Filter by sector (e.g., "Healthcare", "Technology", "Financial Services") |
| sortBy | string | – | Sort results by field (default: filing_date) |
| sortOrder | string | – | Sort direction (default: desc) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_clinical_trials Search Clinical Trials ~200
Search clinical trials market-wide (cross-company). Distinct from get_clinical_trials, which is scoped to a single ticker. Filter by phase, indication, sponsor, status, and date window; sort and paginate the results.
| Name | Type | Req | Description |
|---|---|---|---|
| dateField | string | – | Date field to filter/sort on |
| from | string | – | Start date (YYYY-MM-DD) |
| indication | string | – | Condition / indication filter |
| limit | number | – | Maximum results to return (1-100, default: 50) |
| offset | number | – | Offset for pagination (default: 0) |
| order | string | – | Sort direction |
| phase | string | – | Trial phase filter (e.g., "Phase 3") |
| sort | string | – | Sort field |
| sponsor | string | – | Sponsor name filter |
| status | string | – | Trial status filter |
| to | string | – | End date (YYYY-MM-DD) |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_companies Search Companies ~99
Search for companies by name or ticker symbol in the Signal8 database. Returns matching companies with their ticker, name, CIK, and exchange. Use this as the first step to find a company before calling other tools.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum results to return (default: 10, max: 50) |
| query | string | yes | Search query - company name or ticker symbol (e.g., "Tesla", "TSLA") |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_filing_text Search Filing Text ~1,260
Full-text search across SEC filing content that returns the MATCHING PASSAGE: one match per filing, each with the exhibit it was found in (`exhibit_id`, `exhibit_type`) and the snippet with context. Query syntax: unquoted words must ALL 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. Unquoted words match anywhere in the filing, so quote multi-word phrases. When the archive states how it read the query it is in meta.understanding. Best for locating specific clauses ("change of control", "anti-dilution", "right of first refusal") and for getting the excerpt for a known filing (pass accessionNumber or filingId). Use search_sec_filings with `q` instead when you need filing-level paging (cursor), totals, date ranges, 8-K item codes, excluded forms, or company filters. Optionally filter by company (CIK), filing, accession number, or form type, restrict matching to sections (section=risk_factors, mdna, ex99 …; confirmed by meta.sections, otherwise meta.unsupported says the whole filing was searched) and filter by exhibit type (exhibitTypes=EX-10). Coverage: Signal8's archive of SEC EDGAR filings in the archive's held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in), updated through the day. The archive only holds filings from its `archiveFrom` date; before that it holds only a scatter (well under 1% of most years), so ABSENCE BEFORE archiveFrom IS NOT EVIDENCE a filing was never filed — check SEC EDGAR for earlier periods. Some rows are record-only (bodyStored: false — metadata from the ED…
| Name | Type | Req | Description |
|---|---|---|---|
| accessionNumber | string | – | Filter to a specific filing by SEC accession number |
| cik | string | – | Filter to a specific company by CIK number |
| exhibitTypes | string | – | Keep 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 t… |
| facets | boolean | – | true = also return `facets` { forms, years, items } — [{ value, count }] over the whole match set. Absent when not measured (never zero). Default false. |
| filingId | string | – | Filter to a specific filing by internal ID |
| formType | string | – | Filter by form type (e.g., "10-K", "S-1") |
| limit | number | – | Max results (default: 20, max: 100) |
| match | string | – | Word matching. exact = a word matches only itself ("split" does NOT match "splits") — EDGAR full-text search's behaviour; stemmed = English word variations also match. Default when omitted: stemmed.… |
| matchedSections | boolean | – | Per-row `matchedSections` (default true): the sections the text matched in. ABSENT on a row means not measured (index without sections), never "matched nowhere". |
| pattern | string | yes | Search 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… |
| section | string | – | Restrict 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… |
| snippetLength | number | – | Characters of context around each match (default: 200) |
| sort | string | – | Result order: newest (default) or relevance (best match first) |
| understand | boolean | – | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_institutions Search Institutions by Name ~144
Search institutional investors (13F filers) by name. Returns matching institutions with CIK, name, AUM, holdings count, and latest filing period. Use this to find a specific fund or investment manager when you know part of their name (e.g., "Vanguard", "BlackRock", "Citadel"). Results are ranked by AUM descending.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | number | – | Maximum results to return (default: 25, max: 100) |
| offset | number | – | Offset for pagination (default: 0) |
| q | string | yes | Search term (min 2 characters, e.g., "Vanguard", "BlackRock") |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_learn_guides Search Signal8 Academy Guides ~383
Search the free 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 to use Signal8. Returns matching guides with title, description, track, section, reading time, lastVerified date, the public url and the signal8:// resource uri — no bodies; call get_learn_guide for the full Markdown. 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. Use this to ground an explanation of a concept the user asked about, or to cite a guide alongside data from the dilution / filing tools. Works without an API key. An empty result means no guide matched the words given — try fewer or broader words (e.g. "warrant" rather than "warrant inducement repricing") — not that the topic is unimportant.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum guides to return (1-50, default 10). |
| query | string | – | Words to search for, e.g. "baby shelf", "form 4", "reverse split". Empty string lists every guide. |
| track | string | – | Optional. Restrict to one Academy track: "dilution" (dilution & toxic financing), "filings" (reading SEC filings), "market-structure" (halts, short interest, float, splits, congressional trading), or… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
search_sec_filings Search SEC Filings ~2,961
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 optionally by COMPANY FACTS (market cap, float, price, sector, industry, exchange, company type, foreign issuer, recent IPO). Returns rows with `id` (the filingId for get_filing_document / get_filing_exhibits), cik, company_name, accession_number, form_type, filing_date, acceptedAt, primaryDocument, bodyStored and itemNumbers, plus `pagination` with `total`, `totalRelation` ("eq" exact; "gte" a lower bound when the count was cut at 10,000 — then `totalEstimate`, when present, is "about N"), `hasMore` and `nextCursor`. With `q`, unfiltered rows also carry `rank` and a `snippet`. Coverage: Signal8's archive of SEC EDGAR filings in the archive's held range (see `archiveFrom` in each response; currently from late 2021, expanding back to 2016 as the history backfill fills in), updated through the day. The archive only holds filings from its `archiveFrom` date; before that it holds only a scatter (well under 1% of most years), so ABSENCE BEFORE archiveFrom IS NOT EVIDENCE a filing was never filed — check SEC EDGAR for earlier periods. Some rows are record-only (bodyStored: false — metadata from the EDGAR index with no document body), so their text cannot be read here; open them at their sec.gov URL. Full-text `q`: Query syntax: unquoted words must ALL 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. The archive's reading of the query (tickers/companies, forms, items, years, synonym expansions such as buyba…
| Name | Type | Req | Description |
|---|---|---|---|
| ciks | string | – | Comma-separated CIK numbers to filter by (e.g., "320193,1018724"; zero-padded also accepted) |
| companyTypes | string | – | 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) |
| cursor | string | – | Opaque keyset cursor from a previous response's pagination.nextCursor. Prefer it over page for deep paging — it is stable while new filings arrive. Required for page 2+ of a company-filtered search. |
| dateFrom | string | – | 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… |
| dateTo | string | – | End filing date (YYYY-MM-DD) |
| exchanges | string | – | COMPANY FILTER. Comma-separated listing venues: NASDAQ, NYSE, AMEX (= NYSE American), OTC |
| excludeForms | string | – | Comma-separated form types to EXCLUDE (e.g., "4,13F-HR"). Exact match. |
| exhibitTypes | string | – | Keep 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 t… |
| facets | boolean | – | 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… |
| foreignIssuer | boolean | – | 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) |
| formTypes | string | – | Comma-separated form types (e.g., "10-K,10-Q,8-K,S-1,S-3,424B5"). Exact match — list amendments (e.g. "10-K/A") explicitly. (With company filters, amendments are added automatically.) |
| industries | string | – | COMPANY FILTER. Industry names separated by "|", exact and case-sensitive (e.g. "Biotechnology|Airlines, Airports & Air Services" — some names contain ", ", so prefer "|"; a bare comma with no space… |
| items | string | – | 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). |
| match | string | – | Word matching for q. exact = a word matches only itself ("split" does NOT match "splits" or "splitting") — EDGAR full-text search's own behaviour; stemmed = English word variations also match. Defaul… |
| matchedSections | boolean | – | Per-row `matchedSections` (default true): the sections the text matched in. ABSENT on a row means not measured (index without sections), never "matched nowhere". Ignored without q. |
| maxFloat | number | – | COMPANY FILTER. Maximum public float, in SHARES |
| maxMarketCap | number | – | COMPANY FILTER. Maximum market cap in USD, e.g. 300000000 for under $300M |
| maxPrice | number | – | COMPANY FILTER. Maximum latest share price in USD |
| minFloat | number | – | COMPANY FILTER. Minimum public float, in SHARES |
| minMarketCap | number | – | COMPANY FILTER. Minimum market cap in USD (price × shares outstanding), e.g. 50000000 for $50M |
| minPrice | number | – | COMPANY FILTER. Minimum latest share price in USD |
| page | number | – | Page number (1-indexed, default: 1). Ignored when cursor is set; not allowed with company filters. |
| pageSize | number | – | Results per page (default: 25, max: 100) |
| q | string | – | Full-text query over filing bodies. Query syntax: unquoted words must ALL appear (any order, any distance); "quoted phrase" = exact wording; OR between alternatives (merger OR acquisition); -word or… |
| recentIpo | boolean | – | 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. |
| section | string | – | Restrict 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… |
| sectors | string | – | 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. |
| sort | string | – | newest (by acceptance time, default) or relevance (requires q; best match first) |
| understand | boolean | – | 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… |
| Name | Type | Req | Description |
|---|---|---|---|
| data | – | – | – |
No examples provided.
How do I install the Signal8 MCP server?
Signal8 runs locally as an npm package, launched with npx -y @signal8ai/mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · @signal8ai/mcp
claude mcp add ai-signal8-mcp -- npx -y @signal8ai/mcp
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 npm package (@signal8ai/mcp).
Is the Signal8 MCP server safe to use?
Signal8 scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. 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 108 tools: search_companies, get_company_profile, get_quote, get_market_metrics, get_short_interest, and 103 more. Their descriptions and schemas cost roughly 36,895 tokens of context every time the server is loaded.
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 licence is the Signal8 MCP server under?
Signal8 declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.
What did VerifyMCP test on the Signal8 MCP server?
VerifyMCP ran 15 checks on Signal8, covering Malware scan, Known CVEs, Install scripts, Dependency health and 11 more. One item could not be completed, a gap on our side rather than a finding about Signal8: Security disclosure. Endpoint Security and Transport & Reachability do not apply to an npm package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.