Categories › Data & Databases › Files, spreadsheets, CSV & PDFs
Spreadsheets that fill themselves from your emails and webhooks, the same way every time.
Remote server: your requests and data go to trackerhacker.com. Claude Code: claude mcp add --transport http trackerhacker https://trackerhacker.com/mcp · Claude app: Settings → Connectors → Add custom connector.
The tools this server listed when we connected to it, in its own words.
read_guide — How TrackerHacker works and how to write hacks, mappings, rules, cards and questions, one page at a time. Pages: overview (Read first: the wlist_ready_made — Use this first when the person wants to track, log or keep a record of something that keeps happening (bank transactions, Amazon orders, Shostart_tracking — Use this when the person wants a sheet that keeps itself up to date from their emails or apps ("track my Amazon orders", "log my card spendicreate_custom_track — Use this when the person wants something tracked over time and no ready-made track or shared template fits. Makes a new kind of sheet with tlist_tracks — The person's tracks (sheets), each with its id, link, columns, the hacks that fill it (each with its state: On, Off, Stopped matching, or Pacheck_tracks — What needs attention across all the person's tracks: hacks that stopped matching their senders' messages (the sender probably changed its emcheck_data — Reads one track's data tab and names rows its formulas would read wrong: the same key on two rows (an update finds only the first), a columnfind_row_email — For one row of a track (its number from read_rows), a Gmail search for the email it was made from: from the senders of the hack that wrote isuggest_hack — Suggests a hack (a template that reads one kind of message) from an example email or JSON body, for a track. It's checked against similar metest_hack — Shows what a hack template reads from example messages, without saving anything. Templates are the message's fixed text with {{field:type}} save_hack — Saves a hack and attaches it to a track, so matching messages become rows from now on, then runs the track's Inbox again so messages alreadyread_inbox — Messages that reached a track but didn't make a row (no hack read them, or a rule blocked them), newest first, with why: up to 20 of the newhack_versions — Every version kept of a hack, newest first, with its template, senders and subject words. TrackerHacker numbers them itself: major when the rerun_inbox — Runs the track's hacks over its Inbox again, 50 messages at a time from the newest. Messages they now read become rows and leave the Inbox. add_rows — Adds rows the person tells you about to a track, like a purchase they made in cash. Each row is an object of columns to values, by column keupdate_row — Changes cells of one row in the person's own track, when they correct something ("that burrito was 750 calories, not 600"): read_rows first send_message — Hands an email (its From address, subject and text) or a JSON body to one of the person's own tracks, to be read by its hacks exactly as if get_glance — What the track's Glance cards show now (cards: label, value, detail, tone), and whether cards that turn warn or bad notify the person (alertset_glance — Replaces the cards the track's sheet shows in the app with this list (call get_glance with forEditing: true first, and send the ones it has set_alerts — Glance alerts: whether a Glance card turning warn or bad notifies the people on the track, once until it turns back. On by default. (To do areminders — A reminder nudges the person on their phone or browser at a time of day, on some days of the week, to add a row ("Log your weight"), with a get_questions — The questions the track's sheet asks the person in To do (its To do tab): each row's cells as written, formulas included, and what it asks nset_questions — Replaces the questions in the track's To do tab with this list (call get_questions first, and send the ones it has along with yours). A listlist_todo — What the person's tracks are asking them now (To do in the app), by track: each question's id, prompt, type and choices, and whether the traanswer_question — Writes the person's answer to one of their sheet's questions (from list_todo), as if they tapped it in To do. Only answer what the person todismiss_inbox — Removes messages from the track's Inbox that will never be rows, like newsletters or one-off mails, so check_tracks stops counting them. Thiuse_drafted_fix — When a hack stops matching, TrackerHacker works out an update for it (draftedFix in check_tracks) that waits for the person in To do, where get_webhook_link — The private link other apps (Zapier, IFTTT, iOS Shortcuts, a script, a shop) post JSON or text to, to add rows through the track's hacks. Mascheduled_fetches — For a service that has the data but never sends it (a social network's post stats, a shop's stock, an API with no webhooks): every 1, 3, 6, gmail_forwarding — Whether Forward from Gmail automatically is offered and on, and the link the person opens to turn it on with one Allow tap, on any device. Istop_gmail_forwarding — Turns off Forward from Gmail automatically and revokes Google's grant. Mail forwarded to their TrackerHacker address keeps working. Only wheset_drive_watch — Whether Google Drive tells TrackerHacker when the person's sheets change, so what a sheet asks in its To do tab reaches them with nothing inquick_adds — Quick adds: buttons on the app's Home, for something the person adds often ("Coffee $4", "Walked the dog"): each opens a track's form with aread_rows — Reads the rows in a track's sheet, newest last, to answer the person's questions about them ("what did I spend on dining this month?") or toadd_column — Adds a column of the sheet's own after its last one, for the sheet's formulas or the answers to its questions to fill (a Category the sheet format_sheet — Gives each column of a track's sheet the date or number format its schema promises (dates as dates, money with two decimals), for the rows ause_starter — Builds a track's sheet on the TrackerHacker starter, the base for a template instead of a blank sheet, or updates it to the newest starter. get_schema — A schema (the app shows it to the person as a topic) and its versions, newest last, with every field (key, label, meaning, type, required, epublish_schema — Publishes the next version of one of the person's own schemas (from get_schema, where mine is true), kept private. Give the whole schema witupgrade_track — Moves a track to the next major version of its schema: renames the sheet's headers the version renames and moves its hacks' mappings. RefuseNot tested by KitScout yet. When our harness runs it, pros, cons and the tasks we tried appear here, with the date and evidence.