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.

Enable Banking

NPM · @FOREVERWORKS/MCP-ENABLE-BANKING

Read, search and export statements and balances from banks across Europe, without moving money.

+3 this week 82 Trust /100

Last scanned (6 hours ago)

Scores higher than 72% of npm servers

Category Finance and Payments

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 7 of 23 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to foreverworks/mcps). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 4 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability67
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 1898 tokens (~189/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 Management33
  • Stability observed for 10 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 93% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "revoke_session" implies "revoke" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
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.

  • 3 Nov 26 +1

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

  • 1 Nov 26 +16
    • Malware scan: unverified → pass ▲ security
  • 31 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
    • Package version: 0.1.0 → 0.1.1 functional
  • 30 Oct 26 +1

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

  • 28 Oct 26 +1

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

  • 26 Oct 26 78

    First indexed and scored.

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 5 Nov 2026 · Analysed npm/@foreverworks/mcp-enable-banking@0.1.1

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo foreverworks/mcps
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/foreverworks/mcps/.github/workflows/release.yml@refs/tags/release-2026-10-31
Rekor log index 3614030240
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:8321c14d6cd9506615628bd8b3aa0607c69d1e8d08c1122f3c9cd135a2350ce0e6c90839286a95156f13fb2215dbd475f05e8f9f30561f6c029ed1e7a

Background: How many MCP packages publish verified provenance →

Dependencies 23 packages
Packages resolved 23
Stale 7
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 10 exposed · ~1,766 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
complete_auth ~224

Exchange the code from the bank's redirect for a session and store it under label, replacing the consent stored there (the previous sessions.json is copied to sessions.json.bak first); without a label, a renewal replaces the stored consent for the same bank, country and psu_type. Takes the WHOLE redirect URL or just its code. The code is single-use and expires within minutes, so run this straight after the approval. The session is written to disk before anything else, because Enable Banking reveals the session id exactly once. Returns the authorised accounts (IBAN, currency, name, as the bank describes them now) and when the consent ends.

NameTypeReqDescription
code_or_urlstringyesThe full redirect URL (...?code=...&state=...), or the code value alone.
labelstring–What to store it under: a-z, 0-9, _ and -. Default: the label of the stored consent for the same bank, country and psu_type (a renewal replaces it), else the bank and country, like example_bank_de.

No output schema declared.

No examples provided.

export_transactions ~306

The same statement as get_transactions (same arguments, same filters, same reads at the bank), written as a CSV file instead of returned: one row per transaction with its account, dates, direction, signed exact amount, currency, counterparty, payment reference and status. Returns the file's path, size and SHA-256, and how many rows it holds. Use it for a long period or many accounts, or when the result is meant for a spreadsheet or an accountant.

NameTypeReqDescription
account_uidstring–One account: the uid field from list_accounts (a UUID, not the IBAN). Leave out to read every account on a consent.
amount_maxstring–Keep rows of at most this size, sign ignored.
amount_minstring–Keep rows of at least this size, sign ignored, as a plain decimal such as "250" or "1200.50".
date_fromstring–YYYY-MM-DD, inclusive.
date_tostring–YYYY-MM-DD, inclusive.
directionstring–credit: money in; debit: money out.
labelstring–Every account on this stored consent (a label from list_stored_sessions). Leave out, with account_uid, to read every stored consent.
textstring–Keep rows whose counterparty name or IBAN, payment reference or entry reference contains this; case and diacritics ignored.
transaction_statusstring––

No output schema declared.

No examples provided.

get_balances ~111

The balances the bank reports for one account uid: every type it sends (booked, available, interim, and so on), each with the PSD2 code as sent and its meaning spelled out, a reference date where the bank gives one, and the amount as an EXACT decimal string signed by the bank (negative when overdrawn). One read at the bank per call, like a statement.

NameTypeReqDescription
account_uidstringyesThe uid field from list_accounts (a UUID, not the IBAN).

No output schema declared.

No examples provided.

get_transactions ~474

A statement: the transactions of one account (account_uid), of every account on one consent (label), or of every account on every stored consent (neither), following the bank's pagination to the end. Each account read spends one of the few reads the bank allows per account per day (about four), so read once and narrow with the filters rather than reading again: text, direction, amount_min and amount_max run here, after the read, and cost nothing more. Dates are YYYY-MM-DD and empty means unbounded. transaction_status takes a friendly name (booked, pending, cancelled, hold, other, rejected, scheduled) or a PSD2 code; empty omits the filter, which is NOT the same as asking for booked. Each row carries a SIGNED decimal amount as a string, negative for money leaving the account, and a counterparty resolved against the direction rather than copied from one fixed field. Amounts are strings because they are exact: parse them yourself if you need arithmetic. An amountWarning appears only on a row whose figure could not be taken at face value. Reading several accounts, each row also names its account, and one account that fails is reported in accounts without hiding the others. For more rows than a reply should hold, export_transactions writes the same statement as CSV.

NameTypeReqDescription
account_uidstring–One account: the uid field from list_accounts (a UUID, not the IBAN). Leave out to read every account on a consent.
amount_maxstring–Keep rows of at most this size, sign ignored.
amount_minstring–Keep rows of at least this size, sign ignored, as a plain decimal such as "250" or "1200.50".
date_fromstring–YYYY-MM-DD, inclusive.
date_tostring–YYYY-MM-DD, inclusive.
directionstring–credit: money in; debit: money out.
labelstring–Every account on this stored consent (a label from list_stored_sessions). Leave out, with account_uid, to read every stored consent.
textstring–Keep rows whose counterparty name or IBAN, payment reference or entry reference contains this; case and diacritics ignored.
transaction_statusstring––

No output schema declared.

No examples provided.

health ~62

Check that the integration is alive and say so in detail: the Enable Banking application the key pair authenticates as, its environment and redirect URL, where the config, key and sessions are, and how many consents are stored. Run this before concluding the MCP is broken.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_accounts ~73

The accounts a stored consent currently reaches, asked of the API rather than replayed from disk, because a bank can drop an account from a live consent. The uid field is what get_transactions takes.

NameTypeReqDescription
labelstring–A label from list_stored_sessions; may be left out when only one consent is stored.

No output schema declared.

No examples provided.

list_aspsps ~104

List the banks Enable Banking can reach, by two-letter country code. The name field is what start_auth takes, psuTypes says whether the bank exposes personal accounts, business accounts or both, and maxConsentDays is how long that bank will let a consent last. Pass an empty country for every bank in every market. Served from a one-hour cache.

NameTypeReqDescription
countrystringyesTwo-letter code, like RO. Empty means every market, a large answer.

No output schema declared.

No examples provided.

list_stored_sessions ~71

Every stored consent: its label, the bank, the accounts it covered, and when it EXPIRES (date and days left). A lapsed consent needs the account holder to approve a new one in the bank app, so check this first when a statement suddenly fails, and before one runs out.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

revoke_session ~130

End a stored consent: Enable Banking is asked to close the session, which ends the bank's consent, and the label is removed from the stored consents (the file as it was is kept as a backup). Afterwards nothing can read those accounts until the account holder approves a new consent in their bank, so use it only when access should really stop (an account closed, an application retired, access no longer wanted). A consent the bank already ended is removed just the same. The label is required, always.

NameTypeReqDescription
labelstringyesThe consent to end, as list_stored_sessions names it.

No output schema declared.

No examples provided.

start_auth ~211

Begin a consent with one bank, valid for 180 days, over every account the bank offers. To renew a stored consent, pass the bank, country and psu_type list_stored_sessions shows for it. Returns a URL a HUMAN must open: the bank requires strong customer authentication, so this step cannot be automated. After approval the bank redirects to the configured redirect_url with ?code=... in the query; that URL, or just the code, goes into complete_auth. Moves money or makes a legal document: the client asks the user to approve each call.

NameTypeReqDescription
aspsp_countrystringyesThe bank's two-letter country code.
aspsp_namestringyesThe bank: the name field from list_aspsps, exactly as spelled there.
psu_typestringyesWhose accounts: business or personal (list_aspsps says which the bank offers).
statestring–Echoed back on the redirect; useful to tell flows apart.

No output schema declared.

No examples provided.

Install

How do I install the Enable Banking MCP server?

Enable Banking runs locally as an npm package, launched with npx -y @foreverworks/mcp-enable-banking. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @foreverworks/mcp-enable-banking

# add to Claude Code
claude mcp add com-foreverworks-enable-banking -- npx -y @foreverworks/mcp-enable-banking
Common questions

What is the Enable Banking MCP server?

Enable Banking is an MCP server listed in the public MCP registry as com.foreverworks/enable-banking. Read, search and export statements and balances from banks across Europe, without moving money. This page covers its npm package (@foreverworks/mcp-enable-banking).

Is the Enable Banking MCP server safe to use?

Enable Banking scores 82 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 Enable Banking MCP server expose?

Enable Banking exposes 10 tools: complete_auth, export_transactions, get_balances, get_transactions, health, and 5 more. Their descriptions and schemas cost roughly 1,766 tokens of context every time the server is loaded.

Is the Enable Banking MCP server still maintained?

Enable Banking is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Enable Banking MCP server under?

Enable Banking declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.