KlickyMart
Which online stores AI shopping agents can buy from: guest checkout, pay methods, landed cost.
我该使用它吗
质量与安全性
发现(1)
- LOW在 watch_item 中
基于对工具定义和协议合规性的自动分析。
上下文开销
这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。
安装
一键安装
将以下内容添加到你的 `claude_desktop_config.json` 文件中:
{
"mcpServers": {
"klickymart": {
"url": "https://klickymart.com/mcp"
}
}
}远程端点
https://klickymart.com/mcpstreamable-http它能做什么
工具清单
工具(15)
🟢search_merchants(q, status, min_trust, reachable, category, ...)
Search KlickyMart merchant records (same filters as GET /q)
输入模式
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "substring of domain or store name"
},
"status": {
"type": "array",
"items": {
"type": "string",
"enum": [
"crawled",
"blocked-tos",
"agents-not-welcome",
"error"
]
}
},
"min_trust": {
"type": "string",
"enum": [
"flagged",
"unverified",
"seen",
"verified"
],
"description": "Minimum trust_tier; applied before paging so total is exact. Items carry trust_tier, trust_proofs, trust_label, trust_why, src"
},
"reachable": {
"type": "boolean",
"description": "status crawled and agent access >= 1"
},
"category": {
"type": "string",
"enum": [
"shopping",
"electronics",
"gift-cards",
"groceries",
"apparel",
"hardware",
"books",
"travel",
"crypto-hardware",
"other"
],
"description": "shopping (the vertical) or a coarse product category"
},
"cat": {
"type": "array",
"items": {
"type": "string",
"enum": [
"gen",
"elec",
"groc",
"appr",
"home",
"beau",
"food",
"trav",
"tix",
"auto",
"pet",
"toy",
"book",
"sw",
"mkt",
"oth",
"btcnative",
"gift",
"sport",
"office",
"craft",
"jewel"
]
},
"description": "Fine store-type codes"
},
"sub": {
"type": "string",
"enum": [
"audio",
"computers",
"phones",
"tv-video",
"cameras",
"gaming",
"wearables",
"smart-home",
"appliances",
"networking",
"accessories",
"gift-cards",
"wholesale",
"handbags"
],
"description": "Product family the store sells"
},
"btc": {
"type": "integer",
"description": "exact BTC grade 0-4"
},
"btc_min": {
"type": "integer"
},
"btc_any": {
"type": "boolean"
},
"pay": {
"type": "array",
"items": {
"type": "string",
"enum": [
"card",
"apay",
"gpay",
"spay",
"pp",
"venmo",
"cashapp",
"zelle",
"ach",
"check",
"cod",
"gift",
"bnpl",
"ebt",
"btc",
"ln",
"lnurl",
"bolt12",
"sp",
"ark",
"cashu",
"fedi",
"liq",
"usdc",
"usdt",
"eth",
"xmr",
"ltc",
"crypto",
"oth",
"hsa",
"link",
"btc-onchain",
"onchain",
"on-chain",
"bitcoin_onchain",
"lightning",
"btc-lightning",
"shop-pay",
"shoppay",
"apple-pay",
"applepay",
"google-pay",
"googlepay",
"paypal",
"gift-card",
"giftcard",
"credit-card",
"debit-card",
"cash-app",
"ecash",
"stripe-link",
"link-by-stripe",
"bitcoin",
"lightning",
"ecash"
]
},
"description": "any of these method codes; aliases (btc-onchain, lightning, shop-pay...) are accepted; a single group name (bitcoin, lightning, ecash) works too"
},
"pay_all": {
"type": "array",
"items": {
"type": "string"
}
},
"pay_group": {
"type": "string",
"enum": [
"bitcoin",
"lightning",
"ecash"
]
},
"scope": {
"type": "string",
"enum": [
"online",
"instore",
"unscoped",
"any"
]
},
"ag_min": {
"type": "integer"
},
"co_min": {
"type": "integer"
},
"ease_min": {
"type": "integer"
},
"guest": {
"type": "integer",
"enum": [
0,
1
]
},
"tos": {
"type": "string",
"enum": [
"ok",
"bans-automation",
"unknown"
]
},
"btc_indirect": {
"type": "integer",
"enum": [
0,
1
],
"description": "1 = stores where bitcoin works only indirectly (third-party processor such as BitPay/Confirmo/Coinbase Commerce/OpenNode, or a gift card bought with BTC); not native acceptance"
},
"ship_pre": {
"type": "integer",
"enum": [
0,
1
],
"description": "1 = shows shipping and tax before the payment step (observed by the probe)"
},
"ships_us": {
"type": "integer",
"enum": [
0,
1
]
},
"free_ship_max": {
"type": "number",
"description": "free-shipping threshold at or below this many USD (publicly stated)"
},
"agent_native": {
"type": "integer",
"enum": [
0,
1
],
"description": "1 = agent-native stores only"
},
"an_cat": {
"type": "string",
"enum": [
"l402",
"x402",
"vpn",
"esim",
"vps-hosting",
"gift-cards",
"nostr-native",
"agent-commerce",
"btcmap-online",
"vps",
"vpn",
"esim",
"paid-api",
"gift-cards"
]
},
"rail_status": {
"type": "string",
"enum": [
"verified-402",
"claimed"
]
},
"limit": {
"type": "integer",
"maximum": 100
}
}
}🟢get_record(domain)
Fetch one merchant record by domain
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string"
}
},
"required": [
"domain"
]
}🟢check_domain(domain, zip)
Can my agent shop here? Verdict for one domain from the index (reachable, checkout-blocked, agents-not-welcome, blocked-tos, error, not-in-index; see verdict_reason and primary_reason), with checkout depth, pay methods, BTC grade, record time and evidence URL. Never triggers a live crawl.
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Hostname, e.g. example.com"
},
"zip": {
"type": "string",
"description": "5-digit US ZIP: adds landed-cost estimate (tax estimate by state, shipping signals)"
}
},
"required": [
"domain"
]
}🟢find_offers(gtin, mpn, q, domain, zip, ...)
Product-level offers KlickyBot observed on store pages (schema.org JSON-LD or Shopify JSON): price, currency, stock, URL, checked_at. Match by gtin (UPC/EAN), mpn, or name words (q). Optional zip adds a landed-cost estimate; live=true also returns a live (uncached) Shopify Catalog search for q.
输入模式
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"mpn": {
"type": "string"
},
"q": {
"type": "string"
},
"domain": {
"type": "string"
},
"zip": {
"type": "string"
},
"in_stock": {
"type": "boolean"
},
"max_price": {
"type": "number"
},
"live": {
"type": "boolean"
},
"limit": {
"type": "integer",
"maximum": 100
}
}
}🟢get_landed_price(zip, q, gtin, mpn, url, ...)
One call: a product's landed price at a US ZIP. Searches KlickyMart-observed offers (and, with live=true, the live Shopify Catalog, never stored), and returns for every product: price, stock, url, checked_at, shipping (with source), est. tax with the rate used, est_total ONLY when price+shipping+tax are all known, plus store facts (pay methods incl. Shop Pay/Link/BTC, guest checkout, checkout depth, first blocker). Products from stores KlickyMart has not indexed say 'store not indexed'.
输入模式
{
"type": "object",
"properties": {
"zip": {
"type": "string",
"description": "5-digit US ZIP"
},
"q": {
"type": "string"
},
"gtin": {
"type": "string"
},
"mpn": {
"type": "string"
},
"url": {
"type": "string",
"description": "a product URL to price"
},
"domain": {
"type": "string"
},
"in_stock": {
"type": "boolean"
},
"max_price": {
"type": "number",
"description": "item price only, before shipping and tax"
},
"max_landed": {
"type": "number",
"description": "delivered total budget: price + shipping + estimated tax (rows with unknown total are left out)"
},
"live": {
"type": "boolean"
},
"condition": {
"type": "string",
"enum": [
"new",
"refurbished",
"open-box",
"used",
"unknown"
]
},
"type": {
"type": "string",
"enum": [
"headphones",
"earbuds",
"headset",
"speaker",
"grinder",
"gift-card",
"bundle",
"accessory"
]
},
"brand_strict": {
"type": "boolean"
},
"limit": {
"type": "integer",
"maximum": 50
}
},
"required": [
"zip"
]
}🟡build_experience_note(preset, domain, depth, basis, product, ...)
Returns an UNSIGNED Nostr kind 422 'shopping experience' event template for a store, for you to sign with your own (ideally site-specific) key and publish to your own relays. KlickyMart never signs or publishes for you. Optionally POST the signed event to /reviews (or the submit_review tool). Location must be ZIP3, US state (US-KS) or country only. Proof tags (zap/preimage/cashu/order_hash = sha256 of the confirmation) mark a verified purchase. preset=checkout (record_checkout): one call at the payment screen records subtotal, shipping and tax for a ZIP3; depth is then optional.
输入模式
{
"type": "object",
"properties": {
"preset": {
"type": "string",
"enum": [
"checkout"
],
"description": "checkout = record_checkout: call once at the payment screen, before paying. Needs region (ZIP3 only), price_seen (subtotal), shipping, tax; total optional and checked. Sets basis=visit, depth=payment, shipping_source=checkout. 2+ independent aged keys are needed before a quote drives est_total on /landed."
},
"domain": {
"type": "string"
},
"depth": {
"type": "string",
"enum": [
"browse",
"product",
"cart",
"checkout",
"shipping",
"payment",
"paid",
"delivered"
],
"description": "furthest stage reached (same stages as checkout maps; 'attempt' accepted as an alias)"
},
"basis": {
"type": "string",
"enum": [
"visit",
"directory",
"secondhand",
"unknown"
],
"description": "visit = you went to the store; directory = written from KlickyMart data; secondhand = relayed; omitted = unknown. Only visit counts toward the chart."
},
"product": {
"type": "string",
"description": "product URL or GTIN"
},
"guest": {
"type": "string",
"enum": [
"true",
"false",
"unknown",
"yes",
"no"
],
"description": "yes/no are aliases for true/false"
},
"account_required": {
"type": "string",
"enum": [
"true",
"false",
"unknown",
"yes",
"no"
]
},
"shown_before_payment": {
"type": "string",
"description": "comma list: tax, shipping, none, not-observed or unknown"
},
"blocker": {
"type": "string"
},
"walls": {
"type": "array",
"items": {
"type": "string"
}
},
"pay_used": {
"type": "string",
"description": "vocab pay code (see /vocab.json), e.g. ln, btc, card, spay"
},
"pay_offered": {
"type": "array",
"items": {
"type": "string"
},
"description": "vocab codes; an empty list means you looked and saw none (tagged none-observed); omit if not checked"
},
"btc_route": {
"type": "string",
"enum": [
"native",
"indirect",
"lightning"
]
},
"tax_shown_before_payment": {
"type": "string",
"enum": [
"true",
"false",
"unknown",
"not-observed"
]
},
"shipping_shown_before_payment": {
"type": "string",
"enum": [
"true",
"false",
"unknown",
"not-observed"
]
},
"price": {
"type": "string",
"description": "the item price you saw (alias price_seen)"
},
"price_seen": {
"type": "string"
},
"price_paid": {
"type": "string",
"description": "what you actually paid, if you paid"
},
"fee": {
"type": "string",
"description": "a store or payment fee, e.g. a gift-card fee"
},
"shipping_source": {
"type": "string",
"enum": [
"policy",
"checkout",
"unknown"
],
"description": "where the shipping amount came from: the store's shipping policy, the checkout itself, or unknown"
},
"price_source": {
"type": "string",
"enum": [
"klickymart",
"store"
],
"description": "price copied from KlickyMart data or read on the store"
},
"strict": {
"type": "boolean",
"description": "reject unknown fields instead of ignoring them with a warning"
},
"estimated": {
"oneOf": [
{
"type": "boolean"
},
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "string"
}
}
],
"description": "true = every amount you give is an estimate; false = none; or a list of amount kinds you estimated (array or comma string, e.g. tax,total)"
},
"shipping": {
"type": "string"
},
"tax": {
"type": "string"
},
"total": {
"type": "string"
},
"currency": {
"type": "string"
},
"region": {
"type": "string",
"description": "ZIP3, US-XX or country code"
},
"duration_s": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "string"
}
},
"agent": {
"type": "string"
},
"delivered": {
"type": "string",
"enum": [
"true",
"false",
"unknown",
"yes",
"no"
]
},
"delivery_days": {
"type": "string"
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"narrative": {
"type": "string"
}
},
"required": [
"domain"
]
}🟡get_checkout_map(domain)
Checkout steps our probe reached for a store (stopping at the payment screen, never submitting), the first blocker (bot-wall, http-refusal, network-error, no-product-link, no-add-to-cart, form-gate, login-wall, robots, unclassified, none) and landed-cost signals.
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string"
}
},
"required": [
"domain"
]
}🟢recheck_domain(domain)
Re-read robots.txt and the home-page status for an indexed store now. Max 1 per store per 10 minutes (else cached result + next_allowed_at), 60 per hour overall.
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string"
}
},
"required": [
"domain"
]
}⚪watch_item(gtin, domain, max_price, in_stock, note)
DRAFT (GO D8, not served yet): returns an unsigned kind 420 watch template for price/stock changes. KlickyMart does not act on watches yet and never signs for you.
输入模式
{
"type": "object",
"properties": {
"gtin": {
"type": "string"
},
"domain": {
"type": "string"
},
"max_price": {
"type": "number"
},
"in_stock": {
"type": "boolean"
},
"note": {
"type": "string"
}
}
}🟢find_alternatives(include_blocked, include_indirect, domain, category, sub, ...)
Where else can my agent buy this? Give a blocking domain and/or a category (electronics, gift-cards, groceries, apparel, hardware, books, travel, crypto-hardware, other, or a product word like headphones). Product words resolve to a finer sub (headphones -> audio). Returns in-map stores an agent can reach that sell that product family, ranked by checkout reached, major retailer, main product line, agent access, BTC grade, checkout ease, each with an evidence URL, plus turned_away stores with reasons. Index only; never crawls.
输入模式
{
"type": "object",
"properties": {
"include_blocked": {
"type": "boolean",
"description": "also list stores whose checkout is blocked (bot wall or refusal); they rank last. Default false."
},
"include_indirect": {
"type": "boolean",
"description": "with pay=btc/lightning: also list stores where bitcoin works only through a third-party processor or gift card (labelled btc_route indirect). Default: native acceptance only."
},
"domain": {
"type": "string"
},
"category": {
"type": "string",
"description": "coarse category or product word (headphones, laptop, gift card...)"
},
"sub": {
"type": "string",
"enum": [
"audio",
"computers",
"phones",
"tv-video",
"cameras",
"gaming",
"wearables",
"smart-home",
"appliances",
"networking",
"accessories",
"gift-cards",
"wholesale",
"handbags"
],
"description": "product family"
},
"pay": {
"type": "string",
"enum": [
"card",
"apay",
"gpay",
"spay",
"pp",
"venmo",
"cashapp",
"zelle",
"ach",
"check",
"cod",
"gift",
"bnpl",
"ebt",
"btc",
"ln",
"lnurl",
"bolt12",
"sp",
"ark",
"cashu",
"fedi",
"liq",
"usdc",
"usdt",
"eth",
"xmr",
"ltc",
"crypto",
"oth",
"hsa",
"link",
"btc-onchain",
"onchain",
"on-chain",
"bitcoin_onchain",
"lightning",
"btc-lightning",
"shop-pay",
"shoppay",
"apple-pay",
"applepay",
"google-pay",
"googlepay",
"paypal",
"gift-card",
"giftcard",
"credit-card",
"debit-card",
"cash-app",
"ecash",
"stripe-link",
"link-by-stripe",
"bitcoin"
]
},
"guest": {
"type": "boolean",
"description": "exclude stores known to require an account"
},
"zip": {
"type": "string",
"description": "5-digit US ZIP: adds landed cost per store"
},
"taxpre": {
"type": "boolean",
"description": "with zip: only stores observed to show shipping and tax before payment"
},
"limit": {
"type": "integer",
"maximum": 50
}
}
}🟢find_agent_native(category, rail_status, reachable_only, limit)
Agent-native stores: sellers an agent can pay without a browser checkout (L402/x402 paid APIs, VPN, eSIM, VPS, gift cards, nostr-native, agent-commerce). Each item has agent_native {category, label verified-402|claimed, rails, rails_status, probe_402 with price_seen}. verified-402 = our one unauthenticated request got a real HTTP 402 challenge; we never paid. Stores that refuse agents are returned as findings (status not crawled), never as options. Index only.
输入模式
{
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"vps",
"vpn",
"esim",
"paid-api",
"gift-cards",
"l402",
"x402",
"vpn",
"esim",
"vps-hosting",
"gift-cards",
"nostr-native",
"agent-commerce",
"btcmap-online"
]
},
"rail_status": {
"type": "string",
"enum": [
"verified-402",
"claimed"
]
},
"reachable_only": {
"type": "boolean",
"description": "default false: findings (blocked-tos, agents-not-welcome, error) are included and labelled"
},
"limit": {
"type": "integer",
"maximum": 100
}
}
}🟢get_reviews(domain)
Kind 422 reviews of a merchant (signed claims by pseudonymous keys; not verified by KlickyMart).
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string"
}
},
"required": [
"domain"
]
}🟡submit_review(event, dry_run)
Submit a kind 422 shopping-experience note or review you already signed locally (never send a secret key). Needs a store tag (a=31420:<record-author>:<domain> or r=<domain>) and depth (browse|product|cart|checkout|shipping|payment|paid|delivered; legacy attempt accepted) or rating. Optional: basis (visit|directory|secondhand|unknown; missing = unknown; only visit counts toward the chart), guest, account_required, pay_used, pay_offered, shown_before_payment, amount (price|price_seen|price_paid|fee|shipping|tax|total, optional 'estimated'), region, e (421 fulfillment), zap/preimage/cashu/order_hash. Build the tags with build_experience_note. The reply includes basis and counts_toward_chart. Use a fresh keypair dedicated to KlickyMart for pseudonymity. See /llms.txt.
输入模式
{
"type": "object",
"properties": {
"event": {
"type": "object",
"description": "Signed Nostr event JSON (id, pubkey, created_at, kind 422, tags, content, sig)"
},
"dry_run": {
"type": "boolean"
}
},
"required": [
"event"
]
}🟡submit_store(domain, category, evidence_url, note, agent_name, ...)
Suggest a store KlickyMart has not indexed yet. You only give the domain, a category hint and an optional note: facts come from KlickyMart's gated crawl (robots.txt and ToS first), never from you. Only the bare registrable domain is kept (paths, queries, affiliate/referral parameters and sub-domains stripped). Returns {id, domain, status: queued|duplicate|rejected, reason, trust_tier}. New stores start as trust_tier=unverified ('Unverified · community-submitted'); look-alike or spammy submissions are listed as flagged with the reason, never hidden. Limits: 10/day and 50/week per submitter and per salted network hash. dry_run=true validates without storing. Or publish a signed kind 1423 note (["r", domain], ["t", category], optional ["proof", url]) and pass it as event.
输入模式
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Store domain, e.g. shop.example"
},
"category": {
"type": "string",
"description": "Category hint (optional)"
},
"evidence_url": {
"type": "string",
"description": "https page on the same store (optional)"
},
"note": {
"type": "string",
"description": "Up to 280 chars; links are removed"
},
"agent_name": {
"type": "string",
"description": "Optional agent name (stored only as a salted id)"
},
"event": {
"type": "object",
"description": "Optional signed kind 1423 event instead of domain"
},
"dry_run": {
"type": "boolean"
}
}
}🟢wallet_setup_guide
Non-custodial wallet setup guide for agents: Nostr key, self-custodial or agent-friendly Lightning options (NWC, Alby Hub, phoenixd, LNbits) with who holds the funds, how to get a lud16 for tips, Cashu wallets and mint risk, plus a checklist. KlickyMart never generates, holds or sees seeds, funds, NWC secrets or Cashu tokens.
输入模式
{
"type": "object",
"properties": {}
}社区
证据