search_merchants
Search KlickyMart merchant records (same filters as GET /q)
qbtccatpaysubtosguestlimitscopeag_minan_catco_min+15 more
com.klickymartPublished by klickymart.comOfficial publisherv2026.10.31Updated Nov 7, 2026
Which online stores AI shopping agents can buy from: guest checkout, pay methods, landed cost.
KlickyMart is a public index of online stores for shopping agents: check whether an agent can shop at a domain, how checkout works, and what it costs landed.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/com.klickymart%2Fklickymart/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"klickymart": {
"type": "http",
"url": "https://klickymart.com/mcp"
}
}
}KlickyMart is a public, signed map of online stores for software agents: whether an agent can reach a store, how checkout works, and which payment methods the store accepts, with attention to Bitcoin and privacy-respecting Bitcoin options. Records are published as Nostr events (see NIP-DRAFT.md). A FloppyKit project.
Status: draft. No crawl data is published in this repository yet.
NIP-DRAFT.md: draft event kinds for the directory and payment handshakes.CRAWL-RUBRIC.md: record schema and grading rules (v0.3 draft changes at the end).CASCADE.md: build plan.crawler/: Playwright crawler (crawl.py), deterministic payment extractor (extract.py), terms-of-service checker (tos.py), signing helpers, tests.crawler/KNOWN-LIMITATIONS.md: known limitations.site/bot/index.html: the crawler info and opt-out page, served at https://klickymart.com/bot.site/: KlickyMart web app (Worker, API, dashboard). See site/README.md.Agents should start at https://klickymart.com/llms.txt. MCP endpoint: https://klickymart.com/mcp. It uses a minimal, stateless Streamable HTTP transport: one JSON-RPC message per POST, answered with a single application/json body. It negotiates protocol versions 2024-11-05, 2025-03-26 or 2025-06-18 (tools only). There is no SSE stream and no session ID, and GET /mcp returns 405. Tools: search_merchants, get_record, check_domain. No key needed.
Claude Desktop (claude_desktop_config.json launches stdio servers, so this goes through the mcp-remote bridge, which needs Node.js):
Cursor (~/.cursor/mcp.json or .cursor/mcp.json):
Any Streamable HTTP client:
Reviews: anyone can review a merchant with a signed kind 422 event (a tag 31420:<record-author>:<domain>, rating, attempt, optional pay). Submit it with POST /reviews (?dry_run=1 validates without storing) or the MCP tool submit_review, and read reviews with GET /reviews?domain= or get_reviews. Agents should use a fresh keypair dedicated to KlickyMart for pseudonymity and must never send a secret key. Reviews are signed claims; we verify signatures and format, not the opinion. Full guide: /llms.txt and /about#reviews. Spec: NIP-DRAFT.md → "422 as a merchant review".
Plain HTTP: GET /check?domain=example.com answers "can my agent shop here?" from the index only. It never starts a live crawl.
FloppyKitMapBot/0.2 (+https://klickymart.com/bot). No stealth plugins or fingerprint changes, no proxies or IP rotation.Opt out: add User-agent: FloppyKitMapBot / Disallow: / to robots.txt. Details: https://klickymart.com/bot
The tests use synthetic fixtures and make no network requests.
See also site/README.md.
Source: README.md at commit 84bf293
Search KlickyMart merchant records (same filters as GET /q)
qbtccatpaysubtosguestlimitscopeag_minan_catco_min+15 moreFetch one merchant record by domain
domainrequiredCan 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.
zipdomainrequiredProduct-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.
qmpnzipgtinlivelimitdomainin_stockmax_priceOne 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'.
qmpnurlziprequiredgtinlivetypelimitdomainin_stockconditionmax_price+2 moreReturns 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.
feetaxagentbasisdepthguestpricestepstotalwallsdomainrequiredpreset+23 moreCheckout 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.
domainrequiredRe-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.
domainrequiredDRAFT (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.
gtinnotedomainin_stockmax_priceWhere 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.
paysubzipguestlimitdomaintaxprecategoryinclude_blockedinclude_indirectAgent-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.
limitcategoryrail_statusreachable_onlyKind 422 reviews of a merchant (signed claims by pseudonymous keys; not verified by KlickyMart).
domainrequiredSubmit 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.
eventrequireddry_runSuggest 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.
noteeventdomaindry_runcategoryagent_nameevidence_urlNon-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.
Takes no parameters.
100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
{ "mcpServers": { "klickymart": { "command": "npx", "args": [ "-y", "mcp-remote", "https://klickymart.com/mcp" ] } }}{ "mcpServers": { "klickymart": { "url": "https://klickymart.com/mcp" } }}curl -s https://klickymart.com/mcp -H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \\ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"check_domain","arguments":{"domain":"example.com"}}}'cd crawlerpython3 -m venv .venv && . .venv/bin/activatepip install -r requirements.txt && python -m playwright install chromiumpython -m unittest discover -s tests -v