caddence
Registry code: 8d97ffc22e5b734f
Live UK golf club prices across 40 retailers: offers, price history and deal ratings in GBP.
from a public catalogue that lists it, not from the operator
- endpoint
- https://caddence.golf/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is caddence live?
- Yes — it answered the hub's last check (checked 16m ago). It answered 99% of checks over the last 30 days.
- Is caddence free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does caddence have?
- 7 tools: check_deal_link, get_deal_intelligence, get_product_offers, get_price_history, search_golf_products, get_market_deals, get_catalog_stats.
- Is caddence safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 98.9%· all time 98.9%
last good check
of 7 tools
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- used for
- search uk golf equipment prices
- get retailer offers for a club
- get golf product price history
- find the best golf deals
- takes → gives
- text → data
- tools
- 6 reads
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
search_golf_products reads open 19h ago
Search Caddence's UK golf equipment price-comparison catalogue (clubs, balls, bags, shoes, accessories across all major UK golf retailers; prices in GBP, refreshed daily). Returns best current prices with retailer counts. When in_stock is false, price is the last seen price, not a live offer. For retailer offers and purchase links, follow up with get_product_offers using the returned slug. If unsure of valid brand or product_type values, call get_catalog_stats first.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "brand": { "type": "string", "description": "Exact brand filter, e.g. \"Titleist\"" }, "limit": { "type": "integer", "default": 10, "maximum": 25, "minimum": 1 }, "query": { "type": "string", "description": "Free-text search, e.g. \"taylormade qi10 driver\"" }, "offset": { "type": "integer", "maximum": 9007199254740991, "minimum": 0 }, "context": { "type": "string", "description": "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.\"" }, "on_sale": { "type": "boolean", "description": "Only products currently below RRP" }, "sort_by": { "enum": [ "price_low", "price_high", "savings", "rrp_discount" ], "type": "string" }, "condition": { "enum": [ "new", "used" ], "type": "string" }, "max_price": { "type": "number", "description": "Maximum price in GBP", "exclusiveMinimum": 0 }, "min_price": { "type": "number", "minimum": 0, "description": "Minimum price in GBP" }, "product_type": { "type": "string", "description": "Exact type filter, e.g. \"driver\", \"iron_set\", \"putter\", \"balls\"" } } }arguments 66 linesget_market_deals reads open 12h ago
Current best-value products across the UK market: largest verified price spreads between retailers (3+ retailers, false-positive filters applied). Good for "what are the best golf deals right now?". Follow up with get_product_offers for purchase links.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "limit": { "type": "integer", "default": 10, "maximum": 25, "minimum": 1 }, "context": { "type": "string", "description": "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.\"" }, "category": { "type": "string", "description": "Product type filter, e.g. \"driver\", \"iron_set\", \"putter\"" } } }arguments 23 linesget_catalog_stats reads open 12h ago
Live catalogue totals plus the valid values for search filters (brands, product types, conditions, flexes, hands, price range). Call this before filtered searches if unsure which brand or product_type spellings the catalogue uses.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "context": { "type": "string", "description": "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.\"" } } }arguments 13 linescheck_deal_link unknown 4h ago
Checks 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.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "url", "context" ], "properties": { "url": { "type": "string", "maxLength": 2048, "minLength": 1, "description": "Full URL of one product page at a UK golf retailer" }, "was": { "type": "number", "maximum": 50000, "description": "The \"was\" or RRP price the page shows next to it, in GBP", "exclusiveMinimum": 0 }, "price": { "type": "number", "maximum": 50000, "description": "Today's price shown on the page in GBP, if the user can see it", "exclusiveMinimum": 0 }, "context": { "type": "string", "description": "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": { "type": "string", "pattern": "^\\d+$", "description": "A variant_id from builds in an earlier answer, to check that build" } } }arguments 37 linesget_deal_intelligence reads unknown 12h ago
Deal-quality assessment for one product: CaddenceScore (0-100 rating of the current best DEAL, not the club), price trajectory vs typical/low/high, used market stats, and per-build availability (condition/flex/loft/hand) with the cheapest retailer and a buy_url purchase link per build. Use this to answer "is this a good price right now?".
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "slug": { "type": "string", "minLength": 1, "description": "Alias for product — pass either" }, "context": { "type": "string", "description": "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.\"" }, "product": { "type": "string", "minLength": 1, "description": "Product slug (preferred, from search results) or numeric product id" } } }arguments 23 linesget_product_offers reads unknown 19h ago
Current UK retailer offers for one product, in-stock first then cheapest, with variant details (shaft, flex, hand, loft, condition). The summary object always gives the cheapest in-stock new offer and the cheapest in-stock used offer, with counts, whatever condition is requested. Used means every second-hand condition (used, refurbished, ex-display); each offer still states its own condition. Set condition to "new" when the shopper wants a new club and "used" for second-hand; the default "all" mixes both. Each offer and each cheapest entry includes buy_url, a Caddence redirect link. Always present buy_url as the purchase link when the user wants to buy; never reconstruct or substitute retailer URLs.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "slug": { "type": "string", "minLength": 1, "description": "Alias for product — pass either" }, "context": { "type": "string", "description": "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.\"" }, "product": { "type": "string", "minLength": 1, "description": "Product slug (preferred, from search results) or numeric product id" }, "condition": { "enum": [ "new", "used", "all" ], "type": "string", "description": "Which offers to list: \"new\", \"used\" (any second-hand condition) or \"all\" (default; reserves room for both so used stock cannot hide new). Applied before the 30-offer cap." } } }arguments 32 linesget_price_history reads unknown 19h ago
Daily lowest/average UK price for one product over a trailing window, plus summary stats (historical low with date, high, trend direction). Optionally scoped to a variant configuration; if the variant series is too thin the backend falls back to product-level history (see scope field).
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "required": [ "context" ], "properties": { "days": { "type": "integer", "default": 90, "maximum": 365, "minimum": 7, "description": "Trailing window in days" }, "flex": { "type": "string" }, "hand": { "type": "string", "description": "e.g. \"RH\" or \"LH\"" }, "loft": { "type": "string" }, "slug": { "type": "string", "minLength": 1, "description": "Alias for product — pass either" }, "context": { "type": "string", "description": "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.\"" }, "product": { "type": "string", "minLength": 1, "description": "Product slug (preferred, from search results) or numeric product id" }, "condition": { "enum": [ "new", "used" ], "type": "string" } } }arguments 47 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id8d97ffc22e5b734f.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/8d97ffc22e5b734f/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/8d97ffc22e5b734f?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.