@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 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
- ## What Claude Can Do
5
+ ## Installation
6
6
 
7
- | Task | Tools Used |
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
- ## Installation
9
+ ```bash
10
+ clawhub install fibuki
11
+ ```
12
+
13
+ ### From npm
16
14
 
17
15
  ```bash
18
- # From npm (when published)
19
- openclaw plugins install @fibuki/openclaw-plugin
16
+ openclaw plugins install @fibukiapp/openclaw-plugin
17
+ ```
20
18
 
21
- # Or link locally for development
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. **Generate an API Key** in FiBuKI:
29
- - Go to **Settings > Integrations > AI Agents**
30
- - Click "Create API Key"
31
- - Copy the key (starts with `fk_`)
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
- 2. **Add to OpenClaw config:**
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
- plugins: {
38
- entries: {
51
+ "skills": {
52
+ "entries": {
39
53
  "fibuki": {
40
- enabled: true,
41
- config: {
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
- ## Available Tools
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
- **User:** "Show me incomplete transactions from last month"
77
- ```
78
- Claude uses: list_transactions with isComplete=false, dateFrom, dateTo
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
- **User:** "Match all my unconnected receipts"
82
- ```
83
- Claude uses: auto_connect_file_suggestions
84
- ```
74
+ ## Resources
85
75
 
86
- **User:** "The bank fee doesn't need a receipt"
87
- ```
88
- Claude uses: list_no_receipt_categories, then assign_no_receipt_category
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 skills file (`skills/fibuki-guide/SKILL.md`) that gives Claude context about:
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.
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "id": "fibuki",
3
3
  "name": "FiBuKI Tax Studio",
4
- "description": "Manage bank transactions, receipts, files, and tax categorization through FiBuKI. 15+ tools for transactions, files, and categories.",
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": "German tax accounting automation"
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 (generate at Settings > Integrations > AI Agents)"
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.0",
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": ["./src/index.ts"]
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": ["openclaw", "fibuki", "tax", "accounting", "receipts", "invoices"],
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
- # FiBuKI Tax Accounting Guide
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
- You are helping manage a FiBuKI tax accounting account. This guide explains the domain.
9
+ # FiBuKI Tax Bookkeeping
4
10
 
5
- ## What is FiBuKI?
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
- FiBuKI is a German tax accounting tool for small businesses and freelancers. It helps users:
8
- - Import bank transactions (via CSV or Open Banking)
9
- - Upload and match receipts/invoices to transactions
10
- - Categorize transactions for tax purposes
11
- - Track completion status for bookkeeping
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 (transactionSuggestions)
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
- ## Transaction Completion Logic
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
- A transaction is **complete** (isComplete=true) when:
46
- 1. It has at least one connected file (fileIds.length > 0), OR
47
- 2. It has a no-receipt category assigned (noReceiptCategoryId is set)
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
- Your goal: Help the user get all transactions to complete status.
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** - They must be deleted with their source
94
- 2. **Amounts are in cents** - Always divide by 100 for display
95
- 3. **Files can connect to multiple transactions** - Many-to-many relationship
96
- 4. **Trust transactionSuggestions** - Server-side matching is accurate
97
- 5. **High confidence = 85+** - Auto-connect suggestions above this threshold
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://europe-west1-taxstudio-f12fb.cloudfunctions.net";
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}/mcpApi`, {
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
- if (!config.apiKey) {
257
- logger.error("FiBuKI plugin requires apiKey in config. Generate one at Settings > Integrations > AI Agents");
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