Banco MCP — API Skill

SkillCommerce & finance

access to Banco MCP REST API to fetch OpenFinance bank data

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Banco MCP — API Skill skill

What this skill tells your AI

The instructions your AI receives, as published by barbieri/local-openfinance in .agents/skills/banco-mcp/SKILL.md and read by ahel’s review.

You have access to the Banco MCP REST API on MCP.AI.

Aggregates bank data (balances, bills and statements) via Brazil's Open Finance. Each institution becomes a connection; multiple banks per user are stored in credentials.connections[]. Read-only.

Base URL

https://api.mcp.ai/api/openfinance

Every endpoint is a POST to the base URL + the endpoint path below. All parameters go in the JSON body. Action-style endpoints take a required action field that selects the operation.

Authentication

Include in every request:

Authorization: Bearer sk_live_...
Content-Type: application/json

Response format

{ "ok": true, "tool": "<tool_id>", "result": <payload> }

cURL example

curl -X POST https://api.mcp.ai/api/openfinance/connectors/search \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{"keywords":["btg","nubank"]}'

Discovering endpoints

This API self-documents. For the always-current version of this documentation, no auth required:

  • Structured JSON (all endpoints + parameters + examples): GET https://api.mcp.ai/api/openfinance/_endpoints
  • OpenAPI 3.1 spec (Swagger / Insomnia / Postman import): GET https://api.mcp.ai/api/openfinance/_openapi
  • This skill in markdown: GET https://api.mcp.ai/api/openfinance/_skill.md

Use these when learning a new MCP, refreshing a stale catalog, or integrating from a fresh agent context.

Reporting problems

If any endpoint returns an error, empty or unexpected data, or you suspect a platform bug, report it instead of silently giving up. This notifies the MCP.AI team so they can look into it.

report_bug

Report a problem, empty or unexpected data, or a suspected platform bug to the MCP.AI team (POST https://api.mcp.ai/api/openfinance/report)

ParameterTypeRequiredDescription
messagestringYesWhat went wrong or what you expected to happen
contextstringNoEndpoint that failed, error message, or what you were trying to do
conversationarrayNoRecent messages for reproduction. Array of { role, content, tool_name? }

Request body:

{
  "message": "investments/list returned empty for one of my connections",
  "context": "POST /api/openfinance/investments/list with item=...",
  "conversation": []
}

Response example:

{
  "ok": true,
  "tool": "report_bug",
  "result": {
    "report_id": "bug_...",
    "message": "Report received (bug_...). The MCP.AI team has been notified. Thank you!"
  }
}

Available endpoints (16)

Connections

openfinance_search_bank_connectors

Search bank connectors (Open Finance/API) by name (POST https://api.mcp.ai/api/openfinance/connectors/search)

ParameterTypeRequiredDescription
keywordsstring[]YesBank name/id terms (OR match), e.g. ['nubank','btg']. Required.
include_accountsbooleanNoInclude accounts (+ count) of each already-linked connection. One call per connection; default false.

Request body:

{
  "keywords": [
    "btg",
    "nubank"
  ]
}

Response example:

{
  "ok": true,
  "tool": "openfinance_search_bank_connectors",
  "result": {
    "banks": [
      {
        "id": "675",
        "name": "BTGPactual",
        "access": "open_finance",
        "type": "PERSONAL_BANK",
        "audience": "pf",
        "connect_url": "https://app.mcp.ai/connect/mi_…?u=usr_…&flow=quick&field_bank_id=675"
      }
    ],
    "connect_url_base": "https://app.mcp.ai/connect/mi_…?u=usr_…&flow=quick",
    "totals": {
      "matched": 1,
      "connected_connections": 0,
      "connected_accounts": 0
    }
  }
}
openfinance_list_connections

List connected banks (POST https://api.mcp.ai/api/openfinance/connections/list)

Response example:

{
  "ok": true,
  "tool": "openfinance_list_connections",
  "result": {
    "connections": [
      {
        "connector_id": "612",
        "connector_name": "Nubank",
        "item_id": "uuid-aaa",
        "status": "UPDATED"
      }
    ],
    "count": 1,
    "add_connection_url": "https://app.mcp.ai/connect/mi_…?u=usr_…&add=1"
  }
}
openfinance_get_item_status

Status of a connection (UPDATED, LOGIN_ERROR…) (POST https://api.mcp.ai/api/openfinance/connections/status)

ParameterTypeRequiredDescription
itemstringNoitem_id (uuid), connector_id ('612'), or connector_name ('Nubank'). Omit when only 1 connection.

Request body:

{
  "item": "612"
}
openfinance_force_sync

Force-sync one or more connections (POST https://api.mcp.ai/api/openfinance/connections/sync)

ParameterTypeRequiredDescription
itemsstring[]YesConnection selectors (item_id, connector_id, or connector_name). 1-50.

Request body:

{
  "items": [
    "612",
    "Itaú"
  ]
}
openfinance_disconnect_bank

Revoke Open Finance consent for a bank (POST https://api.mcp.ai/api/openfinance/connections/disconnect)

ParameterTypeRequiredDescription
itemstringYesitem_id (uuid), connector_id, or connector_name of the connection.

Request body:

{
  "item": "Nubank"
}

Accounts

openfinance_list_accounts

List accounts (BANK / CREDIT) of a connection (POST https://api.mcp.ai/api/openfinance/accounts/list)

ParameterTypeRequiredDescription
itemstringNoTarget connection.
typestringNoFilter by type. (BANK, CREDIT)

CREDIT account rows include creditData with card brand/level/limits and, when the institution exposes them, balanceCloseDate (statement closing date) and balanceDueDate (payment due date).

Request body:

{
  "item": "612",
  "type": "BANK"
}
openfinance_get_accounts_detail

Full account detail by id (batch 1-50) (POST https://api.mcp.ai/api/openfinance/accounts/detail)

ParameterTypeRequiredDescription
account_idsstring[]YesAccount uuids. 1-50.

Request body:

{
  "account_ids": [
    "uuid-a",
    "uuid-b"
  ]
}
openfinance_get_account_balance

Real-time balance per account (batch 1-50) (POST https://api.mcp.ai/api/openfinance/accounts/balance)

ParameterTypeRequiredDescription
account_idsstring[]YesAccount uuids. 1-50.

Request body:

{
  "account_ids": [
    "uuid-a",
    "uuid-b"
  ]
}

Transactions

openfinance_list_transactions

Transactions per account (BANK or CREDIT) with date/keyword filters (POST https://api.mcp.ai/api/openfinance/transactions/list)

ParameterTypeRequiredDescription
account_idstringYesAccount uuid.
fromstringNoStart date ISO (YYYY-MM-DD).
tostringNoEnd date ISO (YYYY-MM-DD).
pagenumberNoPage (default 1).
page_sizenumberNoItems per page (1-500, default 50).
search_queriesstring[]NoKeyword filter (OR). Triggers aggregated scan in from/to.
detailstringNoResponse shape: omit for compact (default), rich for bill/merchant metadata (billId, purchaseDate, payeeMCC, merchant CNPJ/CNAE, …), or raw for the full upstream Open Finance object. Coverage varies by institution.

Request body:

{
  "account_id": "uuid-a",
  "from": "2026-04-01",
  "to": "2026-04-30",
  "detail": "rich",
  "search_queries": [
    "uber",
    "ifood"
  ]
}
openfinance_update_transaction_category

Fix transaction categories (auto-creates a rule) (POST https://api.mcp.ai/api/openfinance/transactions/category)

ParameterTypeRequiredDescription
itemsobject[]Yes{ transaction_id, category_id } pairs. 1-50. category_id comes from /categories/list.

Request body:

{
  "items": [
    {
      "transaction_id": "uuid-tx-1",
      "category_id": "05080000"
    }
  ]
}

Response example:

{
  "ok": true,
  "tool": "openfinance_update_transaction_category",
  "result": {
    "updated": 1,
    "results": [
      {
        "transaction_id": "uuid-tx-1",
        "category": "Food and drink",
        "categoryId": "05080000"
      }
    ],
    "errors": []
  }
}

Credit_cards

openfinance_list_credit_card_bills

Credit card bills (with derived payment_status) (POST https://api.mcp.ai/api/openfinance/credit-card-bills/list)

ParameterTypeRequiredDescription
account_idstringYesCREDIT account uuid.
pagenumberNo
page_sizenumberNo1-100.

Request body:

{
  "account_id": "uuid-credit"
}
openfinance_get_credit_card_bill

Bill detail by id (batch 1-50) (POST https://api.mcp.ai/api/openfinance/credit-card-bills/detail)

ParameterTypeRequiredDescription
bill_idsstring[]YesBill uuids. 1-50.

Request body:

{
  "bill_ids": [
    "uuid-bill-1"
  ]
}

Investments

openfinance_list_investments

Investment portfolio per connection (POST https://api.mcp.ai/api/openfinance/investments/list)

ParameterTypeRequiredDescription
itemstringNo
typestringNoFilter by type. (COE, EQUITY, ETF, FIXED_INCOME, MUTUAL_FUND, SECURITY, OTHER)
pagenumberNo
page_sizenumberNo1-500, default 100.

Request body:

{
  "item": "612",
  "type": "FIXED_INCOME"
}
openfinance_list_investment_transactions

Movement history of an investment position (BUY/SELL/TAX/…) (POST https://api.mcp.ai/api/openfinance/investments/transactions/list)

ParameterTypeRequiredDescription
investment_idstringYesInvestment uuid.
pagenumberNo
page_sizenumberNo1-500, default 100.

Request body:

{
  "investment_id": "uuid-inv"
}

Loans

openfinance_list_loans

Loan contracts per connection (batch) (POST https://api.mcp.ai/api/openfinance/loans/list)

ParameterTypeRequiredDescription
itemsstring[]YesConnection selectors. 1-50.

Request body:

{
  "items": [
    "612"
  ]
}

Categories

openfinance_list_categories

Transaction category taxonomy (Pluggy) (POST https://api.mcp.ai/api/openfinance/categories/list)

Signals

GitHub stars
22
Forks
2
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
banco-mcp
Source
github.com/barbieri/local-openfinance