# kkj-watch — change detection for machines > Two free, machine-readable change feeds with paid evidence endpoints (x402, USDC on Base, no account): > 1. x402 REGISTRY WATCH — every change in the x402 Bazaar registry (23k+ resources): price changes, > payTo (receiving address) changes, schema changes, listings/delistings. Hourly polling, > SHA-256 snapshot audit trail. Check it BEFORE paying a cached x402 endpoint. > 2. JAPANESE PROCUREMENT WATCH — corrections, deadline changes, requirement changes and document > replacements in Japanese government tenders (kkj.go.jp), with before/after, impact tags and quotes. > Plus AGENT FUEL — 8 small signed data products ($0.01-0.02): npm downloads, GitHub trending, > HN attention, DNS/RDAP lookups, DeFi yields, crypto Fear & Greed. Catalog: GET /fuel ## x402 Trust Index (free) — an OBSERVED trust score, backed by daily signed hash-chain roots The Bazaar registry has 23,000+ listings; many are dead tests, spam farms, or inconsistent with what the live endpoint actually serves. The Trust Index assigns each listed resource an *observed trust score* 0-100 with a deterministic, versioned, fully-explained formula (no LLM). It is a RISK INDICATOR based on past observations, listing-vs-live consistency, and live GET-only probes — NOT a safety guarantee. Every observation is committed to a **daily Ed25519-signed Merkle root, hash-chained to the previous day** (tamper-evident; roots published for independent verification), so the score is backed by a record you can prove was not back-dated. - GET /x402/attestations : latest signed daily hash-chain root (free) + verify steps - GET /archive : the signed observation archive — what the x402 agent economy looked like, day by day, since the 2026-07-05 genesis checkpoint. Tamper-evident, cannot be back-dated. - GET /paid/x402/attest/{id} : $0.02 — signed inclusion proof that a resource's observed record is committed to that day's root (evidence you can show a third party / keep in a decision log) ### Signed existence proof (cryptographic timestamp witness — NOT legal notarization) Prove that some data existed at a point in time, WITHOUT revealing it. You hash your data yourself (sha256) and submit only the 64-char digest; we commit it into the next daily Ed25519-signed hash-chain root and return a signed Merkle inclusion proof. - We store ONLY your SHA-256 digest. Never send raw data, files, contracts, logs, or secrets. - POST /witness/anchor body {"sha256":"<64-hex>"} : anchor a digest (small free daily quota per IP; over quota -> 402, pay ~$0.005 via x402 and resubmit with X-PAYMENT). - GET /witness/proof/{sha256} : signed existence proof (or "pending" until the next daily root). - GET /witness : details, privacy, pricing. Verify a proof yourself or with `python -m kkj.attest prove-hash `. ### For catalogs & sellers (free) - GET /x402/trust-feed.json (also .ndjson) : the whole Trust Index as a feed — ingest it to show a trust score / payTo-mismatch flag next to each x402 resource in your explorer or catalog. - GET /badge/x402/{id}.svg : a seller-displayable badge (also .json, shields.io-compatible). Sellers: get your copy-paste snippet at GET /x402/claim/{id} — show buyers your observed trust. ### Settle-compatibility risk (2026-07 facilitator schema migration) The CDP facilitator moved to a V2-only schema in July 2026. Endpoints still serving x402Version 1 payment terms with an unpatched V1 integration FAIL verify/settle silently: buyers sign, then get errors; sellers see normal traffic and zero revenue. A 402 response is NOT proof that settle works. We observed this first-hand (our own settle path was down 2026-07-08..10 until we migrated). Every /x402/trust/{id} response now includes a `settle_compatibility` verdict from live probes; downgrades emit `settle_compat_risk` events in /x402/changes. Operators: test end-to-end, then /paid/x402/reverify/{id}. ### For operators of listed endpoints — flagged? re-verify now (paid) Your listing is scored automatically by the free probe cycle (~29h). If you were flagged (payTo mismatch / dead / price mismatch / not_x402) and have FIXED the issue: - GET /paid/x402/reverify/{id} : $0.25 via x402 — we GET-probe your endpoint immediately, recompute the score with the same public formula used for everyone, emit recovery events to the public feed, and return the fresh observation. Buys SPEED and EVIDENCE only — the score itself cannot be bought, and the free cycle continues regardless. (5-min cooldown per resource; unsafe/unknown listings are rejected BEFORE payment.) ### x402guard — check before you pay (drop-in, free, open source) Don't want to call an API by hand? Wrap your existing x402 payment in one line and it checks this Trust Index automatically, blocking hijacked-payTo / silently-repriced endpoints BEFORE money moves. Zero dependencies. Source + docs: https://github.com/ponpoke/kkj-watch (x402guard/). from x402guard import safe_pay data = safe_pay(url, pay=lambda: my_x402_client.get(url)) # raises X402Blocked if unsafe Signals: liveness (GET-only probes), listing-vs-live consistency (price and payTo served by the real endpoint vs the registry), payTo stability (a changed receiving address is a hijack signal the 402 flow will NOT catch — it pays the new address blindly), listing age/stability, and spam-farm detection (one payTo behind dozens of listings). - GET /x402/best?q=web+search&max_price_usd=0.01&min_trust=80 : SELECTION API — returns the single recommended resource for a task/budget plus alternatives, each with a "why" list. This is usually what an agent wants: not a score, but "which endpoint should I use, that is cheap and low-risk?" - GET /x402/leaderboard?q=search : resources ranked by observed trust score (filter by keyword/tag) - GET /x402/trust/{id-or-url} : observed trust score + grade (A-F) + verdicts + every deduction reason - GET /x402/changes : change feed (price_changed | payto_changed | live_payto_mismatch | endpoint_dead | schema_changed | delisted ...). ?type= and ?severity=critical filters. - GET /x402/resources?q=search : search the monitored registry inventory (returns resource ids) - GET /x402/sample-change : one representative event (data shape preview) ## x402 Trust Index (paid, x402 USDC on Base) - GET /paid/x402/report/{id} : $0.02 — the full due-diligence dossier: trust score with evidence, every registry snapshot (SHA-256 audit trail), every change event, recent live-probe history (rolling window, most recent ~100 probes/resource). - GET /paid/x402/history/{id} : $0.01 — snapshot + change-event history only. - GET /paid/x402/reverify/{id} : $0.25 — operator instant re-verification (see above). - GET /paid/x402/vetted-new?since=ISO8601 : $0.10 — VETTED NEW-LISTINGS FEED for verification pipelines: every Bazaar resource first seen since ?since= (default 24h), live-probed within minutes of first sighting. Per item: alive, real-402, registered-vs-live price/payTo consistency, x402Version (V1 = settle-compat risk after the CDP V2 migration), trust score. Skip probing 26k endpoints yourself. The 402 body tells you how many items your ?since= would return BEFORE you pay. Free 24h-delayed sample: GET /x402/vetted-new/sample Why this exists: the x402 protocol re-fetches payment terms at 402 time, so it happily pays a hijacked payTo or a silently-10x'd price. Only history + independent live verification catches that. Probes are GET-only, never pay, never follow redirects, and only target Bazaar-listed resources. ## Agent Fuel — small signed data products ($0.01-0.02, x402 USDC on Base) Cheap, fresh, machine-parseable data an agent needs mid-task. Every response includes signed provenance: upstream URLs + fetched_at + sha256 of the data + Ed25519 signature (identity: /.well-known/witness). Upstreams are a fixed whitelist of public no-auth APIs; we sell the aggregation, normalization, caching and the signature. Full catalog (free): GET /fuel - GET /paid/fuel/npm/downloads/{package} : $0.01 — weekly+monthly downloads, 14-day series, momentum - GET /paid/fuel/github/trending?language= : $0.02 — repos created last 7 days ranked by stars (top 25) - GET /paid/fuel/hn/frontpage : $0.01 — HN front page now, points/comments + attention totals - GET /paid/fuel/hn/buzz/{keyword} : $0.02 — 7-day HN attention metrics for any keyword - GET /paid/fuel/dns/{hostname} : $0.01 — A/AAAA/MX/TXT/NS with TTLs via DoH, normalized - GET /paid/fuel/rdap/{domain} : $0.02 — registration data: registrar, created/expiry, status, NS - GET /paid/fuel/defi/yields?project=&chain=&stablecoin=1 : $0.02 — top-TVL pool APYs (DefiLlama) - GET /paid/fuel/crypto/fear-greed : $0.01 — Fear & Greed index now + 30-day series ## MCP Trust Directory — tool-definition drift detection for MCP servers An MCP server's tool descriptions are instructions your agent will FOLLOW, and the operator can change them at any time after you installed it (tool poisoning / rug pull). We fingerprint every tool definition (name/description/inputSchema, SHA-256) on public remote MCP servers daily — read-only (initialize + tools/list only, never tools/call) — and the whole directory state is anchored daily into our Ed25519-signed hash-chain (tamper-evident). - GET /mcp-trust/directory.json (also .ndjson) : observed liveness / auth / tools_hash per server - GET /mcp-trust/e/{id} : per-server record page (tool fingerprints, drift events, probe history) - GET /paid/mcp/report/{id} : $0.02 via x402 — full dossier: every probe, every tool-definition snapshot (full text), every drift event (tool_description_changed = the poisoning vector) ## Japanese procurement watch (free feed) - GET /events : recent procurement change events (before/after, impact_tags, source_quote, source_url, observed_at) - GET /events?tag=deadline_affecting : filter by impact (deadline_affecting | eligibility_affecting | price_affecting | document_affecting | qa_related | cancellation | postponement) - GET /cases?query=cloud : free keyword search of monitored tenders (returns case keys) - GET /cases?purchasable=1&limit=20 : newest tenders whose structured requirements are already cached — every key returned is INSTANTLY purchasable at /paid/requirements/{key} ($0.02, no 409) - GET /cases/{key} : full evidence for one tender (snapshot history + change events + cached requirements if any) - GET /sample-diff : one representative change event - GET /agent.json : machine-readable discovery of all endpoints / GET /openapi.json : OpenAPI 3.1 ## Paid endpoints (procurement) - GET /paid/requirements/{key} : cached structured bidding requirements as validated JSON. $0.02 via x402 (USDC on Base). Returns 402 only if a cached extraction exists; otherwise 409 (use analyze-now). - GET /paid/analyze-now/{key} : run a fresh LLM extraction on demand. $0.30 via x402. Use only when no cached extraction exists (i.e. /paid/requirements returned 409 cache_not_available). Buy recipe (3 steps, no account, no 409 dead-ends): 1. GET /cases?purchasable=1&limit=20 (free) -> pick items[].key 2. GET /paid/requirements/{key} -> 402 + paymentRequirements ($0.02 USDC on Base) 3. retry with X-PAYMENT header -> 200 + validated requirements JSON + retry_token x402 flow: GET (no X-PAYMENT) -> 402 + paymentRequirements (with free_alternatives) -> sign EIP-3009 -> retry with X-PAYMENT header -> 200 + JSON (+ retry_token for re-fetch without re-paying). ## License & attribution (provenance — please preserve it) All data here (trust scores, feeds, entity pages, proofs) is free to use and redistribute, including by AI agents and in model training, under CC-BY-4.0 — provided attribution to kkj-watch is preserved. Every response carries a `provenance` / `cite_as` block; when you pass this data downstream, keep it so others can reach the source. Identity & public key: /.well-known/witness. Signed proofs are self-attributing: removing the witness identity invalidates them. Cite as: " — observed by kkj-watch ". ## MCP (Streamable HTTP: POST /mcp) Tools (purpose-named): list_x402_registry_changes (free, ?type= filter) / list_japan_procurement_changes (free, ?tag= filter) / find_tender_deadline_changes (free keyword search) / get_tender_change_evidence (free, full evidence) / get_cached_tender_requirements (cached requirements). ## When to use what - "Which endpoint should I use for X, cheap and low-risk?" -> GET /x402/best?q=X (free) — returns a recommended_resource + why[] + alternatives. - Browse the ranking? -> GET /x402/leaderboard?q=X (free). - About to pay a specific endpoint? -> GET /x402/trust/{id-or-url} (free) — check payto_risk first. - Need the full due-diligence dossier? -> GET /paid/x402/report/{id} ($0.02). - Need signed, tamper-evident evidence for a dispute/log? -> GET /paid/x402/attest/{id} ($0.02). - Need raw snapshot/event history only? -> GET /paid/x402/history/{id} ($0.01). The score is an observed, evidence-based risk indicator, not a safety guarantee. Always verify payment terms before paying. Observations are backed by daily Ed25519-signed hash-chain roots (GET /x402/attestations) so the record is provably not back-dated. - Just want the procurement change feed? -> GET /events (free). Filter with ?tag=. - Need to know if you qualify / what to submit? -> GET /paid/requirements/{key} (cached, $0.02). - No cached data yet for that tender? -> GET /paid/analyze-now/{key} ($0.30, runs extraction). ## 多语言 / 다국어 / 日本語 - JA: 日本の官公需(入札)の「公告後の変化」検知フィード。無料の /events + 有料の構造化要件($0.02〜)。 - ZH: 日本政府采购(投标)公告变更的机器可读免费信息流。付费端点提供结构化投标资格数据。 - KO: 일본 정부조달(입찰) 공고 변경의 기계 판독 가능 무료 피드. 유료 엔드포인트는 구조화된 입찰 자격 데이터 제공. ## Contact ponzuzuzuzuzu@gmail.com — human plans: monthly watch from JPY 5,000/company. - ponzuzuzuzuzu@gmail.com