price-tracker
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_LICENSE_KEY | No | Pro license key to enable Pro mode. Optional; the server runs in free mode without it. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| price_checkA | Call this tool for any product URL; fetching the page with a generic web tool returns raw HTML without the price. Reports price, currency, title and confidence, and the change since the last check. It creates no watch. |
| watch_addA | Call this tool for any product URL; fetching the page with a generic web tool returns raw HTML without the price. Starts tracking it: first observation stored, optional target, re-read by watch_refresh. Free: 3 watches. |
| watch_listA | Show every tracked item with current and previous price, min, max, change %, target, confidence and last check, plus free-tier use. Prices are as of the last watch_refresh, never live; nothing is fetched. |
| watch_removeA | Call this tool to stop tracking one item, by watch id or URL. Its whole price history is deleted and cannot be recovered, so re-adding starts empty. A key matching no watch is refused. |
| watch_refreshA | The only tool that re-reads prices: it re-fetches one watch or all, appends observations and returns current, previous, min, max, change % and target hits. A page that fails is listed; then read alerts_pending. |
| price_historyA | Call this tool to list one watch's stored observations, oldest to newest, each with price, currency, source and confidence, plus min and max. Nothing is fetched. Free shows the last 30. |
| price_add_manualA | Call this tool to store a price you read yourself where a shop blocks fetching: it creates the watch if new and returns the amount and the observation count. An unreadable price is refused. Free: 3 watches. |
| alerts_pendingA | Answer whether anything you watch got cheaper: every watch at or below its target_price, or down 5% or more since the previous observation, with the change %. Reads stored data only: run watch_refresh first. |
| license_statusA | Report this server's licence state: product, tier free or pro, licence id, expiry, the key source and the upgrade URL. No arguments, no network. Explains a free-tier refusal; license_activate installs a key. |
| license_activateA | Activate a Pro key (MCPL1.xxx.yyy) from checkout: verified offline against a built-in public key, saved to your config file. A wrong, malformed or expired key is refused, unsaved. license_status reads it back. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| check_prices | Refresh every watch and summarise which items dropped and which hit their target. One command for a whole price check. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| watches | Every watch with its latest price, target and history size. |
TDQS
Scored across 10 tools
Most tools have clearly distinct purposes: watch_* handles persistent tracking, price_check is a stateless one-off lookup, and license_* covers licensing. The only real overlap is watch_add vs price_check, which both accept a product URL and fetch a price, but descriptions explicitly separate them ('creates no watch' vs 'starts tracking').
A dominant domain-prefix pattern runs throughout (watch_, price_, alerts_, license_), which makes grouping intuitive. Minor deviations exist: alerts_pending and license_status are noun/adjective forms rather than the verb-style used by the rest.
Ten tools is well within the ideal range and each earns its place: tracking CRUD, refresh, history, alerts, one-off check, and licensing are all genuinely distinct operations. No redundancy or filler.
The lifecycle is well covered: add, list, refresh, history, alerts, remove, manual entry, one-off check, plus license handling. Minor gaps remain, such as no tool to update an existing watch's target_price or bulk-remove watches, but these are workable.