KlickyMart

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.

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingFinanceBusiness & Commerce

Overview

AI-generated overview

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.

What you can do
  • Search and read merchant records, and check a domain's verdict (reachable, checkout-blocked, agents-not-welcome, blocked-tos, error, not-in-index) with checkout depth, pay methods and evidence.
  • Find product offers by GTIN, MPN or name, and estimate a landed price at a US ZIP including shipping and tax.
  • Inspect a store's checkout map and its first blocker, and recheck robots.txt and home-page status for an indexed store.
  • Find alternative stores for a blocked domain or category, and list agent-native sellers that accept L402/x402 payments.
  • Read and submit signed Nostr kind 422 shopping-experience reviews, suggest unindexed stores, and get a non-custodial wallet setup guide.
When to use it
Useful when an agent needs to decide whether it can buy from a given online store, compare landed prices across stores, or find agent-friendly alternatives and payment rails before attempting a purchase.
Requirements
Remote Streamable HTTP endpoint; no API key needed. Clients that only launch stdio servers need the mcp-remote bridge and Node.js. Submitting reviews requires a locally signed Nostr event and a dedicated keypair.
Before you install
Reviews are pseudonymous signed claims that KlickyMart verifies for signature and format, not accuracy; never send a secret key, and use a fresh keypair. Submitting reviews and stores writes data to the service. Watch and experience-note tools return unsigned templates that KlickyMart never signs or publishes for you. Some tools are drafts or rate-limited.

Installation

In SourceWeft

  1. Open KlickyMart in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

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.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "klickymart": {
      "type": "http",
      "url": "https://klickymart.com/mcp"
    }
  }
}

README

KlickyMart

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.

Contents

  • 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.

Use it from an agent (MCP)

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):

json
{  "mcpServers": {    "klickymart": {      "command": "npx",      "args": [        "-y",        "mcp-remote",        "https://klickymart.com/mcp"      ]    }  }}

Cursor (~/.cursor/mcp.json or .cursor/mcp.json):

json
{  "mcpServers": {    "klickymart": {      "url": "https://klickymart.com/mcp"    }  }}

Any Streamable HTTP client:

sh
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"}}}'

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.

Crawler guardrails

  • Honest user agent: FloppyKitMapBot/0.2 (+https://klickymart.com/bot). No stealth plugins or fingerprint changes, no proxies or IP rotation.
  • robots.txt is read first; an error, 401, 403 or timeout means the whole site is treated as disallowed.
  • If a site's terms ban automated access, the site is not crawled; only that finding is recorded, with a quote and URL.
  • Public pages only: no login, no accounts, no orders, no payment details, no form submits beyond add-to-cart, no captcha solving. Blocks are recorded as findings.
  • At least 2 s between requests, at most 10 pages per site.
  • Customer reviews, Q&A and comments are never used as evidence. Every payment method in a record carries a quote and a URL; unknowns stay null.

Opt out: add User-agent: FloppyKitMapBot / Disallow: / to robots.txt. Details: https://klickymart.com/bot

Run the tests

cd crawlerpython3 -m venv .venv && . .venv/bin/activatepip install -r requirements.txt && python -m playwright install chromiumpython -m unittest discover -s tests -v

The tests use synthetic fixtures and make no network requests.

License

  • Software (this repository, including the crawler and site Worker): MIT License.
  • Crawl records (API JSON, NDJSON export, published directory data): CC0 1.0 Universal (public domain).

See also site/README.md.

Source: README.md at commit 84bf293

Tools

15

search_merchants

Search KlickyMart merchant records (same filters as GET /q)

Parametersqbtccatpaysubtosguestlimitscopeag_minan_catco_min+15 more

get_record

Fetch one merchant record by domain

Parametersdomainrequired

check_domain

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.

Parameterszipdomainrequired

find_offers

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.

Parametersqmpnzipgtinlivelimitdomainin_stockmax_price

get_landed_price

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'.

Parametersqmpnurlziprequiredgtinlivetypelimitdomainin_stockconditionmax_price+2 more

build_experience_note

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.

Parametersfeetaxagentbasisdepthguestpricestepstotalwallsdomainrequiredpreset+23 more

get_checkout_map

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.

Parametersdomainrequired

recheck_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.

Parametersdomainrequired

watch_item

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.

Parametersgtinnotedomainin_stockmax_price

find_alternatives

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.

Parameterspaysubzipguestlimitdomaintaxprecategoryinclude_blockedinclude_indirect

find_agent_native

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.

Parameterslimitcategoryrail_statusreachable_only

get_reviews

Kind 422 reviews of a merchant (signed claims by pseudonymous keys; not verified by KlickyMart).

Parametersdomainrequired

submit_review

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.

Parameterseventrequireddry_run

submit_store

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.

Parametersnoteeventdomaindry_runcategoryagent_nameevidence_url

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.

Takes no parameters.

Version history

1
  1. v2026.10.31LatestOct 31, 2026

Score

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.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts