openfinance

Connect bank accounts to AI models using openfinance.sh

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "openfinance" with this command: npx skills add winxton/openfinance

OpenFinance Skill

Query your financial accounts and transactions via the OpenFinance API.

Setup

  1. Go to openfinance.sh and create an account
  2. Link a bank account through the dashboard
  3. Copy your API key from the Connect tab
  4. Set the environment variable:
    export OPENFINANCE_API_KEY="your_api_key_here"
    

All commands below use these variables:

BASE_URL="${OPENFINANCE_URL:-https://api.openfinance.sh}"
AUTH_HEADER="Authorization: Bearer $OPENFINANCE_API_KEY"

1. Get Accounts

Fetch all connected financial accounts with balances and institution info.

curl -s "$BASE_URL/api/accounts" -H "$AUTH_HEADER" | cat

Response shape per account:

  • id (number) — account ID (use for filtering transactions)
  • name, officialName — account names
  • type (e.g. "depository", "credit"), subtype (e.g. "checking", "credit card")
  • mask — last 4 digits
  • currentBalance, availableBalance, isoCurrencyCode
  • institutionName, institutionUrl
  • status — "active" or "hidden"
  • isSyncing (boolean), syncError (object or null)

2. Get Transactions

Search and filter transactions. Returns newest first by default.

curl -s -G "$BASE_URL/api/transactions" \
  -H "$AUTH_HEADER" \
  --data-urlencode "startDate=YYYY-MM-DD" \
  --data-urlencode "endDate=YYYY-MM-DD" \
  --data-urlencode "search=coffee" \
  --data-urlencode "merchants=Starbucks,Walmart" \
  --data-urlencode "accountId=123" \
  --data-urlencode "limit=100" \
  --data-urlencode "cursor=CURSOR_VALUE" \
  --data-urlencode "pending=false" \
  --data-urlencode "status=active,hidden" \
  --data-urlencode "fields=name,amount,date,merchantName" \
  --data-urlencode 'amountFilters=[{"operator":">","amount":100}]' \
  | cat

All query parameters are optional. Only include the ones you need.

Parameters

ParameterTypeDescription
startDateYYYY-MM-DDStart date filter
endDateYYYY-MM-DDEnd date filter
searchstringSearch by transaction name or merchant
merchantscomma-separatedFilter by exact merchant names
accountIdnumberFilter by account ID
limitnumberMax results (default 100, max 500)
cursorstringCursor for pagination (from previous response)
pendingbooleanFilter pending transactions
statuscomma-separatedFilter by status: active, hidden, deleted
fieldscomma-separatedReturn only these fields per transaction (reduces payload)
amountFiltersJSON arrayFilter by amount, e.g. [{"operator":">","amount":50}]

Transaction fields

id, name, amount, date, authorizedDate, pending, merchantName, isoCurrencyCode, accountId, status, createdAt, updatedAt


3. Query Transactions (SQL)

Run a SQL SELECT against the txns CTE for aggregations, grouping, and analysis. The query runs read-only with a 5-second timeout and 1000-row limit.

curl -s -X POST "$BASE_URL/api/transactions/query" \
  -H "$AUTH_HEADER" \
  -H "Content-Type: application/json" \
  -d '{"sql": "SELECT SUM(amount), COUNT(*) FROM txns WHERE merchant_name ILIKE '\''%starbucks%'\''"}' \
  | cat

txns CTE columns

id, name, amount (numeric), date, authorized_date, merchant_name, pending, iso_currency_code, account_id, status, created_at, updated_at

Note: SQL column names use snake_case (e.g. merchant_name), while the REST API returns camelCase (e.g. merchantName).

Example queries

Monthly spend breakdown:

SELECT TO_CHAR(date, 'YYYY-MM') as month, SUM(amount) as total, COUNT(*) as count
FROM txns GROUP BY 1 ORDER BY 1

Top merchants by total spend:

SELECT COALESCE(merchant_name, name) as merchant, SUM(amount) as total
FROM txns GROUP BY 1 ORDER BY total DESC LIMIT 10

Spending in a date range:

SELECT SUM(amount) as total FROM txns
WHERE date >= '2026-01-01' AND date < '2026-02-01'

Large transactions:

SELECT name, merchant_name, amount, date FROM txns
WHERE amount > 500 ORDER BY amount DESC

Response shape

Success: { "rows": [...], "rowCount": N } Error: { "error": "error message" } — fix the SQL and retry.


Tips

  • Use SQL for aggregations — monthly totals, top merchants, category breakdowns. It's faster and returns less data than fetching all transactions.
  • Use fields parameter on GET /api/transactions to reduce payload size when you only need a few columns.
  • Pagination: if there are more results, the response includes a cursor. Pass it as cursor in the next request.
  • Amount values are positive for debits (money spent) and negative for credits (money received).
  • When constructing SQL, always reference the txns CTE directly — do not define your own CTE or use transaction control statements.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Invoice Scan

AI-powered invoice OCR, scanning, and data extraction. Use when: (1) user needs OCR or text extraction from invoice images, scanned documents, or PDFs, (2) s...

Registry SourceRecently Updated
5320Profile unavailable
General

Mercury Bank

Mercury bank API for Digital 4 Jesus LLC (US entity). Use when the user asks about Mercury account balances, transactions, invoices, customers, or sending mo...

Registry SourceRecently Updated
2410Profile unavailable
General

Ai Cv Weekly

Pluggable AI report engine generating multi-preset, multi-source briefings with smart scoring, deduplication, LLM editing, quality control, rendering, and em...

Registry SourceRecently Updated
2730Profile unavailable
General

Corporate Credit Memo

Generates institutional-grade corporate credit application memoranda (Credit Memos) in English from uploaded annual reports, financial statements, or user-pr...

Registry SourceRecently Updated
3181Profile unavailable