The headless FinOps intelligence layer: API-first, agent-first cost control for cloud + AI. Connect your cloud stack in Claude, Cursor, or the terminal, and gate what agents do to your infra before they act. Propose-only. Open source, local-first.
- capability exposure inferred + 35
- recent drift inferred + 20
- tool safety inferred + 12
- trust mitigators mixed − 9
inferred mixed
The A–E grade is our heuristic synthesis — a "review this" prompt, not a verdict. Each factor is tagged by what backs it: attested (a verifiable record), reported (a third party's claim), or inferred (our own heuristic, e.g. permissions). See methodology.
grade last moved 3d ago · see ecosystem CVEs →
- D · 64 → C · 58
- C · 56 → D · 64
- D · 64 → C · 56
- D · 67 → D · 64
- C · 59 → D · 67
No known CVEs for this server.
- high dangerous code
dynamic exec: pickle.loads(), __import__(), eval()/exec()
analyzed commit eeb287b · analyzer v33 · 1d ago
danger signals14
- dynamic code execution pickle.loads() getnable-finopsmcp-eeb287b/src/finops/cache.py :286
return (float(expires_at), pickle.loads(payload)) - dynamic code execution __import__() getnable-finopsmcp-eeb287b/tests/test_ambient_parity.py :128
cls = getattr(__import__(mod, fromlist=[name]), name) - dynamic code execution __import__() getnable-finopsmcp-eeb287b/tests/test_audit_cost_math.py :308
module = __import__(f"finops.{mod}", fromlist=[name]) - dynamic code execution eval()/exec() getnable-finopsmcp-eeb287b/tests/test_first_run_is_quiet.py :73
exec( # noqa: S102 - dynamic code execution __import__() getnable-finopsmcp-eeb287b/tests/test_full_cost_audit.py :70
m = __import__(f"finops.recommendations.{mod}", fromlist=[name]) - dynamic code execution __import__() getnable-finopsmcp-eeb287b/tests/test_learning_ranking.py :141
m = __import__(f"finops.{mod}", fromlist=[name]) - suspicious endpoint us.posthog.com (telemetry) getnable-finopsmcp-eeb287b/scripts/launch_funnel.py :24
HOST = "https://us.posthog.com" - suspicious endpoint us.i.posthog.com (telemetry) getnable-finopsmcp-eeb287b/scripts/weekly-read.py :53
POSTHOG_HOST = os.environ.get("POSTHOG_HOST", "https://us.i.posthog.com").rstrip("/") - suspicious endpoint app.datadoghq.com (telemetry) getnable-finopsmcp-eeb287b/src/finops/connector_scopes.py :117
mint_url="https://app.datadoghq.com/organization-settings/application-keys", - suspicious endpoint api.datadoghq.com (telemetry) getnable-finopsmcp-eeb287b/src/finops/connectors/saas/datadog.py :14
_BASE = "https://api.datadoghq.com/api/v1" - suspicious endpoint app.datadoghq.com (telemetry) getnable-finopsmcp-eeb287b/src/finops/setup/cloud_infra.py :644
"key_create_url": "https://app.datadoghq.com/organization-settings/api-keys", - suspicious endpoint app.datadoghq.com (telemetry) getnable-finopsmcp-eeb287b/src/finops/setup_scan.py :41
"Datadog": ("https://app.datadoghq.com/organization-settings/api-keys", f"App key lives next door under Application Keys. Scope it to {_perm('datadog')} and it reads cost only."), - suspicious endpoint us.i.posthog.com (telemetry) getnable-finopsmcp-eeb287b/src/finops/telemetry.py :52
_POSTHOG_HOST = "https://us.i.posthog.com" - over-broad OAuth scope https://www.googleapis.com/auth/cloud-platform getnable-finopsmcp-eeb287b/src/finops/setup/cloud_infra.py :556
scopes=["https://www.googleapis.com/auth/cloud-platform"],
- recent drift +20 capability drift →
Heuristic, inferred signals — false positives (legitimately powerful tools, forks, language ports) are expected. Treat each as "review this", not a verdict. See the ecosystem-wide picture on the security hub, or the fleet security of getnable.