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.

io.github.brunovicco/openfinance-br-mcp

PYPI · OPENFINANCE-BR-MCP

Secure Open Finance Brasil MCP server with typed tools and a credential-free mock mode

Available components

+13 this week 89 Trust /100

Last scanned (2 hours ago)

Scores higher than 91% of PyPI 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 Security91
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to brunovicco/openfinance-br-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 111 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 2905 tokens (~152/item across 19 items; 18 tools + 1 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 Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage72
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 3% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
What we tested

Checks we ran (16)

  • Malware scan
  • Known CVEs
  • Install scripts
  • Dependency health
  • Source repository
  • Provenance
  • License
  • Maintenance
  • Security disclosure
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol

Does not apply to this package (2)

  • Endpoint SecurityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.
  • Transport & ReachabilityScored on hosted endpoints only. A package has no live endpoint of its own for us to probe.

The score does not measure everything. What the score does not measure →

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.

  • 5 Nov 26 +13
    • Malware scan: unverified → pass ▲ security
    • Stability: pass → 0.80 functional
  • 1 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 31 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 0
    • Stability: 0.97 → pass security
  • 29 Oct 26 −15
    • CVE-2026-112911 affects this package: none ▼ security
    • CVE-2026-112938 affects this package: none ▼ security
    • CVE-2026-112908 affects this package: none ▼ security
    • CVE-2026-112936 affects this package: none ▼ security
    • CVE-2026-112915 affects this package: none ▼ security
    • CVE-2026-112935 affects this package: none ▼ security
    • CVE-2026-112912 affects this package: none ▼ security
    • CVE-2026-112939 affects this package: none ▼ security
    • CVE-2026-112910 affects this package: none ▼ security
    • CVE-2026-112909 affects this package: none ▼ security
    • Malware scan: pass → unverified ▼ security
    • Stability: pass → 0.97 functional
  • 24 Oct 26 0
    • CVE-2026-112913 affects this package: none ▼ security
    • CVE-2026-112907 affects this package: none ▼ security
    • CVE-2026-112940 affects this package: none ▼ security
  • 23 Oct 26 0
    • Stability: 0.97 → pass security
  • 22 Oct 26 0
    • Stability: pass → 0.97 functional
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 6 Nov 2026 · Analysed pypi/openfinance-br-mcp@0.2.0

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 pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo brunovicco/openfinance-br-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/brunovicco/openfinance-br-mcp/.github/workflows/release.yml@refs/tags/v0.2.0
Rekor log index 2191590082
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:d70e94f7770e24e19342113e97cb0c32a989375288fbba6528ff03e02e77763c

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend Known build tool hatchling.build

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 15 findings
ID CVE Severity Vector Fix available
GHSA-w8v5-vhqr-4h9v CVE-2025-69872 medium no
PYSEC-2026-2447 CVE-2025-69872 none no
GHSA-567q-5qvw-pf92 CVE-2026-112907 low CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L yes
GHSA-6627-m3xw-93mp CVE-2026-112908 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:L yes
GHSA-69hj-f68j-2879 CVE-2026-112909 medium CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:H/A:N yes
GHSA-8mx5-7m5m-r77g CVE-2026-112910 medium CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L yes
GHSA-9c4x-gm8v-wgc4 CVE-2026-112911 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:H yes
GHSA-9j6q-wvj5-jgjg CVE-2026-112912 low CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N yes
GHSA-9vhv-jxww-xfm5 CVE-2026-112913 low CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L yes
GHSA-cwqr-hh33-gh44 CVE-2026-112915 medium CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H yes
GHSA-fq56-3cx3-fjxp CVE-2026-112935 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N yes
GHSA-j8f7-rjxc-mr56 CVE-2026-112936 medium CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L yes
GHSA-m462-7rxw-wvpg CVE-2026-112938 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:L/I:L/A:H yes
GHSA-rfpc-qcw5-3pc4 CVE-2026-112939 medium CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:H/A:N yes
GHSA-v4x8-3wr5-3wq8 CVE-2026-112940 high CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 107 packages
Packages resolved 107
Stale 3
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 18 exposed · ~2,832 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_consent_status ~81

Checks the current status of a user's consent at a bank. Args: subject_id: User's CPF or internal ID. bank: Identifier of the participating bank. ctx: MCP request context, providing access to shared dependencies. Returns: The consent's current status.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
statusstringyes–

No examples provided.

check_payment_consent_status ~102

Checks the current status of an exact payment consent journey. Args: subject_id: Payer's CPF or internal ID. bank: Identifier of the participating bank. consent_id: Exact payment consent journey to query. ctx: MCP request context, providing access to shared dependencies. Returns: The payment consent's current status.

NameTypeReqDescription
bankstringyes–
consent_idstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
statusstringyes–

No examples provided.

complete_consent ~136

Completes a consent flow using the URL the bank redirected the user to after they finished logging in and authorizing. Because FAPI-BR mandates response_mode=fragment, that URL's parameters live after a '#', not a '?' - copy the complete address bar contents after being redirected, not just the query string. Args: callback_url: The full URL the user's browser landed on after authorizing (or denying) consent at the bank. ctx: MCP request context, providing access to shared dependencies. Returns: The final consent status after completing the exchange.

NameTypeReqDescription
callback_urlstringyes–
NameTypeReqDescription
bankstringyes–
consent_idstringyes–
statusstringyes–
subject_idstringyes–

No examples provided.

complete_payment_consent ~101

Completes a payment consent flow using the URL the bank redirected the user to after authorizing (or denying) the payment. Args: callback_url: The full URL the user's browser landed on after authorizing (or denying) the payment consent at the bank. ctx: MCP request context, providing access to shared dependencies. Returns: The final payment consent status after completing the exchange.

NameTypeReqDescription
callback_urlstringyes–
NameTypeReqDescription
bankstringyes–
consent_idstringyes–
statusstringyes–
subject_idstringyes–

No examples provided.

get_balance ~104

Returns the available, blocked, and automatically invested balance of a specific bank account on Open Finance Brasil. Args: subject_id: User's CPF. bank: Identifier of the participating bank. account_id: Account ID returned by list_accounts. ctx: MCP request context, providing access to shared adapters. Returns: The account's current balance.

NameTypeReqDescription
account_idstringyes–
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
balance–yes–
bankstringyes–

No examples provided.

get_credit_card_bills ~122

Returns the bills (open and past) of a credit card via Open Finance Brasil, including total amount, minimum payment, and due date. Args: subject_id: User's CPF. bank: Identifier of the participating bank. credit_card_account_id: ID returned by list_credit_cards. ctx: MCP request context, providing access to shared adapters. Returns: The bills of the given credit card account.

NameTypeReqDescription
bankstringyes–
credit_card_account_idstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
billsarrayyes–
credit_card_account_idstringyes–

No examples provided.

initiate_pix ~367

Initiates a PIX payment via Open Finance Brasil. Requires an active payment consent. The idempotency_key field prevents duplicate charges on retries. Outside ``environment='mock'``, requires an ``AUTHORISED`` payment consent for this subject/bank, obtained beforehand via ``start_payment_consent`` + ``complete_payment_consent`` (tools/payments.py) - a data-sharing consent alone is not sufficient. In mock mode this check is skipped entirely, since the mock adapter has no payment-consent resource to check against. Args: subject_id: Payer's CPF. bank: Identifier of the participating bank. amount: Canonical amount in BRL (e.g. ``"150.00"``). creditor_key: PIX key of the recipient. creditor_key_type: Type of the recipient's key. debtor_account_id: ID of the account to debit, returned by list_accounts. idempotency_key: Client-generated UUID to prevent duplicates. ctx: MCP request context, providing access to shared adapters and the persistent idempotency store. description: Payment description/reason (max 140 chars). consent_id: Payment consent returned by ``start_payment_consent``. Required outside mock mode. Returns: Status of the initiated (or previously cached) payment.

NameTypeReqDescription
amountstringyesBRL amount serialized with exactly two decimal places.
bankstringyes–
consent_id–––
creditor_keystringyes–
creditor_key_type–yes–
debtor_account_idstringyes–
descriptionstring––
idempotency_keystringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
payment–yes–

No examples provided.

list_accounts ~97

Lists all bank accounts (checking, savings, prepaid) of a user at an institution participating in Open Finance Brasil. Args: subject_id: User's CPF (digits only) or internal ID. bank: Identifier of the participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's accounts at the given bank.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
accountsarrayyes–
bankstringyes–
total_recordsintegeryes–

No examples provided.

list_credit_cards ~96

Lists all credit card accounts of a user at an institution participating in Open Finance Brasil, including available and total credit limit. Args: subject_id: User's CPF. bank: Identifier of the participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's credit card accounts at the given bank.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
credit_cardsarrayyes–

No examples provided.

list_funds ~96

Lists a user's investment fund positions via Open Finance Brasil Fase 4 (P1.3), including quota quantity/price and gross/net amount. Args: subject_id: User's CPF. bank: Participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's investment funds and aggregate totals.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
fundsarray––
summary–yes–
total_recordsintegeryes–

No examples provided.

list_investments ~111

Lists a user's bank fixed-income investments (CDB, LCI, LCA, RDB) via Open Finance Brasil Fase 4, including gross amount, net amount, contracted rate, and indexer. Args: subject_id: User's CPF. bank: Participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's fixed-income investments and aggregate totals.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
investmentsarray––
summary–yes–
total_recordsintegeryes–

No examples provided.

list_pix_keys ~120

Lists the PIX keys (CPF, email, phone, EVP) registered to a bank account via Open Finance Brasil. Only available in environment='mock' - see module docstring. Args: subject_id: User's CPF. bank: Identifier of the participating bank. account_id: Account ID. ctx: MCP request context, providing access to shared adapters. Returns: The PIX keys registered to the given account.

NameTypeReqDescription
account_idstringyes–
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
account_idstringyes–
bankstringyes–
pix_keysarrayyes–

No examples provided.

list_transactions ~243

Returns the bank statement of an account on Open Finance Brasil with date and type filters. Supports automatic transaction categorization via AI (categorize=true, requires ANTHROPIC_API_KEY). Args: subject_id: User's CPF. bank: Identifier of the participating bank. account_id: Account ID returned by list_accounts. ctx: MCP request context, providing access to shared adapters and the categorizer. date_from: Start date of the period. date_to: End date of the period. credit_debit_type: Restrict to credits or debits only. page: Page number (1-based). page_size: Records per page (1-1000). categorize: If true, categorizes each transaction via AI. Returns: The account's transactions for the requested period.

NameTypeReqDescription
account_idstringyes–
bankstringyes–
categorizeboolean––
credit_debit_type–––
date_from–––
date_to–––
pageinteger––
page_sizeinteger––
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
categorizedbooleanyes–
total_pagesintegeryes–
total_recordsintegeryes–
transactionsarrayyes–

No examples provided.

list_treasure_titles ~107

Lists a user's treasury bond (Tesouro Direto) positions via Open Finance Brasil Fase 4 (P1.3), including quantity, updated unit price, and gross/net amount. Args: subject_id: User's CPF. bank: Participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's treasury bonds and aggregate totals.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
summary–yes–
titlesarray––
total_recordsintegeryes–

No examples provided.

list_variable_incomes ~175

Lists a user's variable income asset positions (stocks, ETFs, and other exchange-traded assets) via Open Finance Brasil Fase 4 (P1.3), including quantity, closing price, and gross amount. No net_amount is returned here (unlike list_investments/list_funds/ list_treasure_titles): the real Variable Incomes spec's balance data only publishes a gross amount - taxes/fees on these assets are reported per-transaction (broker notes), not as a running net position. Args: subject_id: User's CPF. bank: Participating bank. ctx: MCP request context, providing access to shared adapters. Returns: The user's variable income assets and an aggregate gross total.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
assetsarray––
bankstringyes–
total_gross_amountnumberyes–
total_recordsintegeryes–

No examples provided.

revoke_consent ~84

Revokes a user's consent at a bank and forgets the local token. Args: subject_id: User's CPF or internal ID. bank: Identifier of the participating bank. ctx: MCP request context, providing access to shared dependencies. Returns: Confirmation that the consent was revoked.

NameTypeReqDescription
bankstringyes–
subject_idstringyes–
NameTypeReqDescription
bankstringyes–
revokedbooleanyes–
subject_idstringyes–

No examples provided.

start_consent ~347

Starts the Open Finance Brasil consent flow for a user at a bank. Creates a consent resource at the bank, then builds a FAPI-BR compliant (PAR + JAR) authorization URL. The user must open this URL in a browser, log in, and authorize the requested scopes at the bank. Once redirected back, call ``complete_consent`` with the resulting URL to finish the flow. Args: subject_id: User's CPF (digits only) or internal ID. bank: Identifier of the participating bank. scopes: Desired data-sharing scopes, e.g. ['accounts', 'balances', 'transactions', 'overdraft_limits', 'credit_card_accounts', 'credit_card_limits', 'credit_card_bills', 'credit_card_transactions', 'bank_fixed_incomes', 'funds', 'variable_incomes', 'treasure_titles']. Does NOT include 'pix'/payments - payment initiation uses a separate, dedicated payment consent (Payments API), not this data-sharing consent; see tools/pix.py. ctx: MCP request context, providing access to shared dependencies. request_url_elicitation: Ask a compatible MCP client to open the bank authorization URL using URL-mode elicitation. The URL is always returned as well, so clients without elicitation support can continue with the existing copy-and-open flow. Returns: The consent ID and the URL the user must open to authorize it.

NameTypeReqDescription
bankstringyes–
request_url_elicitationboolean––
scopesarrayyes–
subject_idstringyes–
NameTypeReqDescription
authorization_urlstringyes–
bankstringyes–
consent_idstringyes–
expires_in_minutesintegeryes–

No examples provided.

start_payment_consent ~343

Starts the Open Finance Brasil Payments API consent flow for one specific PIX payment. Creates a payment consent describing exactly this payment, then builds a FAPI-BR compliant (PAR + JAR) authorization URL. The user must open this URL, log in, and authorize this specific payment at the bank. Once redirected back, call ``complete_payment_consent`` with the resulting URL, then ``initiate_pix`` to actually create the payment. Args: subject_id: Payer's CPF (digits only) or internal ID. bank: Identifier of the participating bank. amount: Payment amount in BRL (e.g. '150.00'). creditor_key: PIX key of the recipient. creditor_key_type: Type of the recipient's key. debtor_account_id: ID of the account to debit. ctx: MCP request context, providing access to shared dependencies. description: Payment description/reason (max 140 chars). request_url_elicitation: Ask a compatible MCP client to open the bank authorization URL using URL-mode elicitation. The URL is still returned for clients that use the manual flow. Returns: The payment consent ID and the URL the user must open to authorize it.

NameTypeReqDescription
amountstringyesBRL amount serialized with exactly two decimal places.
bankstringyes–
creditor_keystringyes–
creditor_key_type–yes–
debtor_account_idstringyes–
descriptionstring––
request_url_elicitationboolean––
subject_idstringyes–
NameTypeReqDescription
authorization_urlstringyes–
bankstringyes–
consent_idstringyes–
expires_in_minutesintegeryes–

No examples provided.

Install

How do I install the io.github.brunovicco/openfinance-br-mcp server?

io.github.brunovicco/openfinance-br-mcp runs locally as a PyPI package, launched with uvx openfinance-br-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · openfinance-br-mcp

# add to Claude Code
claude mcp add brunovicco-openfinance-br-mcp -- uvx openfinance-br-mcp
Common questions

What is the io.github.brunovicco/openfinance-br-mcp server?

io.github.brunovicco/openfinance-br-mcp is listed in the public MCP registry as io.github.brunovicco/openfinance-br-mcp. Secure Open Finance Brasil MCP server with typed tools and a credential-free mock mode. This page covers its PyPI package (openfinance-br-mcp).

Is the io.github.brunovicco/openfinance-br-mcp server safe to use?

io.github.brunovicco/openfinance-br-mcp scores 89 out of 100 on VerifyMCP. We recorded 15 known advisories against it as of 6 November 2026. 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 io.github.brunovicco/openfinance-br-mcp server expose?

io.github.brunovicco/openfinance-br-mcp exposes 18 tools: list_accounts, get_balance, list_transactions, list_credit_cards, get_credit_card_bills, and 13 more. Their descriptions and schemas cost roughly 2,832 tokens of context every time the server is loaded.

Is the io.github.brunovicco/openfinance-br-mcp server still maintained?

io.github.brunovicco/openfinance-br-mcp is still listed as active in the MCP registry. We last reached this channel on 6 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 io.github.brunovicco/openfinance-br-mcp server under?

io.github.brunovicco/openfinance-br-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

What did VerifyMCP test on the io.github.brunovicco/openfinance-br-mcp server?

VerifyMCP ran 16 checks on io.github.brunovicco/openfinance-br-mcp, covering Malware scan, Known CVEs, Install scripts, Dependency health and 12 more. Endpoint Security and Transport & Reachability do not apply to a PyPI package, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.