Categories › Knowledge & Everyday › Games, entertainment & hobbies
Espresso dialing: log a shot, say how it tasted, get one change in your grinder's own clicks.
Remote server: your requests and data go to mcp.shotpulled.com. Claude Code: claude mcp add --transport http shotpulled https://mcp.shotpulled.com/mcp · Claude app: Settings → Connectors → Add custom connector.
The tools this server listed when we connected to it, in its own words.
register_grinder — Register a manual or electric grinder with its dial settings scheme. It becomes the active grinder only when no grinder is in use (none actiset_grinder_position — Set the current grinder collar position. source="measured" resets verification freshness. It replaces the stored position; no history of earregister_machine — Register an espresso or alternative preparation machine. It becomes the active machine only when no machine is in use (none active, or the aset_equipment_archived — Archive or restore a grinder, machine, water, or scale.update_grinder — Correct a registered grinder: its name, burrs, collar scheme, nominal step, layout, range or notes. Only the keys you send in fields change;update_machine — Correct a registered machine (its name, control type, prep type and style, basket, boiler, accessories or notes), or record where its selectupdate_scale — Correct a registered scale: its type, resolution, capacity, capabilities, build or notes. Only the keys you send in fields change; send nullupdate_water — Correct a registered water: its name, type, mineral figures or notes. Only the keys you send in fields change; send null to clear an optionalog_maintenance — Log a cleaning or maintenance job against a piece of equipment. A task that takes the thing apart opens a calibration epoch, and every recipset_maintenance_offset — Record how far a maintenance job moved the reference, on an entry that opened a calibration epoch. Takes an ENTRY, not a piece of equipment:set_maintenance_schedule — Set the user's own schedule for one maintenance task on one grinder or machine: their own interval, switching it off, or muting the reminderget_maintenance_guides — Step-by-step maintenance guides: tools, supplies, steps and warnings, in our own words with the maker's documents as sources. With no argumelist_maintenance_due — What maintenance is due across the user's current grinders and machines, most urgent first. Use it for "is anything due?". Only tasks with aregister_water — Register a custom or commercial water formulation.list_waters — List registered waters for the account. The `id` on each row is the number this account knows that record by, counting from 1: safe to show,register_scale — Register a brewing scale: the instrument that weighs the dose and the yield.list_scales — List registered scales for the account. The `id` on each row is the number this account knows that record by, counting from 1: safe to show,register_program — Register a programmed shot button on a machine. A program cuts the shot off either by weight (program_type "volumetric", set target_volume_gregister_coffee — Register a coffee that is NOT yet in list_beans, together with its first bag. It does not switch a coffee in use: it becomes active only wheset_active — Switch the active bean, grinder or machine for this account. The numbers come from list_beans, list_grinders and list_machines. Registering update_bean — Update a coffee's own fields (roaster, origins, roast level, rest window, notes, rating…). Bag-shaped fields sent here (state, roast_date, bget_dial_state — Retrieve current dialing state, active context, recent shots, recommendations, and locked recipes.log_shot — Log an espresso or alternative shot/brew attempt. Uses the active context (bean/grinder/machine/program) unless overridden via bean_id/grindlock_recipe — Lock a successful shot as the reference dialing recipe for this equipment profile. It overwrites the recipe already locked for the same coffdelete_shot — Delete a logged shot from history. Restores the bean's remaining weight (which is derived from logged doses). Hard delete: there is no undo.update_shot — Correct fields on an already-logged shot in place, with no need to delete and re-log. Use for fixing a wrong dose/yield/time or grind label,list_recipes — List recipes (all or filtered by equipment and status). The `id` on each row is the number this account knows that record by, counting from get_stats — Get compact flat usage stats for a grinder, machine, or bean.list_grinders — List grinders registered for the account, with status filter. The `id` on each row is the number this account knows that record by, countinglist_machines — List machines registered for the account, with status filter. The `id` on each row is the number this account knows that record by, countinglist_beans — List the coffees registered for the account, with status filter. Each coffee carries its bags[] (every purchase, with its own freshness and grinder_math — Determine steps/clicks difference and directions between setting labels (C3).compute_age — Compute a bag's age in days off roast and its resting/staling verdict, for the coffee's current bag by default or for the bag named.diagnose_shot — Evaluate shot metrics to provide ranked hypotheses (C6) and warn on flip-flops (G2) or fatigue (G6). Resolves the SHOT's own bean (age compusuggest_next_step — Retrieve the single next experiment step from the reasoning engine.log_recommendation — Log a recommended dialing change to allow contradiction/oscillation checking (G2).get_rule — Retrieve the detailed text of a specific rule from the knowledge base by its rule ID.get_kb_version — Retrieve the current version of the knowledge base.kb_changelog — Retrieve the changelog showing updates and version differences for the knowledge base.diagnose_preview — Sandbox-only diagnosis, writes nothing (no verdict, no recommendation-trail entry). Two modes: pass shot_id to dry-run a LOGGED shot (optionNot tested by KitScout yet. When our harness runs it, pros, cons and the tasks we tried appear here, with the date and evidence.