Signal8 MCP vs Vatnode MCP

A side-by-side look at the Signal8 MCP and Vatnode MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Signal8 MCP logoSignal8 MCPFinance & Fintech · Local subprocess (stdio)SEC filing intelligence for AI agents: insider (Form 4) & institutional (13F) ownership, dilution-risk scoring, congressional & executive (STOCK Act) trades, FEC campaign finance, SEC filing search, compliance monitoring, and a dilution-aware stock screener. 86 tools over live Signal8 data.64GoodAuth: api key requiredVatnode MCP logoVatnode MCPFinance & Fintech · Local subprocess (stdio)Official MCP server for EU VAT validation via the EU Commission's VIES service + offline VAT rates for 45 European countries. Five tools: validatevatnumber (live VIES with company name, address, registration date, and optional consultation number for audit), getcountryvatrates, listeuvatrates, checkvatformat, listsupportedcountries. Four of five tools work offline without an API key (data bundled via eu-vat-rates-data). Open source MIT, every release signed with npm provenance via GitHub Actions OIDC. Install: npx -y vatnode-mcp.64GoodAuth: api key required

Verdict: choose Signal8 MCP for finance & fintech work as a local process; choose Vatnode MCP for finance & fintech as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Signal8 MCP logoChoose Signal8 MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: API key required.
  • You have the keys it needs: SIGNAL8_API_KEY.
  • You want tools like search_companies, get_company_profile, get_quote.
Explore Signal8 MCP

Vatnode MCP logoChoose Vatnode MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: API key required.
  • You have the keys it needs: VATNODE_API_KEY, VATNODE_API_URL.
  • You want tools like list_eu_vat_rates, get_country_vat_rates, check_vat_format.
Explore Vatnode MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecSignal8 MCP logoSignal8 MCPVatnode MCP logoVatnode MCP
CategoryFinance & FintechFinance & Fintech
Quality signal64/100 · Good64/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthAPI key requiredAPI key required
PricingBYOK (pay the provider)Freemium
Required env varsSIGNAL8_API_KEYVATNODE_API_KEYVATNODE_API_URL
Verified ownerCommunity listingCommunity listing
GitHub stars12
Directory activity 6 views 0 installs 0 upvotes 2 views 0 installs 0 upvotes
Tools1015

Tools & capabilities

Signal8 MCP tools 101

  • search_companiesSearch 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.
  • get_company_profileGet an enriched company profile by ticker symbol. Returns CIK, exchange, sector, industry, market cap, employee count, description, and other fundamental data. This is a lightweight lookup (1 credit) -- use this when you only need basic company info rather than the full bundle. Always includes halted/haltCode/haltedAt trading-halt status (false/null when trading normally); a halted-but-listed ticker reports delisted:false.
  • get_quoteGet the current stock quote for a company including price, volume, change, market cap, and other real-time market data. Use this when a user asks about a stock's current price or trading activity. Always includes halted/haltCode/haltReason/haltedAt/resumptionAt trading-halt fields (false/null when trading normally); a halted ticker returns the last-known quote instead of an error, or currentPrice:null + halted:true when nothing is recoverable.
  • get_market_metricsGet computed market metrics for a company including volume averages, volatility, SMAs, and trend direction. Use when analyzing trading patterns or technical indicators beyond the basic quote.
  • get_short_interestGet short interest data for a company including short volume, short ratio, days to cover, and short percent of float. Use when analyzing bearish sentiment or potential short squeeze setups.
  • get_floatGet float data for a company: floatShares, source, floatDefinition, and as-of date. Use when analyzing share supply. IMPORTANT: check "floatDefinition" to know which float you are reading — "tradeable" (shares outstanding minus affiliates minus restricted/unregistered blocks: what can actually reach the tape; used on filing-derived dilution-snapshot tickers), "non_affiliate" (the SEC I.B.6 figure, which INCLUDES restricted shares held by non-affiliates — not what a trader means by float), "non_affiliate_estimate" (approximated from ownership filings), or "free_float" (vendor methodology). On snapshot tickers "nonAffiliateFloatShares" carries the SEC I.B.6 figure separately — it is the ONLY correct input to baby-shelf / I.B.6 shelf-capacity math; never use the tradeable float there, and never present the non-affiliate figure as tradeable supply. floatShares:null with "floatWithheldReason" set ("restricted_blocks_unnetted" | "stated_figure_impossible" | "affiliate_basis_stale" | "affiliate_figure_declined") means the figure was deliberately WITHHELD, not unavailable — do not substitute a vendor float. On "affiliate_basis_stale", "affiliateBasis.floatLowerBound" / "floatUpperBound" are a RANGE the float lies in (both ends or neither; null = not measurable) — a range to state, never a number to compute with. "restrictedShares":null means NOT MEASURED (a block exists whose size the filings do not state), NEVER zero; "restrictedBlockCount":0 is an answer, not an absence. "affiliateBasisStale" (with basisSpanDays/affiliateAnchorDate) labels a float whose affiliate table is materially older than its share count — the number itself is unchanged.
  • get_float_historyGet the POINT-IN-TIME float history for a company — one sample per trade date (float shares, shares outstanding, and the source the float came from). Use to answer "what was the float on date X" or to see float expand across a dilution event, which the latest-only get_float cannot show. IMPORTANT: this series is FORWARD-ONLY — it began accumulating in mid-2026 and is NOT backfilled, so early/absent history is expected and an empty rows array is a normal result, not an error or a delisted company. Each row carries "source" ("polygon" | "computed" | "sec_10k" | "fmp") because float quality varies by provider — weigh rows accordingly rather than treating all sources as equal. Charged per your API tier.
  • get_historical_pricesGet historical OHLCV price candles for a stock. Supports daily, weekly, and monthly resolutions. Use period shorthand (1M, 3M, 6M, 1Y, 5Y, ALL) or explicit from/to UNIX timestamps. Default is 1 year of daily candles. Use this to compute price returns, chart price history, or analyze volume trends over time.
  • get_stock_price_changeGet percentage price changes for a stock across multiple timeframes: 1D, 5D, 1M, 3M, 6M, YTD, 1Y, 3Y, 5Y, 10Y, and MAX. Use this for quick "how much is it up/down" answers without fetching full candle data.
  • get_financialsGet income statement, balance sheet, and cash flow data for a company. Supports annual, quarterly, and trailing-twelve-month views. Use when analyzing revenue, profitability, debt, or cash position.
  • get_earningsGet historical earnings data for a company including EPS actual vs estimate, revenue actual vs estimate, and surprise percentages. Use when analyzing earnings beats/misses or upcoming earnings expectations.
  • get_executivesGet key executives and officers of a company including name, title, compensation, and tenure. Use when researching company leadership or management quality.
  • +89 more on the listing page

Vatnode MCP tools 5

  • list_eu_vat_ratesReturns current VAT rates for all EU member states (plus XI for Northern Ireland). Read-only and offline: no network call, no API key, no rate limit, no side effects. Takes no arguments. Output: { rates: Array<{ countryCode, countryName, vatName, vatAbbr, currency, standardRate, reducedRates[], superReducedRate, parkingRate, vatNumberFormat, vatNumberPattern, updatedAt }>, count, updatedAt }. Rates are percentages (e.g. 25.5). Use when the user asks for an overview, a comparison across countries, or "all EU VAT rates". For a single country prefer get_country_vat_rates. Data is sourced from the EU Commission TEDB and updated daily. Free, no API key required.
  • get_country_vat_ratesReturns the standard, reduced, super-reduced and parking VAT rates for a single European country, plus the VAT number format and regex. Read-only and offline: no network call, no API key, no rate limit, no side effects. Accepts ISO 3166-1 alpha-2 codes (DE, FR, IT, …); also covers non-EU European jurisdictions where available (NO, CH, GB, UA, TR, …). Output: { countryCode, countryName, vatName, vatAbbr, currency, standardRate, reducedRates[], superReducedRate, parkingRate, vatNumberFormat, vatNumberPattern, updatedAt }; rates are percentages and may be null where not applicable. Returns an error if the country code is unknown. Use when the user asks "what is the VAT rate in X" or needs the VAT number format for a country. Free, no API key required.
  • check_vat_formatPerforms an offline syntactic check of a VAT number against the country-specific regex pattern. Read-only and offline: no network call, no API key, no rate limit, no side effects. Does NOT verify the VAT with VIES (a valid format does not mean the VAT is real or active) — use validate_vat_number for that. Output: { input, normalized, countryCode, validFormat (boolean), error }; countryCode is null when the prefix is unknown. Use when the user wants a quick sanity check on the shape of a VAT ID without burning a quota call. Free, no API key required.
  • list_supported_countriesReturns every country the vatnode server has VAT data for (EU-27 + XI for Northern Ireland + ~17 other European jurisdictions such as NO, CH, GB, UA, TR). Read-only and offline: no network call, no API key, no rate limit, no side effects. Takes no arguments. Output: { countries: Array<{ countryCode, countryName, isEUMember, viesValidationSupported }>, count, euCount, updatedAt }, sorted by countryCode. `viesValidationSupported: true` means validate_vat_number can do live VIES verification; non-EU jurisdictions are rate-lookup only. Use to discover coverage or to pick a valid countryCode before calling get_country_vat_rates or validate_vat_number.
  • validate_vat_numberVerifies an EU VAT number against the official VIES service and returns validity, company name, address, registration date and other metadata. The audit-grade VIES consultation number (`consultationNumber`) is produced when a requester VAT is configured once in the vatnode dashboard Settings — a one-time account setup, not a per-call parameter. With a requester configured, every response is either a success with a non-null `consultationNumber` or an error; without one, `consultationNumber` is null and national-registry fallback stays enabled. Use whenever the user wants to confirm a VAT is real, look up the company behind a VAT, or needs evidence for accounting/compliance. Side effects: makes an authenticated network call to api.vatnode.dev (which queries the EU VIES service) and consumes one request from your monthly quota; it is read-only (verifies, never mutates) and safe to retry. Requires a vatnode API key (free tier available; set VATNODE_API_KEY). Only EU-27 + XI (Northern Ireland) are supported by VIES; other countries return an error.

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Signal8 MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "signal8ai-signal8-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@signal8ai/mcp"
      ],
      "env": {
        "SIGNAL8_API_KEY": "YOUR_SIGNAL8_API_KEY_HERE"
      }
    }
  }
}

Vatnode MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "vatnode-vatnode-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "vatnode-mcp"
      ],
      "env": {
        "VATNODE_API_KEY": "YOUR_VATNODE_API_KEY_HERE",
        "VATNODE_API_URL": "YOUR_VATNODE_API_URL_HERE"
      }
    }
  }
}

Frequently asked questions

Signal8 MCP is categorized under Finance & Fintech and uses a local stdio subprocess. Vatnode MCP belongs to Finance & Fintech and uses a local stdio subprocess. Pick Signal8 MCP for finance & fintech work and Vatnode MCP for finance & fintech.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Signal8 MCP is bring-your-own-key: usage is billed by the API provider you supply a key for. Auth: api key required. Vatnode MCP is listed as freemium — a free tier with paid plans. Auth: api key required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add signal8ai-signal8-mcp and vatnode-vatnode-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Signal8 MCP has a quality signal of 64/100 (Good) with 6 views, 0 installs and 1 GitHub stars. Vatnode MCP has 64/100 (Good) with 2 views, 0 installs and 2 GitHub stars.