Install
$ agentstack add skill-syntaxfear-bog-banking-skill-bog-banking-skill ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
BOG Banking Skill (read-only)
Help the user understand and manage their Bank of Georgia Business Online account through conversation. A bundled tool (scripts/bog.py) does the data access and prints JSON; you do the analysis (categorizing, summing, reconciling, flagging oddities). Works in any SKILL.md-compatible agent (Claude Code, Codex, and others).
Hard rules
- Read-only, always. Only run the
bog.pycommands listed here. Never
send a payment, transfer, sign a document, or call any write endpoint — there is none. If asked to move money, say this skill is read-only and they must do it themselves in their BOG app (you may still help them prepare).
- Treat financial data with care; summarize rather than dumping raw tables
unless asked.
- When you ask for credentials, never echo the Client Secret back in your
replies, and don't print it. The tool stores it locally for you.
Running the tool
python3 scripts/bog.py [options]
Every run prints one JSON object: command, mode (live/mock), ok, and either data or error+message. Parse it, then answer in plain language.
Every session: check status first
Before doing anything that needs data, run:
python3 scripts/bog.py whoami
ok: trueanddata.accounts_configured> 0 → fully set up; go straight to
the user's request. Never re-ask for credentials or for IBANs already stored.
ok: truebutaccounts_configuredis0→ keys work, no account yet → do
Step 6 of onboarding (add an IBAN).
error: "no_keys"→ brand-new user → run the First-time setup below.error: "invalid_credentials"→ keys rejected → see Step 5 below.
First-time setup (onboarding) — walk the user through this once
Be warm and go one step at a time. The full click-by-click version (with the exact BOG screens and links) is in reference/getting-credentials.md — relay it in your own words and give the user the links below.
Step 1 — Explain & reassure. Tell them this skill is read-only (it can never move money) and that you need two things from Bank of Georgia: a Client ID and a Client Secret.
Step 2 — Log in. Ask them to log in to their Business Bank at https://bonline.bog.ge/ with their Business Online credentials.
Step 3 — Create the API key. Have them open https://bonline.bog.ge/admin/api and click Add new, then:
- Integration type — choose Client Credentials Flow (the automatic
type that authorizes with the Client ID + Client Secret, with no username or password).
- API client name — any name (e.g. their internet-bank user, or
Banking Assistant).
- Confirm with the one-time code (OTP).
Step 4 — Copy the keys. BOG then shows a Client ID and a Client Secret (some screens label these Public Key / Secret Key — same values). Ask the user to paste both, then save — pipe JSON on stdin so the secret never hits the command line:
python3 scripts/bog.py save-credentials ","client_secret":""}
JSON
Never echo the Client Secret back.
Step 5 — Confirm login. Run whoami again.
ok: true→ keys work. Continue to Step 6.error: "invalid_credentials"→ either the keys are wrong or API access
hasn't been activated yet by the user's BOG business banker. Tell them both possibilities and offer to re-enter (wipe first if needed: python3 scripts/bog.py forget-credentials).
Step 6 — Add their first account. Ask for one account IBAN (e.g. GE..BG...). It's on their statements and in their BOG app, and it's not secret. Don't ask for the currency. Then:
python3 scripts/bog.py add-account --iban
python3 scripts/bog.py discover --account
discover auto-detects which currencies that IBAN holds (GEL/USD/EUR/GBP).
Step 7 — Their first live result. Run balance and present it nicely (see Presenting results). Congratulate them — setup is done — then ask if they'd like to add another account, and answer their original question.
> Want to demo before the keys are ready? python3 scripts/bog.py --mock balance > returns realistic sample data with no bank access (always say it's sample data).
Setting up / managing accounts later
BOG cannot list a company's accounts, so you collect IBANs from the user — one at a time, only as many as they want. Adding always MERGES (existing IBANs are kept). IBANs persist and are reused on every later call — never re-ask for ones already stored, and never re-ask for credentials once whoami is ok.
- "add another account GE.." →
add-account --ibanthen
discover --account (then ask if they want yet another)
- "remove / forget account GE.." →
remove-account --iban
(only when the user explicitly asks)
- "what accounts do you have?" →
accounts
Read-only commands
| Command | Returns | |---|---| | whoami | Whether credentials exist and work | | add-account --iban GE.. [--currency GEL] | Add an IBAN (merged; kept until removed) | | remove-account --iban GE.. [--currency GEL] | Remove an IBAN (or just one currency) | | discover [--account IBAN] [--currencies GEL,USD] | Probe stored IBANs' currencies, save them | | accounts | The stored IBAN(s) + their currencies | | balance [--account IBAN] [--currency GEL] | Available + current balance | | statement [--account IBAN] [--currency GEL] [--from YYYY-MM-DD] [--to YYYY-MM-DD] | Transactions for a period (auto-paginates) | | today [--account IBAN] [--currency GEL] | Today's intraday activity | | rates [--currency USD] | NBG official + BOG commercial buy/sell |
Default = everything. If you DON'T pass --account/--currency, the command automatically covers every configured IBAN across every currency it holds (it auto-detects currencies). Only pass --account and/or --currency when the user is specific ("my USD balance", "account GE..123"). These commands return a list (one entry per IBAN+currency); an entry may carry an error for a currency that account doesn't hold — just skip those.
When aggregating, never sum amounts across different currencies — report each currency separately (e.g. GEL total and USD total).
Examples
- "What's my balance?" →
balance(covers all accounts + currencies) - "My USD balance?" →
balance --currency USD - "Last month's transactions" →
statement --from 2026-05-01 --to 2026-05-31 - "How much did I pay ?" → run
statement, then filter/sum yourself. - "Anything unusual?" → run
statement, then flag duplicates, round numbers,
new counterparties, unexpectedly large amounts.
- "USD rate?" →
rates --currency USD
Mock mode
Pass --mock (or set BOG_MOCK=1) to return realistic sample data with no bank access — useful to demonstrate the skill before the user's credentials are ready. Always tell the user when results are sample data.
Presenting results
- Format money with thousands separators + 2 decimals (e.g.
18,430.75 GEL). - Lead with the answer, then a short breakdown; state grouping assumptions.
- For reconciliation, explicitly flag possible duplicates, unusually large
amounts, new/unknown counterparties, and round-number payments.
See reference/getting-credentials.md for the full credential walkthrough and reference/endpoints.md for the underlying BOG endpoints.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: SyntaxFear
- Source: SyntaxFear/bog-banking-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.