Chargescout

io.github.GillMacedoPublished by GitHub account GillMacedov0.2.0Updated Nov 3, 2026

Find subscriptions, price increases and double charges in a bank statement CSV, on your machine.

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Reads a bank or card statement CSV locally to find recurring subscriptions, yearly cost, price increases and possible double charges.

What you can do
  • Find recurring charges in a statement CSV, with billing cycle, yearly cost, price-increase and possible double-charge alerts
  • Inspect an unfamiliar CSV to see which columns are detected and how many rows can be read, without returning row contents
  • Answer questions such as what subscriptions are being paid for, what they cost per year, which prices went up, and what was charged twice
When to use it
Useful when auditing personal or business spending from a CSV export of bank or card transactions, looking for forgotten subscriptions or price increases, or deciding what to cancel. It works on a file you already have, with no bank login.
Requirements
Runs as a local process over stdio; Node.js is needed to run it through npx, or Go 1.27 or newer to build the binary. No account, API key or network access is required. A CSV export of transactions is needed, and a longer history, ideally a year, gives better results.
Before you install
The find tool returns merchant names and amounts to the MCP client, so they reach whichever AI model is used; the command-line mode keeps everything on the machine. Results are estimates, not financial advice, and should be checked against the statement. It reads CSV only, assumes two decimal places, does not convert currencies, and has been tested on made-up data rather than real bank exports. It cannot cancel anything.

Installation

In SourceWeft

  1. Open Chargescout in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

chargescout: find subscriptions and recurring charges in your bank statement

[npm] [CI] [MIT license] [MCP Registry]

See every subscription you're paying for, what it costs per year, which prices went up, and where you were charged twice, without linking your bank account or uploading anything. For small businesses, freelancers and anyone auditing their spending.

Subscription trackers usually want your bank login and charge a monthly fee. chargescout reads a CSV export from your bank or card instead, and finds the charges that repeat weekly, monthly, quarterly or yearly. It's an MCP server and a single Go binary, with no account, no API key and no network access.

What you can ask your agent

  • "What subscriptions am I paying for?"
  • "How much do my recurring charges cost per year?"
  • "Which subscription prices went up?"
  • "Was I charged twice for anything?"
  • "What should my business cancel to save money?"

Install

As a Claude Code plugin, which adds the MCP server and a skill that tells Claude when to use it. You need Node, which runs the server through npx:

claude plugin marketplace add GillMacedo/chargescoutclaude plugin install chargescout@chargescout-marketplace

For other MCP clients:

json
{  "mcpServers": {    "chargescout": {      "command": "npx",      "args": ["-y", "chargescout", "serve"]    }  }}

Or build the binary with Go 1.27 or newer:

go install github.com/GillMacedo/chargescout@latest

Usage

Without installing anything, run npx chargescout find statement.csv. This example uses the made-up statement in examples/:

$ go run . find examples/statement.csvSAMPLE POWER CO  83.30  monthly  999.60/year  last 2026-09-12  active  (likely)  ! amount varies, so this may be a usage-based billMOCK ACCOUNTING SOFTWARE  60.00  quarterly  240.00/year  last 2026-08-25  active  (likely)SAMPLE STREAM  18.99  monthly  227.88/year  last 2026-09-03  active  ! price went up from 15.99 to 18.99 on 2026-06-03PLACEHOLDER DOMAINS ANNUAL  120.00  yearly  120.00/year  last 2026-09-14  active  (likely)EXAMPLE CLOUD STORAGE  9.99  monthly  119.88/year  last 2026-09-07  active  ! possible double charge of 9.99 on 2026-06-08FICTIONAL GYM MEMBERSHIP  45.00  monthly  540.00/year  last 2026-05-21  may have stoppedSKIPPED row 59: no valid date or amount6 recurring charges, 5 active, costing 1707.36 a year

Add --positive-out if your file shows charges as positive numbers, as many card statements do, and --json for machine-readable output. A longer statement gives better results, and a year of history is ideal.

How it decides

FindingRule
Recurring4 or more charges from one merchant at a steady interval and price
Likely3 charges, 2 charges a year apart, or a steady bill whose amount changes most cycles
May have stoppedThe next charge is overdue by the end of the statement. It's left out of the total

Most intervals must fit the cycle, and amounts must stay within 25%, so everyday shopping isn't reported. Two plans from one company stay separate.

MCP tools

ToolWhat it does
subscriptions_findReturns recurring charges, yearly cost and alerts, with a limit for long results
subscriptions_inspect_csvShows detected columns and row counts, without row contents

Both are read-only. subscriptions_find returns merchant names and amounts to the MCP client, so they reach whichever AI model you use. The CLI keeps everything on your machine.

FAQ

How do I find forgotten subscriptions? Export your bank or card transactions as CSV and run npx chargescout find statement.csv.

Do I have to connect my bank account? No. It only reads the file you give it, and it has no network code.

Can it cancel subscriptions? No. It shows you what's there, and you cancel with each provider.

Does it work with my bank? It reads CSV exports and recognizes common column names in several languages, and you can name others with --columns date=When,amount=Sum,description=What. It hasn't been tested on each bank's real exports yet.

Limits

  • This helps you review spending and isn't financial advice. Check results against your statement.
  • It reads CSV only, so PDF statements need converting first.
  • Merchant names come from bank descriptions, so one company can appear under two names, and those won't be connected.
  • It can miss charges with irregular timing, and can report steady non-subscription spending, such as rent or a regular purchase.
  • Yearly cost is the last amount times the cycles per year, so it's an estimate.
  • It assumes two decimal places, and doesn't convert currencies.
  • So far it has been tested on made-up data, not real exports. If yours fails, please open an issue with the column headers, not your data.

Contributing

Contributions are welcome, from people and from people working with AI agents. See CONTRIBUTING.md. Good first issues:

  • Add column names from more banks and languages
  • Add more card-processor prefixes to merchant name cleanup
  • Connect the same merchant under different names
  • Add --out to write results to a CSV
  • Add a plugin icon

AI disclosure

This project was largely generated with Claude Code and reviewed by its maintainer.

About me

I'm Giulliano Macedo, and I build developer tools at GoTech Solutions. Follow along or get in touch:

If chargescout found a charge you forgot about, a star helps others find it.


MIT licensed.

Built by Giulliano Macedo, GoTech Solutions · LinkedIn · X

Source: README.md at commit 5fbae2c

Tools

2

subscriptions_find

Find subscriptions and recurring charges

Finds subscriptions and other recurring charges in a bank or card statement CSV, with billing cycle, yearly cost, price increases and possible double charges. Use to audit spending or find what to cancel. Read-only, and never uses the network. Results include merchant names and amounts from the file, so they reach the model. It can't cancel anything.

Parameterspathrequiredlimitcolumnsdate_formatpositive_out

subscriptions_inspect_csv

Inspect a statement CSV

Shows which columns chargescout detects in a statement CSV and how many rows it can read, without returning row contents. Use if the file is unfamiliar or nothing was found.

Parameterspathrequireddate_format

Version history

2
  1. v0.2.0LatestNov 1, 2026
  2. v0.1.0Oct 31, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts