Overview
The Finstracker Claude Skill teaches Claude how to call the Finstracker REST API on your behalf. It ships as two small files:
SKILL.mdcontains instructions Claude reads automatically whenever you mention your wallet, perks, offers, or cards.fins.shis a self-contained bash CLI that wraps the API. Claude invokes it, and you can also run it directly from your terminal.
It uses the same JWT bearer auth as the REST and MCP surfaces. The token is cached at ~/.finstracker/token with mode 0600. Passwords are prompted via read -s, so they never appear in shell history or chat logs.
Install
git clone https://github.com/egomez3412/finstracker-claude-skill.git
mkdir -p ~/.claude/skills/finstracker-cli
cp finstracker-claude-skill/SKILL.md \
finstracker-claude-skill/fins.sh \
~/.claude/skills/finstracker-cli/
chmod +x ~/.claude/skills/finstracker-cli/fins.sh
That's it. The next time you open a Claude session and mention finstracker, the skill loads automatically. No config to edit, no server to run.
Use it
Just say things to Claude:
- "Log me into finstracker as your_username." Claude runs
fins loginand you type the password into the terminal prompt. - "What perks do I have due in the next 30 days?"
- "I used my Amex dining credit at Olive Garden. Mark it off and log the $42 transaction."
- "How much annual-fee value have I left on the table this year?"
- "What offers are loaded on my Chase Sapphire?"
- "Roll over my perks to next year."
- "Am I on Pro? When does it renew?"
The skill knows which endpoint each request maps to, unwraps the response envelope, and turns the JSON into a plain-English summary. It will confirm before any destructive operation (delete, bulk update).
Standalone CLI
The fins.sh script works without Claude too. Symlink it into your PATH and you have a regular CLI:
sudo ln -s "$PWD/finstracker-claude-skill/fins.sh" /usr/local/bin/fins
fins login your_username
fins perks-due --days=30
fins value-left
fins tx-add 67c1…f1a 42 cashback earn "Olive Garden"
Every command prints JSON. Pipe to jq for slicing.
Commands
| Command | What it does |
|---|---|
login <user> | Log in. Password prompted with read -s, never passed as an arg. |
whoami | Show the cached user profile. |
logout | Drop the cached token. |
cards | List your cards. |
perks [--month=YYYY-MM] [--unused] [--card=<id>] | List perks with optional filters. |
perks-due [--days=30] | Unused perks expiring in the next N days, sorted by deadline. |
perk-use <perkId> / perk-unuse <perkId> | Toggle a perk's used flag. |
offers [--card=<id>] [--unused] | List merchant offers. |
offer-use <offerId> | Mark an offer as used. |
tx-add <cardId> <amount> <unit> [type] [note] | Log a transaction. unit=points|cashback, type=earn|redeem. |
billing | Subscription status from Stripe. |
value-left [--year=YYYY] | Sum of unused perk values for the year, in dollars. |
api <METHOD> <PATH> [json-body] | Raw API call. Escape hatch for anything not wrapped above. |
set-api <url> | Point at a different host, e.g. http://localhost:3000/api. |
Config & files
| File | Purpose |
|---|---|
~/.finstracker/token | JWT bearer token, chmod 600. |
~/.finstracker/user.json | Cached profile from last login. |
~/.finstracker/api | Override API base URL. |
FINS_API env var | Per-shell override of the API base. |
Safety rules
- Passwords are never accepted as a plaintext CLI argument;
fins loginprompts viaread -s. - The JWT is mode-
600at~/.finstracker/tokenand is never echoed to stdout. - The skill instructs Claude to confirm before any
DELETEor any change touching more than ~5 records at once. - A 401 response triggers a logout + re-login prompt rather than retrying with a stale token.
Skill vs. MCP: which should I use?
Both surfaces give an LLM the same powers over your wallet. The trade-off:
- Claude Skill (this page) is zero-config. Copy two files and you're done. It works in Claude Code, in Claude.ai with file system access, or anywhere you can run bash. It also doubles as a regular CLI you can script outside of Claude.
- MCP server gives you native tool-call ergonomics in Claude Desktop and other MCP clients. Cleaner schemas, streaming, no shell involved. It requires editing your client's config and pasting in a bearer token.
If you live in a terminal, install the skill. If you live in Claude Desktop and would rather not have a shell in the loop, set up MCP. They share the same backend, so using both is fine.