Is Savvly MCP server safe?
Yes, with the usual care.
Passed every safety check we run. Maintained, authenticated, reachable, clean scan.
No critical or high findings in the latest scan.
Public scan report
scanner v0.1.5 · 2026-09-19 · same rubric, same numbers if you re-run it
1 medium1 low
- Code scan3 source files scanned; 16 source files scanned20/25
- Live reliabilityremote reachable in 691ms20/20
- Tool poisoning8 tool descriptions checked13/15
- Auth qualityopen endpoint, read-only tools10/15
- Maintenancelast push 10 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year; website matches verified namespace10/10
Findings (2)
- mediumeval / new Function used
exec.evaldist/cli.bundled.js: …ourceCode, sch); const validate = new Function(`${names_1.default.self}`, `${names_1.de… - lowUnusually long tool description (over 2,000 characters)
poison.long-descriptiontool project_savvly_lumpsum: …Retirement projection for a lump-sum investment in the Savvly Longevity Benefit. Returns payout amounts at each milestone age (80, 85, 90, 95) with Savvly vs market alone cumulative totals, per-age breakdowns, and server-provided `_lower`/`_upper` range bounds. Use `_upper` as the central illustrative estimate and `_lower` to communicate downside. Suitable for retirement income planning, annuity alternative analysis, and longevity benefit illustration. Response embeds SEC-style disclaimers and per-field interpretation hints under `metadata`. Payout methodology — Savvly vs market alone: the payout values are calculated by comparing two investors of the same age committing the same principal. Investor 1 invests in the market with the Savvly Longevity Benefit; Investor 2 invests in the market alone (no longevity overlay). To make the comparison apples-to-apples, at each milestone age (80, 85, 90, 95) Investor 2 withdraws from their market alone portfolio the same dollar amount Investor 1 receives as a payout from Savvly. The `payout_market_alone_*` and `total_market_alone_*` figures are therefore what Investor 2 can actually withdraw to match Savvly's payouts before running out — they fall to 0 once the market alone portfolio is depleted. The `savvly_upside_*` (and `total_savvly_upside_*`) fields quantify how much more total money Investor 1 receives in payouts from Savvly than Investor 2 is able to withdraw over time to match those payouts. DISCLOSURE REQUIRED: display `disclosure.text` verbatim and link `disclosure.url` to the user alongside any figures from this response. Required by SEC Marketing Rule and FINRA Rule 2210 — do not paraphrase or omit. VISUALIZATION: this tool emits an interactive chart widget (MCP Apps — see `_meta.ui`) that the HOST renders inline and editable; other clients render only your text and show no chart. That widget is the canonical chart for these numbers: do NOT draw, generate, or re-render a duplicate of it. You MAY still create your OWN, DIFFERENT visualization (e.g. a table or an alternate breakdown) and place it wherever you judge best — only the MCP App widget's position is constrained. Do NOT claim or imply a chart is visible (avoid 'the chart above shows…'); you cannot tell whether the host rendered the widget. Summarize the key figures in prose and show the `disclosure` text and link, and reference the widget only conditionally (e.g. 'if your client shows the interactive chart, its fields are editable to re-run the projection'). ORDER: BEFORE you call this tool, ALWAYS write at least one short lead-in paragraph (1-3 sentences) framing what the projection will show — do NOT invent specific figures you do not have yet. On hosts that render the widget inline at the tool call, this keeps your text ahead of the chart so the widget is never the first thing shown; THEN call the tool (this lead-in is framing, NOT asking the user for inputs — still call it in the same turn without waiting) and give the grounded figures + disclosure after it returns. This lead-in rule applies to the MCP App widget only; any visualization you create yourself may appear wherever you judge best. INPUTS: every parameter is OPTIONAL and defaults to a sensible value. Call this tool IMMEDIATELY — pass only the values the user explicitly stated and omit the rest. Do NOT ask the user for starting values, assumptions, or missing parameters before calling; the rendered widget has editable fields so they adjust age, amounts, and other assumptions inline after it appears.…
Overall 88/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON
Other servers that do what Savvly does
- Gpsr Listing LintAudits a product feed row by row against Article 19 of the EU General Product Safety Regulationnot reviewedGrowingA
- Loki ModeAutonomous spec-to-product coding-agent CLI with an MCP server exposing 36 tools over stdio.not reviewedEstablishedC
- ShopwareQuery and safely manage a Shopware 6 shop: products, orders, customers, stock, audits, reports.not reviewedEstablishedB