io.github.brunovicco/openfinance-br-mcp
PYPI · OPENFINANCE-BR-MCP · SCANNED SEP 13
Secure Open Finance Brasil MCP server with typed tools and a credential-free mock mode
Available components
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
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known advisory affects this package; its severity couldn't be graded. See how to fix → View diagnostics → Fail
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- Dependency health was assessed across the 103 of 108 dependencies we could resolve, so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency35
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- License check failed: no license is declared. See how to fix → Fail
- Actively maintained (last published 57 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
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
claude mcp add brunovicco-openfinance-br-mcp -- uvx openfinance-br-mcp
{
"mcpServers": {
"brunovicco-openfinance-br-mcp": {
"command": "uvx",
"args": [
"openfinance-br-mcp"
]
}
}
} {
"servers": {
"brunovicco-openfinance-br-mcp": {
"command": "uvx",
"args": [
"openfinance-br-mcp"
]
}
}
} codex mcp add brunovicco-openfinance-br-mcp -- uvx openfinance-br-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"brunovicco-openfinance-br-mcp": {
"type": "local",
"command": [
"uvx",
"openfinance-br-mcp"
],
"enabled": true
}
}
} openclaw mcp add brunovicco-openfinance-br-mcp --command uvx --arg openfinance-br-mcp
mcp_servers:
brunovicco-openfinance-br-mcp:
command: "uvx"
args: ["openfinance-br-mcp"] {
"McpServers": {
"brunovicco-openfinance-br-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"openfinance-br-mcp"
]
}
}
} assistant mcp add brunovicco-openfinance-br-mcp -t stdio -c uvx -a openfinance-br-mcp
{
"mcpServers": {
"brunovicco-openfinance-br-mcp": {
"command": "uvx",
"args": [
"openfinance-br-mcp"
]
}
}
} 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.
- 12 Sept 26 +13
- Malware scan: unverified → pass ▲ security
- Stability: pass → 0.80 functional
- 11 Sept 26 0
- Stability: 0.97 → pass security
- 10 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- 7 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 5 Sept 26 −2
- Stability: pass → 0.80 functional
- 4 Sept 26 0
- Stability: 0.97 → pass security
- 3 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
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 13 Sept 2026 · Analysed pypi/openfinance-br-mcp@0.2.0
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-w8v5-vhqr-4h9v | CVE-2025-69872 | medium | no | |
| PYSEC-2026-2447 | CVE-2025-69872 | none | no |
Background: What a vulnerability scan can and cannot prove →
Dependencies 103 packages
| Packages resolved | 103 |
|---|---|
| Stale | 5 |
| No linked repository | 1 |
| Tree resolution | Partial |
The dependency tree was only partially resolved, so these counts may be incomplete.
Background: SBOMs and build attestations, explained →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| status | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| consent_id | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| status | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| callback_url | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| consent_id | string | yes | – |
| status | string | yes | – |
| subject_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| callback_url | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| consent_id | string | yes | – |
| status | string | yes | – |
| subject_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| balance | – | yes | – |
| bank | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| credit_card_account_id | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| bills | array | yes | – |
| credit_card_account_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | BRL amount serialized with exactly two decimal places. |
| bank | string | yes | – |
| consent_id | – | – | – |
| creditor_key | string | yes | – |
| creditor_key_type | – | yes | – |
| debtor_account_id | string | yes | – |
| description | string | – | – |
| idempotency_key | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | yes | – |
| bank | string | yes | – |
| total_records | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| credit_cards | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| funds | array | – | – |
| summary | – | yes | – |
| total_records | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| investments | array | – | – |
| summary | – | yes | – |
| total_records | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| bank | string | yes | – |
| pix_keys | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account_id | string | yes | – |
| bank | string | yes | – |
| categorize | boolean | – | – |
| credit_debit_type | – | – | – |
| date_from | – | – | – |
| date_to | – | – | – |
| page | integer | – | – |
| page_size | integer | – | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| categorized | boolean | yes | – |
| total_pages | integer | yes | – |
| total_records | integer | yes | – |
| transactions | array | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| summary | – | yes | – |
| titles | array | – | – |
| total_records | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| assets | array | – | – |
| bank | string | yes | – |
| total_gross_amount | number | yes | – |
| total_records | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| revoked | boolean | yes | – |
| subject_id | string | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bank | string | yes | – |
| request_url_elicitation | boolean | – | – |
| scopes | array | yes | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| authorization_url | string | yes | – |
| bank | string | yes | – |
| consent_id | string | yes | – |
| expires_in_minutes | integer | yes | – |
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | BRL amount serialized with exactly two decimal places. |
| bank | string | yes | – |
| creditor_key | string | yes | – |
| creditor_key_type | – | yes | – |
| debtor_account_id | string | yes | – |
| description | string | – | – |
| request_url_elicitation | boolean | – | – |
| subject_id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| authorization_url | string | yes | – |
| bank | string | yes | – |
| consent_id | string | yes | – |
| expires_in_minutes | integer | yes | – |
No examples provided.
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 76 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 13 September 2026. 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 13 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.