← Plugin catalog
Productivity

ShotPulled

ShotPulled v1.3.0

Track and dial in espresso

Create a free account to save this plugin.

From the developer

Declared limitations

  • General coffee trivia with no user data involved. The prompt says "espresso", but there is nothing to look up in the account and no shot to diagnose, so no connector is needed to answer it. The plugin should not be invoked; the request is outside its supported workflows.
  • Local search. The prompt mentions coffee, but ShotPulled holds only the user’s own brewing records and equipment; it has no places, maps or café data. The plugin should not be invoked; the request is outside its supported workflows.
  • Shopping advice. The prompt names a grinder, but ShotPulled records equipment a person already owns in order to compute its settings; it does not compare or recommend products to buy. The plugin should not be invoked; the request is outside its supported workflows.

Not specified in the available declarations: capabilities, pricing & account requirements.

Sources & dates

Developer declarations; not independently tested. Listing last checked Nov 6, 2026. Package observed Nov 5, 2026.

View package source →

Description

From the marketplace listing

ShotPulled is a brewing log and dial-in assistant for home espresso. You record each shot you pull, and it suggests one change to try on the next one. Register your coffee, grinder, espresso machine, and scale. After each shot, log the dose, yield, brew time, and how it tasted. ShotPulled reads the shot together with the coffee’s age and your grinder setting, then gives the likely causes in ranked order and one adjustment to try next, with the reasoning behind it. It tracks your coffee. Each logged dose is deducted from the bag, so you can see the grams remaining, an estimate of the shots left at the dose you use, and where the bag is in its rest and peak window. Coffees and bags are separate records: register a coffee once, then each bag you buy of it, and your recipes and notes stay with the coffee. It tracks equipment maintenance. ShotPulled holds maintenance information researched for 190 grinder and espresso machine models, drawn from the manufacturers’ manuals where available, for tasks such as descaling, backflushing, burr cleaning and water filters. Ask what is due, log a task when you do it, set your own intervals, and read step-by-step guides where one exists for your model. A task the maker advises against is not listed as due. When a recipe works, lock it and look it up later. ShotPulled handles grinder settings given as clicks, numbered collars, compound ring positions such as 1.2.2, and named settings, and includes specifications for 66 grinders, 124 espresso machines, and 17 scales. What you record here is saved to your ShotPulled account, which the ShotPulled web dashboard and iPhone app also use.

Language: English · Automatically detected from descriptions.

Matches for “task notes”

Exact text from the indicated source. A mention alone does not establish support for your task.

Publisher full description

ShotPulled is a brewing log and dial-in assistant for home espresso. You record each shot you pull, and it suggests one change to try on the next one. Register your coffee, grinder, espresso machine, and scale. After each shot, log the dose, yield, brew time, and how it tasted. ShotPulled reads the shot together with the coffee’s age and your grinder setting, then gives the likely causes in ranked order and one adjustment to try next, with the reasoning behind it. It tracks your coffee. Each logged dose is deducted from the bag, so you can see the grams remaining, an estimate of the shots left at the dose you use, and where the bag is in its rest and peak window. Coffees and bags are separate records: register a coffee once, then each bag you buy of it, and your recipes and notes stay with the coffee. It tracks equipment maintenance. ShotPulled holds maintenance information researched for 190 grinder and espresso machine models, drawn from the manufacturers’ manuals where available, for tasks such as descaling, backflushing, burr cleaning and water filters. Ask what is due, log a task when you do it, set your own intervals, and read step-by-step guides where one exists for your model. A task the maker advises against is not listed as due. When a recipe works, lock it and look it up later. ShotPulled handles grinder settings given as clicks, numbered collars, compound ring positions such as 1.2.2, and named settings, and includes specifications for 66 grinders, 124 espresso machines, and 17 scales. What you record here is saved to your ShotPulled account, which the ShotPulled web dashboard and iPhone app also use.

What changed

Earlier changes · 1 more observation days on this page

· 4 observations

Capabilities & instructions

Supporting files updated; open the comparison for details. Skill instructions changed from “You are helping someone dial in espresso. The person is standing at a machine with a cup in front of them. They want one thing to change, and a reason. ##...” to “Use this skill when the user asks for help with an espresso...

View comparison →
Positioning & listing

Is template instance added: “false”. App-6a7c58989aa081919f4658ff5986e174 updated; open the comparison for details. Shotpulled updated; open the comparison for details. Full description changed from “Dial in better espresso, one informed adjustment at a time. Set up your beans, grinder, espresso machine, and scale...

View comparison →
Positioning & listing

Is template instance added: “false”. App-6a7c58989aa081919f4658ff5986e174 updated; open the comparison for details. Shotpulled updated; open the comparison for details. Full description changed from “Dial in better espresso, one informed adjustment at a time. Set up your beans, grinder, espresso machine, and scale...

View comparison →
Technical updates · 1

Package or technical metadata updated

View technical comparison →

Files & skills

File archives

Plugin package10 files · 60.5 KBBrowse files →
Skill instructions
shotpulled-dialing5.36 KB

View saved version →

---
name: shotpulled-dialing
description: Dial in espresso with ShotPulled. Use when someone describes a shot as sour, bitter, harsh, thin, fast, slow, choked or channeling, asks what to change on their grinder, wants to log a shot, or is dialing in a new bag of coffee. Diagnoses from taste, recommends one change at a time, and records both so the advice stays consistent. Requires the ShotPulled connector.
---

# Dialing in espresso

Use this skill when the user asks for help with an espresso shot they pulled,
asks what to change next, or asks to log a shot. They are usually standing at
the machine with a cup in front of them, and they want one thing to change and
a reason for it.

The user's own instructions come first. If they ask you not to record
something, to skip a step, or to do it another way, do that. Everything below
is how to help when they have not said otherwise.

This skill works only with the user's own ShotPulled records, through the
ShotPulled connector. It needs nothing else: no web browsing, no files, no
other service.

## What it records, and what needs a yes first

Recording is part of what the user asked for, so be open about it.

- **A shot they describe** is logged with `log_shot`, and **the change you
  recommend** is noted with `log_recommendation`. Say that you are recording
  each one. If the user would rather not record anything, use
  `diagnose_preview` instead, which writes nothing.
- **Anything that overwrites or removes stored data needs the user's agreement
  first**: `set_grinder_position`, `lock_recipe`, `update_shot` and
  `delete_shot`. Say what will change, and wait for a yes.
- **`delete_shot` is permanent.** Call it only when the user asks to delete a
  specific shot. To fix a typo, correct the shot with `update_shot`.
- Register or change equipment, coffees and bags only when the user asks.

## Read the state first

When the user asks for dialing help, call `get_dial_state`. It returns the
active bag, grinder, machine and program, the bag's age and remaining weight,
the last few shots, and the locked recipe if there is one.

Do not ask for something the state already holds. If it returns no active
context, sort that out first: say what is missing and offer to register or
activate it, rather than dialing blind.

## The loop

1. **They pull a shot.** Ask for dose in, yield out, time, and how it tasted.
   The taste is the part that matters; the numbers alone diagnose nothing.
2. **Log it** with `log_shot`, so it can be compared against later and the
   bag's remaining weight stays true.
3. **Diagnose** with `diagnose_shot`. It returns ranked hypotheses, not one
   answer. Present them ranked, with the confidence it gave them.
4. **Note the recommendation** with `log_recommendation`. This is what lets
   ShotPulled notice when advice contradicts itself two shots later.
5. **They pull again.** Back to 1.

Use `suggest_next_step` when they ask what to do next without describing a
shot, and `diagnose_preview` to reason about a hypothetical without recording
anything.

## Guidelines for the advice

**One variable per shot.** Grind, or yield, or temperature, or prep, and only
one of them. With two changes neither is measurable. If several things look
wrong, say which you would move first and why the others wait.

**Leave grinder math to the tool.** Collar schemes differ: clicks, numeric
marks, compound rings like `1.2.2`, named settings. Call `grinder_math` for the
distance between two settings, instead of working out rotations or clicks
yourself or assuming a scheme from the grinder's name.

**Speak in clicks or marks, not microns.** Burr sets are not comparable by
particle size, and a figure like "about 450 microns" claims precision that does
not exist.

**Check a stale position.** If the active grinder's setting source is
`recalled` or `assumed`, ask the user to look at the collar and tell you what
it reads before you recommend a move from it. Once they have confirmed it,
record it with `set_grinder_position` and `source="measured"`.

**Read the bag's age.** A shot on day 3 and the same shot on day 24 are not the
same shot. The state carries the age and the peak window; `compute_age` gives
it for any bag. Say when freshness is the likelier explanation than grind.

## How to talk

Keep openers like "Exactly right", "Spot on" or "Almost certainly" for when the
engine rated its confidence high. Confidence is something it reports.

Give the reason with the change. "Go two clicks finer" is worth less than
"Go two clicks finer: it ran 41g in 22 seconds, which is fast for this dose,
and the sourness reads as under-extraction rather than as the roast."

Cite rules by id when the reasoning leans on one. `references/knowledge-base.md`
lists all 47 with a one-line summary; call `get_rule` for the full text before
quoting a rule.

## When it is working

A shot they like is worth keeping. `lock_recipe` stores it as the reference for
that bean, grinder and machine combination, and it comes back in
`get_dial_state` next time. Offer this when a shot lands, and lock it when they
say yes.

## What to avoid

- Recommending a change without noting it.
- Recommending the lever you moved on the previous shot again without saying
  why the last move did not do what you expected.
- Inventing equipment. If they mention a grinder that is not registered, offer
  to register it with `register_grinder`, and ask for the details you do not
  have.
- Quoting a rule you have not read.

Referenced files: 4 — file references are metadata, not package contents.

Release notes

Clearer tool descriptions, and codes beside the words. - Every tool and parameter description is reworded without em dashes. No constraint, default or example changed. - register_coffee and register_bag declare catalog_coffee_id, product_id and lot_revision_id: references the ShotPulled apps set when a coffee comes from the catalog. They are optional, and ChatGPT does not need to send them. - Freshness verdicts carry a stable code beside the words: age_verdict_code on list_beans and get_dial_state, verdict_code on compute_age. - diagnose_shot, diagnose_preview and suggest_next_step add warning_codes beside their warnings (session_fatigue, oscillation). - list_beans gives each origin's country as an ISO 3166-1 alpha-2 code (country_code) beside the name, which stays as written. - A coffee registered without a roaster is now valid in the published output: roaster (list_beans, get_dial_state) and roaster_name (list_recipes) may be null. The server already sent null for one. No tool was renamed or removed, and no parameter became required. Every existing call keeps working unchanged.

Declared in the saved package. Remote tools may change independently.

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package author
ShotPulled
Review scenarios
5 positive · 3 negativeScenario counts, not test results.

Package observed Nov 5, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Nov 6, 2026 · 00:00 UTC
Latest observed change
Oct 24, 2026 · 13:07 UTC
Collection status
Collected

plugin_asdk_app_6a7c58989aa081919f4658ff5986e174

Download plugin data (JSON)