# FlowVolt (remote · flowvolt-strike-engine.vercel.app)

Cold engine for B2B founders. Detects buying signals, drafts outreach, books qualified meetings.

- Trust score: 25/100 (low)
- Change this week: −35
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `flowvolt-strike-engine.vercel.app`: 25/100 (this document), [markdown](https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine.md), [page](https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine)

## Channel facts

- Endpoint: `https://flowvolt-strike-engine.vercel.app/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 0/100
  - Transport check failed: declared streamable-http, but the endpoint returned HTTP 404.
- **Schema Quality & AI Usability**: 0/100
  - Schema not yet verified: we couldn't read the endpoint's schema.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 0/100
  - Tool coverage not yet verified: we couldn't read the endpoint's tools.
- **Capabilities**: 0/100
  - Capabilities not yet verified: we couldn't read the endpoint's capabilities.

**Unverified: 4 categories.** Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add --transport http larshiensch99-flowvolt https://flowvolt-strike-engine.vercel.app/mcp
```

### Codex

```toml
[mcp_servers.larshiensch99-flowvolt]
url = "https://flowvolt-strike-engine.vercel.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "larshiensch99-flowvolt": {
      "type": "remote",
      "url": "https://flowvolt-strike-engine.vercel.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add larshiensch99-flowvolt --url https://flowvolt-strike-engine.vercel.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  larshiensch99-flowvolt:
    url: "https://flowvolt-strike-engine.vercel.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "larshiensch99-flowvolt": {
      "type": "http",
      "url": "https://flowvolt-strike-engine.vercel.app/mcp"
    }
  }
}
```

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

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-07-31 (score 25, +9)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 16, −45)

- [security regression] Endpoint reachability: reachable → not serving MCP
- [security regression] Stability: 0.10 → unverified
- [security regression] Transport: pass → fail
- [security] Authorization: Authorisation not fully verified: no authorisation is required to connect, but we couldn't read the tool list to see what that exposes.
- [functional regression] Capabilities: fail → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

### 2026-07-29 (score 61, +1)

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

### 2026-07-27 (score 60, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 59)

First indexed and scored.

## MCP tools (23)

### `get_started` (~149 tokens)

Call this the moment the user connects FlowVolt OR asks anything that means 'what is this'. Pass `name` (their first name if you know it from the conversation context, otherwise leave blank) and `company` (their business name if known or mentioned). Returns a warm explainer in plain language: what FlowVolt does, why it works (signal-based targeting, always learning), what the buyers/pipeline/reply-rate vocabulary means, and the six pricing options. Offers either a 5-question discovery to tailor the plan or a direct quote.

Input parameters:

- `company` (string): The user's business name if known. Optional.
- `name` (string): The user's first name if known. Optional.

### `discover_business` (~198 tokens)

Tailor FlowVolt to the user's specific business via a 5-question intake. Call this when the user wants a custom plan rather than a generic quote, or when they're unsure which plan fits. Pass any answers the user has already given so far in `answers`. The tool returns the NEXT unanswered question OR the final tailored plan when all 5 are filled. Question 1 is what their business does, Q2 is their ideal customer, Q3 is the outcome they want (meeting, demo, free trial signup, paid conversion, contract), Q4 is what that outcome is worth, Q5 is their current outbound. The final response includes the right plan recommendation, real ROI math from their numbers, and a sample message in their voice. Always sequential and warm, never a form dump.

Input parameters:

- `answers` (object)
- `company` (string): Business name if known.
- `name` (string): User's first name if known.

### `quote` (~119 tokens)

Direct quote path. Use when the user already knows who they want to reach and just asks for pricing or to find leads. Takes a natural-language description and returns six plans in plain prose. For users who haven't expressed their ICP yet, prefer discover_business which tailors the response. Pass `name` and `company` if you know them.

Input parameters:

- `company` (string): Business name if known.
- `name` (string): User's first name if known.
- `use_case` (string, required): Natural language description of the customers the user wants to reach.

### `calculate_payback` (~157 tokens)

Show the math. Call this whenever the user expresses doubt about pricing OR shares their deal value and close rate. Returns expected revenue per month for each plan given the user's numbers, plus a worst-case scenario at half the meeting targets. Always positive and grounded in their own numbers, never our hype.

Input parameters:

- `close_rate_meeting_to_customer` (number, required): Fraction of meetings (or signups) that turn into a paying customer. 0.30 for 30 percent.
- `deal_value_usd` (number, required): What one closed customer is worth in dollars. LTV for SaaS, deal value for sales-led.
- `plan` (string): Which plan to math. Default 'all' returns math for solo + pro + scale.

### `find_leads` (~141 tokens)

Deliver in-market buyers. Sync, 30 to 60 seconds. For free_trial quote_ids, returns up to 15 buyers free. For topup quote_ids, returns a Stripe Checkout URL on first call (no payment yet); after the user pays, retry with the same quote_id to deliver 25 verified buyers. Each buyer comes with name, work email, LinkedIn URL, company, the buying signal with source URL, and a sample personalized message.

Input parameters:

- `email` (string): Optional. The user's work email.
- `quote_id` (string, required): A quote_id returned by quote() or discover_business(). Must be free_trial or topup.

### `subscribe` (~102 tokens)

Start a monthly plan. Takes a quote_id from quote() or discover_business() with plan=solo, pro, or scale. Returns a Stripe Checkout URL the user opens in their browser. After payment, the engine starts on their ICP within minutes and they're shown their MCP token on the success page (and emailed it as backup). Month one is on us if zero meetings.

Input parameters:

- `quote_id` (string, required): A quote_id with plan=solo, pro, or scale.

### `flowvolt_freetrial` (~155 tokens)

Free trial of the FlowVolt engine. Takes three short answers (what you sell, who you target, the offer hook) and returns 5 real ICP-matched buyers, each with name, work email, fit-score, and a personalized cold-mail draft. No card. Anonymous. The drafts are NOT sent. To dispatch them, complete the subscription via the returned Stripe checkout URL and then call flowvolt_send_trial with the session_id.

Input parameters:

- `offer` (string, required): Your hook or value proposition. One sentence. Max 500 chars.
- `sells` (string, required): What you sell. One sentence. Max 500 chars.
- `targets` (string, required): Who you target. One sentence. Max 500 chars.

### `flowvolt_send_trial` (~121 tokens)

Dispatch the 5 trial drafts after a paid Stripe Checkout completes. Two-call flow: first call returns a one-click Unipile URL to connect your Gmail or Outlook inbox; second call (after you've connected) fires the 5 sends from your OWN warmed mailbox, your domain, your reputation. Requires the checkout_session_id from your paid Stripe Checkout. Sends never go through FlowVolt's infrastructure.

Input parameters:

- `checkout_session_id` (string, required): Stripe Checkout Session id (cs_test_… or cs_live_…) from the URL after you completed the trial checkout.

### `get_subscription_status` (~126 tokens)

Show the customer their current FlowVolt state in plain language: plan, billing, engine status, and live progress (buyers reached, replies, meetings). Use whenever they ask 'what's my plan', 'how's it going', 'what's my pipeline doing', 'when does it renew'. Works for authenticated tenants automatically; anonymous callers pass `email` (the one used at Stripe Checkout). Pass `name` if known so we greet them personally.

Input parameters:

- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.

### `manage_billing` (~81 tokens)

Open the Stripe-hosted billing portal where the customer cancels, switches plans, updates their card, or downloads invoices. Use when they say 'cancel', 'update my card', 'change plan', 'where are my invoices'.

Input parameters:

- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.

### `pause_engine` (~99 tokens)

Pause sends. No new prospects queued, in-flight sends stopped. Subscription billing continues; use manage_billing to cancel that too. Use when the user says 'pause', 'stop sending', 'put it on hold', 'I need a break'.

Input parameters:

- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.
- `reason` (string): Optional free-text reason logged for our records.

### `resume_engine` (~79 tokens)

Resume the engine after a pause. Sends still go to calibration so Lars reads the first batch before they fire, then it's full speed. Use when the user says 'resume', 'restart', 'go', 'I'm back'.

Input parameters:

- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.

### `preview_message` (~83 tokens)

Show the current first-touch template we'd send on behalf of this tenant. Subject, body, tone notes, word count. Use when the customer says 'show me what you'd send', 'what's the email', 'let me see the copy'.

Input parameters:

- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.

### `edit_message` (~139 tokens)

Change the first-touch template based on the customer's instruction in plain English. Examples: 'lose the question at the end', 'make it more direct', 'use my voice, I'm more casual', 'mention we're free for 14 days not 7'. The voice guard still applies (no em dashes, no marketer words, length bounds). If the requested change would break a rule, we say no and suggest a clean alternative.

Input parameters:

- `change_request` (string, required): What the customer wants changed, in their own words.
- `email` (string): Stripe Checkout email if not authenticated.
- `name` (string): User's first name if known.

### `set_goal` (~133 tokens)

Set this tenant's meeting goal: the weekly qualified-meeting target the engine paces toward. The Conductor reads this every run to allocate capacity. Use when the calling agent (or operator) wants more or fewer meetings per week, or to pause/resume the engine for this tenant. Returns: { client_id, weekly_meeting_target, status }.

Input parameters:

- `status` (string): Pacing gate. "paused" excludes the tenant from Conductor plans entirely. Default "active".
- `weekly_meeting_target` (number, required): Qualified meetings per week to pace toward. Integer >= 0. Example: 3

### `get_pipeline` (~78 tokens)

The v2 deep-signal pipeline, stage by stage, for this tenant: discovery queue, signal findings (ranked/held), dossiers, composed touches, verified outcomes. Use for any "where are my meetings coming from / what's in flight" question. Returns: { discovery, signals, dossiers, touches, outcomes }, each with status counts.

### `get_receipts` (~130 tokens)

The provable receipt chain (signal, dossier, touch, reply, outcome) that justifies every move the engine made for this tenant. Without account_domain: a summary list of recent accounts and their stage statuses. With account_domain: the full chain for that account, including the immutable receipt when an outcome exists. Returns: { accounts: [...] } or { chain: {...} }.

Input parameters:

- `account_domain` (string): Account to fetch the full chain for. Example: "acme.nl"
- `limit` (number): Max accounts in the summary list (1-200). Default 50.

### `book_meeting` (~159 tokens)

Order qualified, attended meetings from FlowVolt as the metered outcome (§12). Creates a standing meeting order and records the meter event in the settlement ledger. Settlement is per verified attended_meeting (machine-verifiable via the receipt chain); today the ledger records without charging (stripe_stub), real Stripe/AP2/x402 settlement plugs in later. Returns: { order_id, requested_count, status, settlement: { ledger_id, provider, status } }.

Input parameters:

- `qualification_note` (string): What makes a meeting qualified for this order. Example: "NL B2B SaaS, 10-200 FTE, decision-maker present"
- `requested_count` (number): Number of qualified meetings ordered. Integer >= 1. Default 1.

### `search_people` (~229 tokens)

Find B2B prospects matching an ICP filter (titles, industries, headcount, geography) and return up to 10 decision-makers with verified work emails. Use when the user asks to find leads, prospects, or decision-makers in a given segment. Costs 1 Apollo credit per revealed email (capped at 10/call). Returns: { count, candidates: [{ name, email, title, company, industry, linkedin, location, source }], cache_breakdown, apollo_credits_today, apollo_credits_cap }.

Input parameters:

- `employeeRanges` (array): Apollo headcount ranges as comma-separated min,max pairs. Example: ["10,50", "51,200"]
- `industries` (array): Apollo industry names to narrow the search. Example: ["Computer & Network Security", "Software Development"]
- `jobTitles` (array, required): Decision-maker job titles to search for. Example: ["CEO", "Head of Sales", "CRO"]
- `locations` (array): Countries or cities to filter by. Example: ["Netherlands", "Belgium", "Amsterdam"]

### `enqueue_lead` (~230 tokens)

Add a single prospect to the FlowVolt outbound queue for cold-email outreach. Idempotent: same email won't be queued twice in 90 days. Use after search_people to push a revealed contact, or to add a known contact directly. Returns: { queue_id: string|null, status: "queued"|"dedup_skip" }. queue_id=null when dedupe blocks insertion.

Input parameters:

- `companyName` (string, required): Company display name. Example: "Packhunt"
- `dutchSignal` (string): Why this lead matters now (in any language). Example: "raised €5M Series A last week"
- `email` (string, required): Verified work email. Example: "jeroen@packhunt.io"
- `firstName` (string, required): Prospect's first name. Example: "Jeroen"
- `linkedinUrl` (string): LinkedIn profile URL. Optional but improves personalization. Example: "https://linkedin.com/in/jeroencoenders"
- `source` (string): Discovery channel: prospect (search) or scout (signal). Default "prospect". Example: "prospect"

### `get_funnel` (~166 tokens)

Compute pipeline funnel metrics for a date range: counts and rates for leads_sent, opens, replies, positive_replies, meetings_booked. Use for any quantitative question about pipeline performance (e.g. "what's our reply rate this week?"). Returns: { leads_sent, opens, open_rate, replies, reply_rate, positive_replies, positive_rate, audit_views, meetings_booked, meeting_rate_of_positives, date_range }.

Input parameters:

- `from_date` (string, required): Window start, ISO 8601 timestamp. Example: "2026-05-10T00:00:00Z"
- `to_date` (string, required): Window end, ISO 8601 timestamp. Example: "2026-05-17T23:59:59Z"

### `get_replies` (~154 tokens)

Fetch recent inbound replies from prospects (with detection of forwarded threads). Use when the user asks who replied, what they said, or wants to triage the inbox. Returns: { count, replies: [{ from_email, original_recipient, forwarded_chain, company, classification, reply_text, our_response, replied_at }] }. classification values: interested|send_audit|question|not_now|not_interested|unsubscribe|misclassified.

Input parameters:

- `classification` (string): "positive" returns only interested + send_audit. "all" returns every reply. Default "all". Example: "positive"
- `limit` (number): Max replies to return (1-100). Default 20. Example: 10

### `list_meetings` (~148 tokens)

Retrieve meetings booked from FlowVolt outreach in a date range. Use for meeting counts, pipeline evidence, or "what's on the calendar" questions. Returns: { count, meetings: [{ email, company, booked_at, calendly_event_id, status }] }. status is CONFIRMED when a Calendly event id is attached, SCHEDULED otherwise.

Input parameters:

- `from_date` (string, required): Window start, ISO 8601 timestamp. Example: "2026-05-01T00:00:00Z"
- `to_date` (string, required): Window end, ISO 8601 timestamp. Example: "2026-05-31T23:59:59Z"

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine#diagnostics

## Score history

- 2026-08-03: 25
- 2026-08-02: 25
- 2026-08-01: 25
- 2026-07-31: 25
- 2026-07-30: 16
- 2026-07-29: 61
- 2026-07-28: 60
- 2026-07-27: 60
- 2026-07-26: 59

## Links

- Remote endpoint: https://flowvolt-strike-engine.vercel.app/mcp
- Authorisation metadata: https://flowvolt-strike-engine.vercel.app/.well-known/oauth-protected-resource/mcp
- Repository: https://github.com/Larshiensch99/flowvolt-strike-engine
- Website: https://flowvolt-strike-engine.vercel.app/
- Changelog RSS feed: https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine/changelog.json
- HTML version of this page: https://verifymcp.io/servers/larshiensch99-flowvolt/flowvolt-strike-engine
