← Back to Skills Marketplace
pushp1997

Firefly III

by pushp1997 · GitHub ↗ · v1.0.0
cross-platform ⚠ suspicious
1342
Downloads
2
Stars
4
Active Installs
1
Versions
Install in OpenClaw
/install firefly-iii
Description
Manage personal finances via Firefly III API. Use when user asks about budgets, transactions, accounts, categories, piggy banks, subscriptions, recurring transactions, or financial reports. Supports creating, listing, updating transactions; managing accounts and balances; setting budgets; tracking savings goals.
README (SKILL.md)

Firefly III

Firefly III is a self-hosted personal finance manager. This skill provides API access for managing finances.

Configuration

Required environment:

  • FIREFLY_URL: Base URL (e.g., https://budget.example.com)
  • FIREFLY_TOKEN: Personal Access Token (stored at ~/.firefly_token)

Get token: Profile → OAuth → Personal Access Tokens → Create new token

API Basics

TOKEN=$(cat ~/.firefly_token)
BASE="$FIREFLY_URL/api/v1"
curl -s "$BASE/endpoint" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json"

Core Endpoints

Accounts

# List accounts
curl "$BASE/accounts?type=asset" # asset|expense|revenue|liability
# Create account
curl -X POST "$BASE/accounts" -d '{
  "name": "Bank Account",
  "type": "asset",
  "account_role": "defaultAsset",
  "currency_code": "EUR"
}'

Account types: asset, expense, revenue, liability Asset roles: defaultAsset, savingAsset, sharedAsset, ccAsset

Transactions

# List transactions
curl "$BASE/transactions?type=withdrawal&start=2026-01-01&end=2026-01-31"
# Create withdrawal (expense)
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "withdrawal",
    "date": "2026-01-15",
    "amount": "50.00",
    "description": "Groceries",
    "source_name": "Bank Account",
    "destination_name": "Supermarket",
    "category_name": "Groceries"
  }]
}'
# Create deposit (income)
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "deposit",
    "date": "2026-01-01",
    "amount": "3000.00",
    "description": "Salary",
    "source_name": "Employer",
    "destination_name": "Bank Account",
    "category_name": "Salary"
  }]
}'
# Create transfer
curl -X POST "$BASE/transactions" -d '{
  "transactions": [{
    "type": "transfer",
    "date": "2026-01-05",
    "amount": "500.00",
    "description": "Savings",
    "source_name": "Bank Account",
    "destination_name": "Savings Account"
  }]
}'

Transaction types: withdrawal, deposit, transfer

Categories

# List categories
curl "$BASE/categories"
# Create category
curl -X POST "$BASE/categories" -d '{"name": "Groceries"}'

Budgets

# List budgets
curl "$BASE/budgets"
# Create budget
curl -X POST "$BASE/budgets" -d '{"name": "Food", "active": true}'
# Set budget limit for period
curl -X POST "$BASE/budgets/{id}/limits" -d '{
  "start": "2026-01-01",
  "end": "2026-01-31",
  "amount": "500.00"
}'

Piggy Banks (Savings Goals)

# List piggy banks
curl "$BASE/piggy-banks"
# Create piggy bank
curl -X POST "$BASE/piggy-banks" -d '{
  "name": "Vacation Fund",
  "target_amount": "2000.00",
  "accounts": [{"account_id": "1"}],
  "start_date": "2026-01-01",
  "target_date": "2026-12-31",
  "transaction_currency_code": "EUR"
}'
# Add money to piggy bank
curl -X POST "$BASE/piggy-banks/{id}/events" -d '{"amount": "100.00"}'

Subscriptions (Bills)

# List subscriptions
curl "$BASE/subscriptions"
# Create subscription
curl -X POST "$BASE/subscriptions" -d '{
  "name": "Netflix",
  "amount_min": "12.99",
  "amount_max": "12.99",
  "date": "2026-01-15",
  "repeat_freq": "monthly",
  "currency_code": "EUR"
}'

Repeat frequencies: weekly, monthly, quarterly, half-year, yearly

Recurring Transactions

# List recurring transactions
curl "$BASE/recurrences"
# Create recurring transaction
curl -X POST "$BASE/recurrences" -d '{
  "type": "withdrawal",
  "title": "Rent",
  "first_date": "2026-01-01",
  "repeat_until": "2026-12-31",
  "repetitions": [{
    "type": "monthly",
    "moment": "1"
  }],
  "transactions": [{
    "amount": "1000.00",
    "description": "Monthly rent",
    "source_id": "1",
    "destination_name": "Landlord",
    "category_name": "Rent"
  }]
}'

Rules (Auto-categorization)

# List rules
curl "$BASE/rules"
# Create rule
curl -X POST "$BASE/rules" -d '{
  "title": "Categorize groceries",
  "trigger": "store-journal",
  "active": true,
  "strict": false,
  "triggers": [
    {"type": "description_contains", "value": "ALDI"}
  ],
  "actions": [
    {"type": "set_category", "value": "Groceries"}
  ]
}'

Trigger types: description_contains, description_starts, description_ends, amount_less, amount_more, source_account_is, etc. Action types: set_category, set_budget, add_tag, set_description, etc.

Tags

# List tags
curl "$BASE/tags"
# Create tag
curl -X POST "$BASE/tags" -d '{"tag": "vacation"}'

Reports & Summary

# Account balance over time
curl "$BASE/accounts/{id}/transactions?start=2026-01-01&end=2026-01-31"
# Get current balances
curl "$BASE/accounts" | jq '.data[] | {name: .attributes.name, balance: .attributes.current_balance}'

Common Tasks

Get spending by category

curl "$BASE/categories" | jq '.data[] | {name: .attributes.name, spent: .attributes.spent}'

Get budget progress

curl "$BASE/budgets" | jq '.data[] | {name: .attributes.name, spent: .attributes.spent}'

Search transactions

curl "$BASE/search/transactions?query=groceries&limit=25"

Error Handling

  • 422 Unprocessable Entity: Check required fields in error response
  • 401 Unauthorized: Token expired or invalid
  • 404 Not Found: Resource doesn't exist

Tips

  • Use source_name/destination_name to auto-create expense/revenue accounts
  • Categories are different from budgets (categories for classification, budgets for limits)
  • Piggy banks require linking to an asset account
  • Use rules to auto-categorize transactions on creation
Usage Guidance
The SKILL.md expects FIREFLY_URL and a FIREFLY_TOKEN (it even reads ~/.firefly_token) but the registry metadata declares none — that's a red flag. Before installing: 1) Confirm the skill owner/source (homepage is missing); 2) Don’t store long-lived tokens in plaintext in your home directory if you can avoid it — prefer a scoped personal access token and store it in a secure secret store or set FIREFLY_TOKEN as an env var for the agent runtime; 3) Ensure the Firefly instance URL is HTTPS and is one you control; 4) Verify your agent environment has curl/jq (the SKILL.md uses them) and that you are comfortable the agent will read the token file; 5) If you need stricter control, request the publisher update registry metadata to declare required env vars and config paths (so consent is explicit) or ask for a version that accepts the token at call-time rather than reading ~/.firefly_token. The mismatch could be a benign oversight, but treat it as suspicious until clarified.
Capability Analysis
Type: OpenClaw Skill Name: firefly-iii Version: 1.0.0 The skill is classified as suspicious due to its explicit instruction in `SKILL.md` to read a sensitive file (`~/.firefly_token`) using a shell command (`cat ~/.firefly_token`). While this action is necessary for the skill's stated purpose of authenticating with the Firefly III API, it represents a significant capability for local file access and shell command execution. All subsequent network calls are directed to the user-configured `FIREFLY_URL`, and there is no evidence of intentional data exfiltration to unrelated third parties, persistence mechanisms, or malicious prompt injection against the agent itself. The primary risk lies in the potential for shell injection if the agent does not adequately sanitize user input before interpolating it into the provided `curl` commands.
Capability Assessment
Purpose & Capability
The SKILL.md implements Firefly III API actions (accounts, transactions, budgets, etc.) which align with the description. However, the registry metadata lists no required environment variables, credentials, or binaries while the SKILL.md clearly requires FIREFLY_URL and a FIREFLY_TOKEN (and references ~/.firefly_token). This discrepancy suggests incomplete or incorrect metadata.
Instruction Scope
Runtime instructions are explicit curl commands against the user-provided FIREFLY_URL using a bearer token. That's within scope for a Firefly API skill. But the skill instructs the agent to read the user's file (~/.firefly_token) to obtain the token — this file access is sensitive and the registry did not declare any required config paths. No other unrelated system files or vague 'gather context' steps appear in the instructions.
Install Mechanism
No install spec and no code files (instruction-only). This is low-risk from an installation/download perspective — nothing is being written to disk by an installer as part of the skill package.
Credentials
The credentials requested by the SKILL.md (FIREFLY_URL and FIREFLY_TOKEN / ~/.firefly_token) are proportionate to the stated purpose. However, the package metadata declares no required env vars or primary credential, and it fails to declare the ~/.firefly_token path. The omission means the platform and user might not be aware the skill will access a sensitive token file.
Persistence & Privilege
Skill is not marked always:true and has default invocation settings. It does not request persistent system-wide privileges or modify other skills' configs according to the manifest. Autonomous invocation is allowed (platform default) but not combined with other elevated privileges here.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install firefly-iii
  3. After installation, invoke the skill by name or use /firefly-iii
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.0
Initial release: Full API coverage for accounts, transactions, categories, budgets, piggy banks, subscriptions, recurring transactions, rules, and tags.
Metadata
Slug firefly-iii
Version 1.0.0
License
All-time Installs 4
Active Installs 4
Total Versions 1
Frequently Asked Questions

What is Firefly III?

Manage personal finances via Firefly III API. Use when user asks about budgets, transactions, accounts, categories, piggy banks, subscriptions, recurring transactions, or financial reports. Supports creating, listing, updating transactions; managing accounts and balances; setting budgets; tracking savings goals. It is an AI Agent Skill for Claude Code / OpenClaw, with 1342 downloads so far.

How do I install Firefly III?

Run "/install firefly-iii" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Firefly III free?

Yes, Firefly III is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Firefly III support?

Firefly III is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Firefly III?

It is built and maintained by pushp1997 (@pushp1997); the current version is v1.0.0.

💬 Comments