@fibukiapp/openclaw-plugin 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +52 -66
- package/openclaw.plugin.json +3 -3
- package/package.json +12 -3
- package/skills/fibuki-guide/SKILL.md +79 -40
- package/src/index.ts +6 -7
package/README.md
CHANGED
|
@@ -1,92 +1,82 @@
|
|
|
1
1
|
# FiBuKI OpenClaw Plugin
|
|
2
2
|
|
|
3
|
-
Manage your FiBuKI tax accounting data through AI assistants.
|
|
3
|
+
Manage your FiBuKI tax accounting data through AI assistants. 25 tools for bank transactions, receipts, partners, and tax categorization.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|------|------------|
|
|
9
|
-
| **View bank accounts** | `list_sources`, `get_source` |
|
|
10
|
-
| **Browse transactions** | `list_transactions`, `get_transaction` |
|
|
11
|
-
| **Find incomplete work** | `list_transactions` (isComplete=false), `list_transactions_needing_files` |
|
|
12
|
-
| **Match receipts** | `list_files`, `connect_file_to_transaction`, `auto_connect_file_suggestions` |
|
|
13
|
-
| **Categorize transactions** | `list_no_receipt_categories`, `assign_no_receipt_category` |
|
|
7
|
+
### From ClawHub (recommended)
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
```bash
|
|
10
|
+
clawhub install fibuki
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### From npm
|
|
16
14
|
|
|
17
15
|
```bash
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
openclaw plugins install @fibukiapp/openclaw-plugin
|
|
17
|
+
```
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
### Local development
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
22
|
cd integrations/openclaw-plugin
|
|
23
23
|
openclaw plugins install -l .
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
## Configuration
|
|
27
27
|
|
|
28
|
-
1.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
28
|
+
### 1. Get an API Key
|
|
29
|
+
|
|
30
|
+
**Option A — CLI (zero friction):**
|
|
31
|
+
```bash
|
|
32
|
+
npx @fibukiapp/cli auth
|
|
33
|
+
```
|
|
34
|
+
Opens your browser, you approve, key is saved automatically.
|
|
35
|
+
|
|
36
|
+
**Option B — Manual:**
|
|
37
|
+
1. Go to **fibuki.com > Settings > Integrations > AI Agents**
|
|
38
|
+
2. Click "Create API Key"
|
|
39
|
+
3. Copy the key (starts with `fk_`)
|
|
40
|
+
|
|
41
|
+
### 2. Configure OpenClaw
|
|
32
42
|
|
|
33
|
-
|
|
43
|
+
**Option A — Environment variable** (works with ClawHub skills):
|
|
44
|
+
```bash
|
|
45
|
+
export FIBUKI_API_KEY="fk_your_key_here"
|
|
46
|
+
```
|
|
34
47
|
|
|
48
|
+
**Option B — Plugin config** in `~/.openclaw/openclaw.json`:
|
|
35
49
|
```json5
|
|
36
50
|
{
|
|
37
|
-
|
|
38
|
-
entries: {
|
|
51
|
+
"skills": {
|
|
52
|
+
"entries": {
|
|
39
53
|
"fibuki": {
|
|
40
|
-
enabled: true,
|
|
41
|
-
|
|
42
|
-
apiKey: "fk_your_api_key_here"
|
|
43
|
-
}
|
|
54
|
+
"enabled": true,
|
|
55
|
+
"env": { "FIBUKI_API_KEY": "fk_your_key_here" }
|
|
44
56
|
}
|
|
45
57
|
}
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
```
|
|
49
61
|
|
|
50
|
-
##
|
|
51
|
-
|
|
52
|
-
### Bank Accounts
|
|
53
|
-
- `list_sources` - List all connected bank accounts
|
|
54
|
-
- `get_source` - Get details of a specific account
|
|
55
|
-
|
|
56
|
-
### Transactions
|
|
57
|
-
- `list_transactions` - Search/filter transactions (use `isComplete: false` for incomplete)
|
|
58
|
-
- `get_transaction` - Get full transaction details
|
|
59
|
-
- `update_transaction` - Update description, mark complete
|
|
60
|
-
|
|
61
|
-
### Files (Receipts/Invoices)
|
|
62
|
-
- `list_files` - List uploaded files with match suggestions
|
|
63
|
-
- `get_file` - Get file details including extracted data
|
|
64
|
-
- `connect_file_to_transaction` - Link file to transaction
|
|
65
|
-
- `disconnect_file_from_transaction` - Unlink file
|
|
66
|
-
- `list_transactions_needing_files` - Find transactions without receipts
|
|
67
|
-
- `auto_connect_file_suggestions` - Bulk-connect high-confidence matches
|
|
68
|
-
|
|
69
|
-
### No-Receipt Categories
|
|
70
|
-
- `list_no_receipt_categories` - List categories (bank fees, payroll, etc.)
|
|
71
|
-
- `assign_no_receipt_category` - Mark transaction as not needing receipt
|
|
72
|
-
- `remove_no_receipt_category` - Remove category from transaction
|
|
73
|
-
|
|
74
|
-
## Example Conversations
|
|
62
|
+
## What Claude Can Do
|
|
75
63
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
64
|
+
| Task | Tools Used |
|
|
65
|
+
|------|------------|
|
|
66
|
+
| **View bank accounts** | `list_sources`, `get_source` |
|
|
67
|
+
| **Browse transactions** | `list_transactions`, `get_transaction` |
|
|
68
|
+
| **Find incomplete work** | `list_transactions` (isComplete=false), `list_transactions_needing_files` |
|
|
69
|
+
| **Match receipts** | `list_files`, `connect_file_to_transaction`, `auto_connect_file_suggestions` |
|
|
70
|
+
| **Categorize transactions** | `list_no_receipt_categories`, `assign_no_receipt_category` |
|
|
71
|
+
| **Manage partners** | `list_partners`, `create_partner`, `assign_partner_to_transaction` |
|
|
72
|
+
| **Import data** | `import_transactions`, `upload_file` |
|
|
80
73
|
|
|
81
|
-
|
|
82
|
-
```
|
|
83
|
-
Claude uses: auto_connect_file_suggestions
|
|
84
|
-
```
|
|
74
|
+
## Resources
|
|
85
75
|
|
|
86
|
-
**
|
|
87
|
-
|
|
88
|
-
Claude
|
|
89
|
-
|
|
76
|
+
- **llm.txt** — Machine-readable API overview: https://fibuki.com/llm.txt
|
|
77
|
+
- **OpenAPI spec** — Full tool schema: https://fibuki.com/api/openapi.json
|
|
78
|
+
- **MCP endpoint** — For Claude Desktop: https://fibuki.com/api/mcp/sse
|
|
79
|
+
- **CLI** — `npx @fibukiapp/cli auth` for zero-friction setup
|
|
90
80
|
|
|
91
81
|
## API Key Security
|
|
92
82
|
|
|
@@ -98,8 +88,4 @@ Claude uses: list_no_receipt_categories, then assign_no_receipt_category
|
|
|
98
88
|
|
|
99
89
|
## Domain Context
|
|
100
90
|
|
|
101
|
-
The plugin includes a
|
|
102
|
-
- FiBuKI's data model (sources, transactions, files, partners)
|
|
103
|
-
- Transaction completion logic
|
|
104
|
-
- Amount handling (cents, not euros!)
|
|
105
|
-
- Common workflows
|
|
91
|
+
The plugin includes a skill file (`skills/fibuki-guide/SKILL.md`) that gives the agent context about FiBuKI's data model, transaction completion logic, amount handling (cents, not euros!), and common workflows.
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "fibuki",
|
|
3
3
|
"name": "FiBuKI Tax Studio",
|
|
4
|
-
"description": "Manage bank transactions, receipts,
|
|
4
|
+
"description": "Manage bank transactions, receipts, and tax bookkeeping for Austrian/German small businesses. 25 tools for transactions, files, partners, and categories.",
|
|
5
5
|
"skills": ["skills/fibuki-guide"],
|
|
6
6
|
"channel": {
|
|
7
7
|
"docsPath": "/integrations/fibuki",
|
|
8
|
-
"blurb": "
|
|
8
|
+
"blurb": "AI-powered tax bookkeeping for Austrian & German freelancers and small businesses"
|
|
9
9
|
},
|
|
10
10
|
"configSchema": {
|
|
11
11
|
"type": "object",
|
|
12
12
|
"properties": {
|
|
13
13
|
"apiKey": {
|
|
14
14
|
"type": "string",
|
|
15
|
-
"description": "Your FiBuKI API key
|
|
15
|
+
"description": "Your FiBuKI API key. Generate at fibuki.com > Settings > Integrations > AI Agents, or run: npx @fibukiapp/cli auth"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"required": ["apiKey"]
|
package/package.json
CHANGED
|
@@ -1,17 +1,26 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fibukiapp/openclaw-plugin",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "FiBuKI Tax Studio plugin for OpenClaw - manage transactions, receipts, and tax categorization",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "src/index.ts",
|
|
7
7
|
"openclaw": {
|
|
8
|
-
"extensions": [
|
|
8
|
+
"extensions": [
|
|
9
|
+
"./src/index.ts"
|
|
10
|
+
]
|
|
9
11
|
},
|
|
10
12
|
"repository": {
|
|
11
13
|
"type": "git",
|
|
12
14
|
"url": "https://github.com/fibuki/openclaw-plugin"
|
|
13
15
|
},
|
|
14
|
-
"keywords": [
|
|
16
|
+
"keywords": [
|
|
17
|
+
"openclaw",
|
|
18
|
+
"fibuki",
|
|
19
|
+
"tax",
|
|
20
|
+
"accounting",
|
|
21
|
+
"receipts",
|
|
22
|
+
"invoices"
|
|
23
|
+
],
|
|
15
24
|
"author": "FiBuKI",
|
|
16
25
|
"license": "MIT",
|
|
17
26
|
"scripts": {
|
|
@@ -1,14 +1,37 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: fibuki
|
|
3
|
+
description: "Manage bank transactions, receipts, and tax bookkeeping in FiBuKI. Match receipts to transactions, categorize expenses, and track completion status for Austrian/German small businesses."
|
|
4
|
+
homepage: https://fibuki.com
|
|
5
|
+
user-invocable: true
|
|
6
|
+
metadata: {"openclaw":{"emoji":"receipt","primaryEnv":"FIBUKI_API_KEY","requires":{"env":["FIBUKI_API_KEY"],"bins":["curl"]}}}
|
|
7
|
+
---
|
|
2
8
|
|
|
3
|
-
|
|
9
|
+
# FiBuKI Tax Bookkeeping
|
|
4
10
|
|
|
5
|
-
|
|
11
|
+
You are helping manage a FiBuKI tax accounting account. FiBuKI is a bookkeeping tool for Austrian and German small businesses and freelancers.
|
|
6
12
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
-
|
|
11
|
-
-
|
|
13
|
+
## What You Can Do
|
|
14
|
+
|
|
15
|
+
- **View bank accounts and transactions** — browse, search, filter by date/amount/completion
|
|
16
|
+
- **Match receipts to transactions** — connect uploaded files (invoices, receipts) to the right bank transactions
|
|
17
|
+
- **Categorize transactions** — assign no-receipt categories to transactions that don't need receipts (bank fees, payroll, internal transfers)
|
|
18
|
+
- **Track completion** — find incomplete transactions and help get them to 100%
|
|
19
|
+
- **Manage partners** — create and assign business partners/vendors to transactions
|
|
20
|
+
|
|
21
|
+
## Authentication
|
|
22
|
+
|
|
23
|
+
All API calls use the user's `FIBUKI_API_KEY` environment variable (starts with `fk_`).
|
|
24
|
+
|
|
25
|
+
Generate a key at: fibuki.com > Settings > Integrations > AI Agents
|
|
26
|
+
Or run: `npx @fibukiapp/cli auth`
|
|
27
|
+
|
|
28
|
+
Machine-readable API docs: https://fibuki.com/llm.txt
|
|
29
|
+
|
|
30
|
+
## API Endpoint
|
|
31
|
+
|
|
32
|
+
POST https://fibuki.com/api/mcp
|
|
33
|
+
Headers: Authorization: Bearer $FIBUKI_API_KEY, Content-Type: application/json
|
|
34
|
+
Body: { "tool": "<tool_name>", "arguments": { ... } }
|
|
12
35
|
|
|
13
36
|
## Core Data Model
|
|
14
37
|
|
|
@@ -16,37 +39,65 @@ FiBuKI is a German tax accounting tool for small businesses and freelancers. It
|
|
|
16
39
|
- Represent bank accounts or credit cards
|
|
17
40
|
- Transactions are imported from sources
|
|
18
41
|
- Types: `bank_account`, `credit_card`
|
|
19
|
-
- Can be connected via CSV upload or Open Banking (GoCardless)
|
|
20
42
|
|
|
21
43
|
### Transactions
|
|
22
44
|
- Individual bank movements (debits/credits)
|
|
23
45
|
- Have: date, amount (in cents!), name, partner
|
|
24
46
|
- **Cannot be individually deleted** (accounting integrity)
|
|
25
|
-
- Complete when they have a file OR a no-receipt category
|
|
47
|
+
- **Complete** when they have a file attached OR a no-receipt category assigned
|
|
26
48
|
|
|
27
49
|
### Files (Receipts/Invoices)
|
|
28
50
|
- Uploaded PDFs or images
|
|
29
|
-
- AI extracts: amount, date, VAT, partner
|
|
30
|
-
- System suggests matching transactions (
|
|
51
|
+
- AI extracts: amount, date, VAT, partner name
|
|
52
|
+
- System suggests matching transactions with confidence scores (0-100)
|
|
31
53
|
- Many-to-many relationship with transactions
|
|
32
54
|
|
|
33
55
|
### Partners
|
|
34
|
-
- Companies or people the user transacts with
|
|
35
|
-
- Examples: "Amazon", "REWE", "Deutsche Telekom"
|
|
56
|
+
- Companies or people the user transacts with (e.g., "Amazon", "REWE")
|
|
36
57
|
- System auto-detects partners from transaction names
|
|
37
58
|
|
|
38
59
|
### No-Receipt Categories
|
|
39
|
-
- For transactions that don't need receipts
|
|
40
|
-
- Examples: Bank fees, Interest, Internal transfers, Payroll, Taxes
|
|
60
|
+
- For transactions that legally don't need receipts: bank fees, interest, internal transfers, payroll, taxes
|
|
41
61
|
- Assigning a category marks the transaction complete
|
|
42
62
|
|
|
43
|
-
##
|
|
63
|
+
## Available Tools
|
|
64
|
+
|
|
65
|
+
### Bank Accounts
|
|
66
|
+
- `list_sources` — List all connected bank accounts
|
|
67
|
+
- `get_source(sourceId)` — Get details of a specific account
|
|
68
|
+
- `create_source(name, accountKind?, iban?, currency?)` — Create a new bank account
|
|
69
|
+
- `delete_source(sourceId, confirm)` — Delete account and all its data (requires confirm: true)
|
|
70
|
+
|
|
71
|
+
### Transactions
|
|
72
|
+
- `list_transactions(sourceId?, dateFrom?, dateTo?, search?, isComplete?, limit?)` — Search/filter transactions
|
|
73
|
+
- `get_transaction(transactionId)` — Get full transaction details
|
|
74
|
+
- `update_transaction(transactionId, description?, isComplete?)` — Update description or status
|
|
75
|
+
- `list_transactions_needing_files(minAmount?, limit?)` — Find transactions without receipts or categories
|
|
76
|
+
- `import_transactions(sourceId, transactions[])` — Import transactions into a source
|
|
77
|
+
|
|
78
|
+
### Files (Receipts/Invoices)
|
|
79
|
+
- `list_files(hasConnections?, hasSuggestions?, limit?)` — List uploaded files
|
|
80
|
+
- `get_file(fileId)` — Get file details including AI-extracted data and suggestions
|
|
81
|
+
- `connect_file_to_transaction(fileId, transactionId)` — Link file to transaction (marks it complete)
|
|
82
|
+
- `disconnect_file_from_transaction(fileId, transactionId)` — Unlink file from transaction
|
|
83
|
+
- `auto_connect_file_suggestions(fileId?, minConfidence?)` — Bulk-connect high-confidence matches (default 89%)
|
|
84
|
+
- `upload_file(fileName, mimeType, url?, base64?)` — Upload a file from URL or base64
|
|
85
|
+
- `score_file_transaction_match(fileId, transactionId)` — Score how well a file matches a transaction
|
|
86
|
+
|
|
87
|
+
### Partners
|
|
88
|
+
- `list_partners(search?, limit?)` — List user partners
|
|
89
|
+
- `get_partner(partnerId)` — Get partner details
|
|
90
|
+
- `create_partner(name, aliases?, vatId?, ibans?, website?, country?)` — Create a new partner
|
|
91
|
+
- `assign_partner_to_transaction(transactionId, partnerId)` — Assign partner to transaction
|
|
92
|
+
- `remove_partner_from_transaction(transactionId)` — Remove partner assignment
|
|
44
93
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
94
|
+
### Categories
|
|
95
|
+
- `list_no_receipt_categories` — List available no-receipt categories
|
|
96
|
+
- `assign_no_receipt_category(transactionId, categoryId)` — Assign category (marks complete)
|
|
97
|
+
- `remove_no_receipt_category(transactionId)` — Remove category
|
|
48
98
|
|
|
49
|
-
|
|
99
|
+
### Status
|
|
100
|
+
- `get_automation_status` — Get user's automation mode, AI budget, and plan info
|
|
50
101
|
|
|
51
102
|
## Common Workflows
|
|
52
103
|
|
|
@@ -73,25 +124,13 @@ list_transactions with isComplete=false
|
|
|
73
124
|
```
|
|
74
125
|
list_transactions_needing_files
|
|
75
126
|
```
|
|
76
|
-
Returns transactions without files AND without no-receipt categories.
|
|
77
|
-
|
|
78
|
-
## Amount Handling
|
|
79
|
-
|
|
80
|
-
**All amounts are in CENTS (integer)**
|
|
81
|
-
- 10.50 EUR = 1050
|
|
82
|
-
- -25.00 EUR = -2500 (negative = expense)
|
|
83
|
-
- When displaying to user, divide by 100
|
|
84
|
-
|
|
85
|
-
## Date Handling
|
|
86
|
-
|
|
87
|
-
All dates are ISO 8601 format:
|
|
88
|
-
- `2024-01-15` for date-only
|
|
89
|
-
- `2024-01-15T10:30:00Z` for timestamps
|
|
90
127
|
|
|
91
128
|
## Important Rules
|
|
92
129
|
|
|
93
|
-
1. **Never delete individual transactions**
|
|
94
|
-
2. **Amounts are in cents**
|
|
95
|
-
3. **
|
|
96
|
-
4. **
|
|
97
|
-
5. **
|
|
130
|
+
1. **Never delete individual transactions** — they must be deleted with their entire source
|
|
131
|
+
2. **Amounts are in cents** — always divide by 100 for display (1050 = 10.50 EUR)
|
|
132
|
+
3. **Negative amounts = expenses** — positive = income
|
|
133
|
+
4. **Files can connect to multiple transactions** — many-to-many relationship
|
|
134
|
+
5. **Trust transactionSuggestions** — server-side AI matching is accurate
|
|
135
|
+
6. **High confidence = 85+** — safe to auto-connect suggestions above this threshold
|
|
136
|
+
7. **Dates are ISO 8601** — `2024-01-15` for dates, `2024-01-15T10:30:00Z` for timestamps
|
package/src/index.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Users authenticate with an API key generated in FiBuKI Settings.
|
|
6
6
|
*/
|
|
7
7
|
|
|
8
|
-
const API_BASE_URL = "https://
|
|
8
|
+
const API_BASE_URL = "https://fibuki.com";
|
|
9
9
|
|
|
10
10
|
// OpenClaw plugin API types
|
|
11
11
|
interface OpenClawApi {
|
|
@@ -228,7 +228,7 @@ async function callApi(
|
|
|
228
228
|
tool: string,
|
|
229
229
|
args: Record<string, unknown>
|
|
230
230
|
): Promise<string> {
|
|
231
|
-
const response = await fetch(`${API_BASE_URL}/
|
|
231
|
+
const response = await fetch(`${API_BASE_URL}/api/mcp`, {
|
|
232
232
|
method: "POST",
|
|
233
233
|
headers: {
|
|
234
234
|
"Content-Type": "application/json",
|
|
@@ -252,13 +252,12 @@ async function callApi(
|
|
|
252
252
|
export default function register(api: OpenClawApi) {
|
|
253
253
|
const { config, logger } = api;
|
|
254
254
|
|
|
255
|
-
// Validate required config
|
|
256
|
-
|
|
257
|
-
|
|
255
|
+
// Validate required config — check plugin config first, then env var
|
|
256
|
+
const apiKey = config.apiKey || process.env.FIBUKI_API_KEY;
|
|
257
|
+
if (!apiKey) {
|
|
258
|
+
logger.error("FiBuKI plugin requires an API key. Set FIBUKI_API_KEY env var, or add apiKey to plugin config. Generate one at fibuki.com > Settings > Integrations, or run: npx @fibukiapp/cli auth");
|
|
258
259
|
return;
|
|
259
260
|
}
|
|
260
|
-
|
|
261
|
-
const apiKey = config.apiKey;
|
|
262
261
|
logger.info("FiBuKI plugin initializing...");
|
|
263
262
|
|
|
264
263
|
// Register all tools
|