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.

BounceWatch Signal Intelligence

REMOTE · API.BOUNCEWATCH.COM · SCANNED SEP 20

Millions of dated buying and momentum signals: who raised, who's hiring, what changed and when

+4 this week 90 Trust /100
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 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 4136 tokens (~413/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change 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
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Install

How do I install the BounceWatch Signal Intelligence MCP server?

BounceWatch Signal Intelligence is a hosted endpoint at https://api.bouncewatch.com/api/v1/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 · api.bouncewatch.com

# add to Claude Code
claude mcp add --transport http com-bouncewatch-signals 'https://api.bouncewatch.com/api/v1/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "com-bouncewatch-signals": {
      "url": "https://api.bouncewatch.com/api/v1/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-bouncewatch-signals": {
      "type": "http",
      "url": "https://api.bouncewatch.com/api/v1/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.com-bouncewatch-signals]
url = "https://api.bouncewatch.com/api/v1/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-bouncewatch-signals": {
      "type": "remote",
      "url": "https://api.bouncewatch.com/api/v1/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-bouncewatch-signals --url 'https://api.bouncewatch.com/api/v1/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  com-bouncewatch-signals:
    url: "https://api.bouncewatch.com/api/v1/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-bouncewatch-signals": {
      "Transport": "http",
      "Url": "https://api.bouncewatch.com/api/v1/mcp"
    }
  }
}
# add to Vellum
assistant mcp add com-bouncewatch-signals -t streamable-http -u 'https://api.bouncewatch.com/api/v1/mcp'
// mcp.json
{
  "mcpServers": {
    "com-bouncewatch-signals": {
      "type": "http",
      "url": "https://api.bouncewatch.com/api/v1/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

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.

  • 20 Sept 26 +1
    • Stability: 0.97 → pass security
  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 5 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

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 20 Sept 2026 · Probed https://api.bouncewatch.com/api/v1/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=bouncewatch.com CN=WE1,O=Google Trust Services,C=US 1 Aug 2026 31 Oct 2026 ECDSA 256 ECDSA-SHA256 e758655e20f0d2213cf2bf12dd5ec9d
SANs: bouncewatch.com, *.bouncewatch.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of api.bouncewatch.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
bouncewatch.com. absent 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 realm="BounceWatch MCP", resource_metadata="https://api.bouncewatch.com/api/v1/.well-known/oauth-protected-resource"

Bearer realm="BounceWatch MCP", resource_metadata="https://api.bouncewatch.com/api/v1/.well-known/oauth-protected-resource"
Header Value
x-content-type-options nosniff
x-frame-options SAMEORIGIN
referrer-policy same-origin

Protected resource metadata

Document https://api.bouncewatch.com/api/v1/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://api.bouncewatch.com/api/v1/mcp
Authorisation server https://api.bouncewatch.com

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

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://api.bouncewatch.com/api/v1/mcp Verified 200
http (plaintext) http://api.bouncewatch.com/api/v1/mcp HTTPS enforced 301 https://api.bouncewatch.com/api/v1/mcp
MCP tools · 10 exposed · ~3,966 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
check_watches ~358

Returns what has happened at the companies THIS KEY ALREADY WATCHES, since the last time you asked. This is a personal inbox, not a view of the index. Use it when the question is about continuity — "anything new since last time", "what did I miss", "what fired on my watchlist". If the question is what is happening at companies generally — latest signals, who raised, who is hiring, anything about the market or a company not already watched — that is search_signals, and this tool cannot answer it. Do not open a session with this call. Answer what was actually asked first; reach for this when the user's question is about their own watches. Each event is handed over once: collecting it marks it seen, so the next call returns only what is new. Pass include_acknowledged to re-read ones you already collected. An empty result means nothing matched YOUR watches. It is not a statement about the market, and if you hold no watches it says nothing at all — the response reports how many you have so the two cases can be told apart. The response also lists your active watches, so this is the only call needed to see both what fired and what is armed. Cost: free — call it as often as you need.

NameTypeReqDescription
domainstringOnly events for this watched domain.
include_acknowledgedbooleanAlso return events already collected, and do not acknowledge anything on this call. Use when you lost context and need to re-read. Default false.
limitintegerMax events to return. Default 25, max 100. Anything beyond the limit stays queued for the next call.

No output schema declared.

No examples provided.

find_company ~306

Finds a company in the BounceWatch index by name, and returns its domain — which is what every other company tool needs. Use this whenever you have a company's NAME rather than its domain. Do not guess the domain: a wrong guess comes back as "not indexed" for a company we actually hold, and sends you on to spend a scan on a domain nobody checked. Returns up to a handful of candidates with just enough to tell them apart — country, founding year, headcount, and when we last saw a signal. It never picks for you: names are ambiguous and you have the context that decides. If several look plausible, say so rather than choosing silently. Once you have picked, get_company returns the full profile. An empty result means no company by that name is in our index. It is not a statement about whether the company exists. If you know its domain, refresh_company indexes it. Cost: 3 credits per call. Failed calls are not charged.

NameTypeReqDescription
countrystringISO 3166-1 alpha-2 code of the company HQ, e.g. "NL". Narrows an ambiguous name; a code that matches nothing is rejected rather than silently ignored.
limitintegerMax candidates to return. Default 5, max 10.
namestringyesCompany name to look for, e.g. "Silk and Cashmere". A domain is also accepted and resolved directly.

No output schema declared.

No examples provided.

get_company ~188

Firmographic profile of one company from the BounceWatch index: identity, location, headcount, funding history, tech stack, team and competitors. Returns what we currently hold — it never triggers a scan on its own. `coverage` says what monitoring this company is under; if it is not being followed continuously and the answer depends on facts being current, call refresh_company explicitly. For what has been HAPPENING at a company rather than what it IS, use get_company_signals. Cost: 10 credits per call at minimum, rising with the extra data you request. Failed calls are not charged.

NameTypeReqDescription
domainstringyesCompany domain, e.g. "stripe.com". URLs are accepted and normalised.
includearrayOptional enrichment modules: business, technology, funding, team, competitors. Each adds credits — request only what you will use.

No output schema declared.

No examples provided.

get_company_signals ~304

Returns the dated signal timeline for one company: funding, hiring, partnerships, expansion, product launches, leadership changes and risk events. Use this when you already know which company you care about and need to know what has been happening and when. To find companies by signal instead, use search_signals. categories and signal_keys widen each other rather than narrowing to the overlap: a category adds all of its keys to whatever signal_keys already lists. Read `coverage` before drawing conclusions. If `coverage.signal_absence_is_meaningful` is false, an empty or thin result reflects our scanning gap, not the company — say so rather than reporting the company as quiet. Cost: 8 credits per call. Failed calls are not charged.

NameTypeReqDescription
categoriesarrayRestrict to signal categories (funding, hiring, business, product, growth, event, milestone, risk). Call get_signal_taxonomy for the list.
daysintegerLookback window in days. Default 90, max 365.
domainstringyesCompany domain, e.g. "stripe.com". URLs are accepted and normalised.
limitintegerMax signals to return, newest first. Default 50, max 100.
signal_keysarrayRestrict to exact signal keys, e.g. ["recently_funded","key_hire_announced"]. Unrecognised keys are rejected rather than silently ignored.

No output schema declared.

No examples provided.

get_refresh_status ~364

Checks a scan queued by refresh_company, and WAITS for it. This call blocks until the scan is done or `wait_seconds` runs out, so you do not have to idle between polls — just call it again if it comes back unfinished. A typical scan needs two or three calls at the default wait. Read `is_finished`, not `status`. A scan reaches `completed` when its jobs report back, but the signal analysis they started is still writing rows for a few seconds after that — read too early and you get the pre-scan picture with a completed stamp on it. `status` becomes `settling` for that window and `is_finished` stays false until the writes stop. Do not answer from the old data while a scan you asked for is unfinished: you requested it because the existing figures were too stale to rely on, and they have not changed yet. Either wait for it, or say plainly that a refresh is in flight. When it finishes, `signals_added` says how many new signals the scan actually produced — zero is a real answer and means we looked and found nothing new, not that the scan failed. Then read the data with get_company or get_company_signals; this tool returns progress, not company data. Cost: free — call it as often as you need.

NameTypeReqDescription
batch_idstringyesThe batch_id returned by refresh_company.
wait_secondsintegerHow long this call may block waiting for the scan, 0-25. Default 20. It returns the moment the scan finishes, and waiting the full 25 costs exactly what waiting 1 costs — so there is nothing to gain…

No output schema declared.

No examples provided.

get_signal_taxonomy ~178

Lists every signal type BounceWatch detects, grouped by category, with what each one means and whether it is an announcement or an unconfirmed inference. It also returns `coverage`, which says which categories produce steadily and which are rare by nature. Read it before designing a search: the rarest signals are the highest-value ones — funding, acquisitions, shutdowns — and searching a window for them usually returns almost nothing, because that is how often they happen. Those are caught with watch_company, not with a query. Call this before filtering by signal type in search_signals or get_company_signals: filters are matched exactly, and an unrecognised key returns nothing rather than an error. The answer is stable, so once per session is enough. Cost: free — call it as often as you need.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

refresh_company ~373

Queues a fresh scan of one company and returns a batch id to poll with get_refresh_status. Works for companies already in the index and for domains we have never seen, which is how you add one. A scan only refreshes what you ask for, and each module reads a different source. Anything you leave out keeps the date it already had, so pick by the fact you need: signals recent events and announcements (default) funding rounds, investors, valuations (default) team headcount, leadership, open roles technology tech stack business positioning, model, target market competitors similar companies The default is signals + funding, because those are the two that go out of date fastest and the two most answers turn on. Pass modules explicitly to go cheaper — `["signals"]` alone is the least you can usefully scan. This spends credits and real scanning budget, so call it deliberately: when `coverage` on a previous answer showed stale data AND the decision depends on current facts. Do not call it speculatively across a list of candidates. Returns in a second or two; the scan itself typically takes 60-180 seconds. Poll get_refresh_status (free) until it reports finished, then re-read the data with get_company or get_company_signals. Cost: 36 credits per call at minimum, rising with the extra data you request. Failed calls are not charged.

NameTypeReqDescription
domainstringyesCompany domain, e.g. "stripe.com". URLs are accepted and normalised.
modulesarrayWhat to refresh: business, technology, funding, team, signals, competitors. Each adds credits. Defaults to signals only, which is the cheapest useful scan.

No output schema declared.

No examples provided.

search_companies ~549

Finds companies by firmographics — country, headcount, funding stage — within the set BounceWatch actively observes, most recently refreshed first. By default it returns only companies we have observed in the last 90 days, so the firmographics you get are backed by recent observation rather than a record we last touched years ago. Each result reports its signal activity, so you can tell a closely-watched company from a thinly-covered one. If you want companies selected by what HAPPENED to them rather than by what they ARE — recently funded, hiring, expanding — use search_signals instead. That is the stronger discovery path and usually the one you want. Cost: 5 credits per call. Failed calls are not charged.

NameTypeReqDescription
countrystringISO 3166-1 alpha-2 country code of the company HQ, e.g. "NL", "DE", "US".
founded_afterintegerOnly companies founded in or after this year, e.g. 2023. Companies whose founding year we do not hold are excluded when this is set, and the result says so.
founded_beforeintegerOnly companies founded in or before this year. Same exclusion of unknown founding years as founded_after.
funding_stagestringFunding stage, e.g. "Seed", "Series A", "Pre Seed". Spacing, case and hyphens are normalised; a value that matches nothing is rejected with the valid list rather than returning a near-empty result. T…
limitintegerMax companies to return. Default 20, max 50.
max_employeesintegerMaximum headcount. Same exclusion of unknown headcounts as min_employees.
min_employeesintegerMinimum headcount. Companies whose headcount we do not hold are excluded when this is set — same rule as founded_after, and for the same reason: not knowing a number is not evidence it falls outside…
observed_within_daysintegerOnly companies we observed within this many days, 30-365. Default 90. Widening it grows the result set but lowers confidence in the firmographics, because the record is older. There is no way to swit…

No output schema declared.

No examples provided.

search_signals ~865

The latest signals across the whole index: which companies did something recently, what it was, and when. This is the tool for ANY question about what is happening. "Show me the latest signals", "what's new", "which companies raised a round and are now hiring sales in the Netherlands", "who announced expansion in the last two weeks", "which of my target segment just made a key hire". Returns matching companies with the signals that matched and their dates. Reach for this first. check_watches only reports on companies already being watched by this key and cannot answer a question about the market or about a company that is not on that list. Filter by signal type, category, recency, country, headcount and funding stage. Call get_signal_taxonomy first if you are unsure which signal keys exist — unrecognised keys are rejected rather than quietly returning nothing. The two signal filters WIDEN each other rather than narrowing to the overlap: a category adds all of its keys to whatever signal_keys already lists. min_weight then cuts what is left, so a low-weight signal type named alongside a floor above its own weight returns nothing rather than one of the two being quietly ignored. `coverage` is working material for you, not for the answer: it bounds what this search could have found. Let it shape what you claim, and offer a narrower search rather than reporting figures about our index. Cost: 12 credits per call. Failed calls are not charged.

NameTypeReqDescription
categoriesarraySignal categories to match: funding, hiring, business, product, growth, event, milestone, risk.
countrystringISO 3166-1 alpha-2 country code of the company HQ, e.g. "NL", "DE", "US".
daysintegerLookback window in days. Default 30. Max 365. Shorter windows mean sharper timing.
founded_afterintegerOnly companies founded in or after this year, e.g. 2023. Companies whose founding year we do not hold are excluded when this is set, and the result says so.
founded_beforeintegerOnly companies founded in or before this year. Same exclusion of unknown founding years as founded_after.
funding_stagestringFunding stage, e.g. "Seed", "Series A", "Pre Seed". Spacing, case and hyphens are normalised; a value that matches nothing is rejected with the valid list rather than returning a near-empty result. T…
limitintegerMax companies to return. Default 25, max 100.
max_employeesintegerMaximum headcount. Same exclusion of unknown headcounts as min_employees.
min_employeesintegerMinimum headcount. Companies whose headcount we do not hold are excluded when this is set — not knowing a number is not evidence it falls outside the range.
min_weightintegerOnly count signals worth at least this much, 1-10. Background chatter (event attendance, news mentions, follower drift) sits at 1-2 and dominates an unfiltered result; 3 or 4 searches on substance an…
require_all_keysbooleanWhen true, only return companies showing EVERY requested signal key in the window (signal stacking) rather than any of them. Default false.
signal_keysarraySignal types to match, e.g. ["recently_funded","key_hire_announced"]. See get_signal_taxonomy.
sortstringmost_recent (default) ranks by newest matching signal; most_active by how many matched.

No output schema declared.

No examples provided.

watch_company ~481

Registers a standing watch on one company, so you find out what happened there without asking again. This is the only tool that persists between sessions. A watched company is kept under continuous monitoring — we keep looking at it for as long as the watch is active, rather than waiting for someone to ask about it. Matching signals are queued for you and collected with check_watches (free). If this API key has a webhook URL configured, set deliver_webhook to also have them pushed to it as they land — that is what lets a hosted agent be woken rather than having to poll. Narrow it. A watch with no filters delivers everything, including the background chatter that makes a feed unreadable: pass signal_keys for the events you care about, or min_weight to set a floor on how much a signal has to matter. Given both, a signal has to clear both — a named key that sits below the floor never fires. Call again with the same domain to change the filters, or with stop:true to end the watch. Watching a domain we have not indexed is allowed, but nothing will fire until it is — refresh_company indexes it. Cost: 5 credits per call. Failed calls are not charged.

NameTypeReqDescription
deliver_webhookbooleanAlso push matches to this key's configured webhook URL. Default false. Events are queued for check_watches either way.
domainstringyesCompany domain, e.g. "stripe.com". URLs are accepted and normalised.
labelstringYour own note for this watch, e.g. "Q3 pipeline". Returned with every event so you can route it without a second lookup.
min_weightintegerFloor on how much a signal has to matter, 1-10. Roughly: 8+ funding and leadership changes, 5+ hiring and expansion, below 4 background noise. Signals we do not weight never clear a floor.
signal_keysarrayOnly these signal types wake you. Omit for all of them. Values come from get_signal_taxonomy; an unrecognised key is rejected with the valid list rather than creating a watch that silently matches no…
stopbooleanEnds the watch on this domain. Already-queued events stay collectable.

No output schema declared.

No examples provided.

Common questions

What is the BounceWatch Signal Intelligence MCP server?

BounceWatch Signal Intelligence is an MCP server listed in the public MCP registry as com.bouncewatch/signals. Millions of dated buying and momentum signals: who raised, who's hiring, what changed and when. This page covers its hosted endpoint (https://api.bouncewatch.com/api/v1/mcp).

Is the BounceWatch Signal Intelligence MCP server safe to use?

BounceWatch Signal Intelligence scores 90 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 BounceWatch Signal Intelligence MCP server expose?

BounceWatch Signal Intelligence exposes 10 tools: search_signals, search_companies, find_company, get_company, get_company_signals, and 5 more. Their descriptions and schemas cost roughly 3,966 tokens of context every time the server is loaded.

Does the BounceWatch Signal Intelligence MCP server require authentication?

Yes. BounceWatch Signal Intelligence 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 BounceWatch Signal Intelligence MCP server still maintained?

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