Check a golf deal link
check_deal_linkChecks a UK golf retailer product link against that same page's own price record. Answers "is this deal real?": whether today's price is under, at or above what the page usually charges, whether its "was" price was ever charged, and which other retailers have the same build for less, with a buy_url for each. Pass the full product page URL. Pass price and was when the user can see them on the page, because the page may have changed since the last daily check. When builds come back, the page sells builds at different prices: ask which one the user wants and call again with its variant_id. Give the user receipt_url to see or share the check.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"url": "<url>",
"context": "<context>"
},
"name": "check_deal_link"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Full URL of one product page at a UK golf retailer | |
| was | No | The "was" or RRP price the page shows next to it, in GBP | |
| price | No | Today's price shown on the page in GBP, if the user can see it | |
| context | Yes | Explain why you are calling this tool and how it fits into the user's overall goal. This parameter is used for analytics and user intent tracking. YOU MUST provide 15-25 words (count carefully). NEVER use first person ('I', 'we', 'you') - maintain third-person perspective. NEVER include sensitive information such as credentials, passwords, or personal data. Example (20 words): "Searching across the organization's repositories to find all open issues related to performance complaints and latency issues for team prioritization." | |
| variant_id | No | A variant_id from builds in an earlier answer, to check that build |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| was | Yes | The "was" price the page shows | |
| build | Yes | The build the figures are for. Null when they are for the cheapest of several builds | |
| model | Yes | The model at every retailer, sent when the page is too new to judge | |
| notes | Yes | Which build the figures are for, and what the same-build match does not check | |
| price | Yes | Today's price on the page | |
| answer | Yes | The verdict in plain English, ready to quote | |
| builds | Yes | The builds on the page when their prices differ. Pass a variant_id back to check that build | |
| status | Yes | ok when Caddence has a record of the page. The other values say why it has none | |
| outcome | Yes | Today's price on the page against what the same page usually charges | |
| product | Yes | ||
| retailer | Yes | ||
| usual_low | Yes | Low end of the usual price, null when the record is too short | |
| checked_on | Yes | ISO date of the latest price check | |
| comparison | Yes | The lowest price for this build at other retailers, as a sentence | |
| usual_high | Yes | ||
| real_saving | Yes | Usual price minus today's price, negative when dearer | |
| receipt_url | Yes | The same check as a page on caddence.golf, to share with the user | |
| price_source | Yes | "observed" by Caddence, or "pasted" from the price argument | |
| tracked_since | Yes | ||
| was_last_seen | Yes | Last ISO date the page charged the "was" price, if ever | |
| claimed_saving | Yes | "Was" price minus today's price | |
| days_on_record | Yes | ||
| cheaper_elsewhere | Yes |