Skip to content

x402 Checker (AI Nock)

by nock-for-mak · remote · no sign-in to list tools · v1.34.0 · published by GitHub user nock-for-mak

Free check/board/name; paid bid/report 0.05, 1c fx/wx/lookups, news 0.001.

Final · 1Changes · 40

43 tools: 1 do something that can't be undone, 40 change things and 2 only read.

Scanned Oct 21, 2026

41 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http x402-checker https://x402-checker.nock-for-mak.workers.dev/mcp

Findings

Matches of fixed checks, with the text they matched.

41 warn
  • The description contains a 42-character base64 string.

    Matched text

    description: "...for one URL. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /check/b..."

    What this check looks for
  • Warnreport

    The description contains a 42-character base64 string.

    Matched text

    description: "...epts[] list). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST GET /report i..."

    What this check looks for
  • Warnwho

    The description contains a 42-character base64 string.

    Matched text

    description: "...r an address. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnmd

    The description contains a 42-character base64 string.

    Matched text

    description: "...ext markdown. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...ot markdown). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnjson

    The description contains a 42-character base64 string.

    Matched text

    description: "...et, no $ref). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
Show 35 more findings
  • The description contains a 42-character base64 string.

    Matched text

    description: "...legal advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warndomain

    The description contains a 42-character base64 string.

    Matched text

    description: "...lic hostname. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnens

    The description contains a 42-character base64 string.

    Matched text

    description: "...t registrar). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...Not /headers. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warngas

    The description contains a 42-character base64 string.

    Matched text

    description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnprice

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warntx

    The description contains a 42-character base64 string.

    Matched text

    description: "...mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnblock

    The description contains a 42-character base64 string.

    Matched text

    description: "...mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnssl

    The description contains a 42-character base64 string.

    Matched text

    description: "...main dossier. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warntoken

    The description contains a 42-character base64 string.

    Matched text

    description: "...e (use /who). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnsig

    The description contains a 42-character base64 string.

    Matched text

    description: "...ABI decoder. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnpm

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnfng

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warntsec

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warndex

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnnow

    The description contains a 42-character base64 string.

    Matched text

    description: "...use tool tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnfind

    The description contains a 42-character base64 string.

    Matched text

    description: "...global index. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warngeo

    The description contains a 42-character base64 string.

    Matched text

    description: "...ion required. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnfx

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnfx

    The server marks "fx" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

    What this check looks for
  • Warnwx

    The description contains a 42-character base64 string.

    Matched text

    description: "...nts /geo /tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnquote

    The description contains a 42-character base64 string.

    Matched text

    description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnhn

    The description contains a 42-character base64 string.

    Matched text

    description: ".../crypto-news. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnarxiv

    The description contains a 42-character base64 string.

    Matched text

    description: "...plements /hn. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnso

    The description contains a 42-character base64 string.

    Matched text

    description: "...n and /arxiv. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warncve

    The description contains a 42-character base64 string.

    Matched text

    description: "...ctions /tsec. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warngh

    The description contains a 42-character base64 string.

    Matched text

    description: "...rivate repos. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnwiki

    The description contains a 42-character base64 string.

    Matched text

    description: "...ly, CC BY-SA. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnemail

    The description contains a 42-character base64 string.

    Matched text

    description: "...ookup errors. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warntz

    The description contains a 42-character base64 string.

    Matched text

    description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warncron

    The description contains a 42-character base64 string.

    Matched text

    description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

    What this check looks for
  • Warnbid

    The description contains a 42-character base64 string.

    Matched text

    description: "...ord/whatsapp. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /bid is..."

    What this check looks for
  • The description contains a 42-character base64 string.

    Matched text

    description: "...ites/extends. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /name is..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

43 tools

Can't be undone 1Claude Code: ask
  • fxPaid $0.01 USDC exact on Base: fiat FX via Frankfurter/ECB.2 findings

    Why it is in this group

    • The input addresses people (input.to): what it sends cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    • Warn

      The server marks "fx" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"openWorldHint":true}; The input addresses people (input.to): what it sends cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: fiat FX via Frankfurter/ECB. from= (default USD), to= comma list (default EUR), amount= (default 1). Fiat only — use /price for crypto. Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
Changes things 40Claude Code: ask
  • arxivPaid $0.01 USDC exact on Base: academic paper search via public arXiv Atom API.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...plements /hn. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: academic paper search via public arXiv Atom API. q= required (or id=2605.11781). Optional cat=cs.CR, sort=relevance|date|updated, hits=1..8. Metadata only; no PDF fetch. Complements /hn. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • bidPaid $0.05 USDC exact on Base: bid on the pay-to-rank board.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ord/whatsapp. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /bid is..."

      What this check looks for
    Description, as the server wrote it
    Paid $0.05 USDC exact on Base: bid on the pay-to-rank board. Each verified bid ADDS to that origin's 24h total. Listing URL must return HTTP 402 (or be this origin). http(s) only. No telegram/discord/whatsapp. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /bid is the same SKU.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
  • bizdaysPaid $0.01 USDC exact on Base: US federal business-day calendar.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: US federal business-day calendar. date=YYYY-MM-DD (default today UTC) or start=&end= range (cap 366). Holidays 2025-2027 baked in, observed weekday rules. No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • blockPaid $0.01 USDC exact on Base: block header via public RPC.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: block header via public RPC. Default n=latest. Accepts latest|earliest|safe|finalized, a decimal, 0x number, or hash=. Rejects pending. Returns number, hash, timestamp, miner, txCount, gasUsed, gasLimit, baseFee. Unknown id is paid 200 with found:false. No full txs. Not a mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • boardFREE pay-to-rank board by AI Nock.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    FREE pay-to-rank board by AI Nock. Rank listings by USDC bid total in the last 24 hours. Empty JSON still sells: how/next point at unpaid POST /bid $0.05, POST /name $0.05, free GET /check (listing gate), GET /find $0.01. payTo on the JSON. No self-pay. Does not spend money. REST GET /board is the same SKU.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • checkFREE x402 wash/honesty probe by AI Nock.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    FREE x402 wash/honesty probe by AI Nock. Fetches an http(s) 402 URL with no payment headers. Returns payTo, amount, network, asset, facilitator if present, payToKind, a short risk note, and JSON next always: report $0.05, bid $0.05, name $0.05, board free, check_batch $0.01, quote $0.01; when has402, report/bid URLs are prefilled and next.sanctions $0.01. Use before paying any x402 resource. Does not spend money.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • check_batchPaid $0.01 USDC exact on Base: batch x402 honesty probes (max 10 URLs).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...for one URL. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /check/b..."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: batch x402 honesty probes (max 10 URLs). Each result is the same shape as free check (next.report $0.05, next.bid $0.05, next.name $0.05, next.board free, next.check_batch $0.01; when has402 also next.sanctions $0.01). GET /check stays free for one URL. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /check/batch is the same SKU.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • cronPaid $0.01 USDC exact on Base: unix cron parser.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: unix cron parser. expr required. Optional tz (default UTC) and n (1-20, default 5). Returns next fire times in UTC and America/Denver. No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • crypto_newsPaid $0.001 USDC exact on Base: public crypto RSS recap (CoinDesk, The Block, Decrypt, Base blog).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.001 USDC exact on Base: public crypto RSS recap (CoinDesk, The Block, Decrypt, Base blog). Optional topic filter. Cache ~15 minutes. No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • cvePaid $0.01 USDC exact on Base: CVE / NVD vulnerability lookup via public NIST NVD 2.0.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ctions /tsec. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: CVE / NVD vulnerability lookup via public NIST NVD 2.0. id=CVE-2021-44228 or q=log4j. Optional severity=low|medium|high|critical, hits=1..8. NVD-only metadata; no exploit/PoC. Complements /sanctions /tsec. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • dexPaid $0.01 USDC exact on Base: DexScreener pairs by token address=0x or search q=.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: DexScreener pairs by token address=0x or search q=. Optional chain= filter. Ranked by liquidityUsd (max 5). Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • domainPaid $0.01 USDC exact on Base: DNS/RDAP/TLS/SPF/DMARC dossier for a public hostname.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...lic hostname. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: DNS/RDAP/TLS/SPF/DMARC dossier for a public hostname. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • emailPaid $0.01 USDC exact on Base: email syntax + MX via DoH (no SMTP).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ookup errors. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: email syntax + MX via DoH (no SMTP). Disposable domains and MX-absent = invalid. Fail closed on lookup errors. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • ensPaid $0.01 USDC exact on Base: resolve an ENS or Basename (must end in .eth, including foo.base.eth).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...t registrar). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: resolve an ENS or Basename (must end in .eth, including foo.base.eth). Public HTTP resolvers. Unresolved names return resolved:false after payment. Not POST /name (that is this origin's 30-day agent registrar). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • fngPaid $0.01 USDC exact on Base: Crypto Fear & Greed Index via public alternative.me.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: Crypto Fear & Greed Index via public alternative.me. Optional limit=1..30 (default 1). Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • gasPaid $0.01 USDC exact on Base: live Base gas oracle via public RPC (gasPrice, maxPriorityFee, feeHistory).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: live Base gas oracle via public RPC (gasPrice, maxPriorityFee, feeHistory). Optional chain=base. Returns gwei fields + suggestedMaxFee. Read-only. No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • geoPaid $0.01 USDC exact on Base: forward geocode with q= or reverse with lat=&lon= via public Nominatim (OpenStreetMap).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ion required. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: forward geocode with q= or reverse with lat=&lon= via public Nominatim (OpenStreetMap). Attribution required. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • ghPaid $0.01 USDC exact on Base: GitHub public REST lookup via api.github.com (keyless).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...rivate repos. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: GitHub public REST lookup via api.github.com (keyless). mode=search|repo|user (default search). search: q=. repo: owner=&repo= or full=owner/repo. user: user= or login=. Public metadata only; no token, no private repos. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • headersPaid $0.01 USDC exact on Base: raw HTTP header dump of a public URL (not an honesty probe, not markdown).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ot markdown). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: raw HTTP header dump of a public URL (not an honesty probe, not markdown). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • hnPaid $0.01 USDC exact on Base: Hacker News search via public Algolia HN API.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: ".../crypto-news. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: Hacker News search via public Algolia HN API. q= required. Optional tags=story|comment|ask_hn|show_hn|poll|job|front_page|all, sort=relevance|date, hits=1..8. Complements /crypto-news. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • jsonPaid $0.01 USDC exact on Base: validate JSON data against a JSON Schema (tiny built-in subset, no $ref).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...et, no $ref). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: validate JSON data against a JSON Schema (tiny built-in subset, no $ref). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • mdPaid $0.01 USDC exact on Base: fetch a public http(s) URL and return simple HTML-to-text markdown.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ext markdown. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: fetch a public http(s) URL and return simple HTML-to-text markdown. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • name_registerPaid $0.05 USDC exact on Base: register or extend an ENS-style agent name for 30 days.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ites/extends. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /name is..."

      What this check looks for
    Description, as the server wrote it
    Paid $0.05 USDC exact on Base: register or extend an ENS-style agent name for 30 days. origin must be https and return HTTP 402 (or be this origin). Re-register from anyone after payment overwrites/extends. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST POST /name is the same SKU.

    Annotations the server declares

    • readOnlyHint: false
    • openWorldHint: true
  • nowPaid $0.01 USDC exact on Base: UTC clock (unix, ms, iso).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...use tool tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: UTC clock (unix, ms, iso). No params. Alias of REST GET /now and /time. For IANA zones use tool tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • pmPaid $0.01 USDC exact on Base: Polymarket market odds via public gamma-api.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: Polymarket market odds via public gamma-api. q= search or slug= event/market slug (not both). Optional limit=1..5. Unknown is paid 200 with found:false. Read-only. No trading. Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • pricePaid $0.01 USDC exact on Base: spot USD quotes via public DeFiLlama.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: spot USD quotes via public DeFiLlama. Default ids=ETH,USDC,BTC. Optional ids= aliases (ETH,USDC,BTC,SOL,WETH,LINK,AAVE,UNI,DAI) and/or token= Base 0x (max 8). Cache ~45s. Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • quotePaid $0.01 USDC exact on Base: equity/index/FX/crypto quote via public Yahoo Finance chart.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: equity/index/FX/crypto quote via public Yahoo Finance chart. symbol= (AAPL, ^GSPC, EURUSD=X, BTC-USD). Complements /price /fx. Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • redirectPaid $0.01 USDC exact on Base: follow Location redirects for a public http(s) URL (manual, max 8 hops, SSRF-safe).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...Not /headers. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: follow Location redirects for a public http(s) URL (manual, max 8 hops, SSRF-safe). Returns chain, finalUrl, hopCount. No meta-refresh. No payment headers. Not /headers. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • reportPaid $0.05 USDC exact on Base: structured honesty report for this 402 (well-known payTo match, header vs body 402, bytecode snippet hash, accepts[] list).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...epts[] list). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST GET /report i..."

      What this check looks for
    Description, as the server wrote it
    Paid $0.05 USDC exact on Base: structured honesty report for this 402 (well-known payTo match, header vs body 402, bytecode snippet hash, accepts[] list). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0. REST GET /report is the same SKU.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • sanctionsPaid $0.01 USDC exact on Base: OFAC SDN digital-currency screen for an EVM 0x or Solana/base58 address.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...legal advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: OFAC SDN digital-currency screen for an EVM 0x or Solana/base58 address. Fail closed. Not legal advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • sigPaid $0.01 USDC exact on Base: 4-byte function selector lookup via public openchain.xyz (4byte.directory fallback).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ABI decoder. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: 4-byte function selector lookup via public openchain.xyz (4byte.directory fallback). hex= / selector= / data= (first 4 bytes). Unknown selector is paid 200 with found:false. Complements /tx (inputLen only). Not a full ABI decoder. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • soPaid $0.01 USDC exact on Base: Stack Overflow Q&A search via public Stack Exchange API.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...n and /arxiv. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: Stack Overflow Q&A search via public Stack Exchange API. q= required (or id= question id). Optional tagged=javascript, sort=relevance|votes|activity|creation, hits=1..8. Stack Overflow only. Complements /hn and /arxiv. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • sslPaid $0.01 USDC exact on Base: TLS cert facts (public CT + live HTTPS HEAD) for a public hostname.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...main dossier. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: TLS cert facts (public CT + live HTTPS HEAD) for a public hostname. Returns issuer, dates, SANs, daysRemaining, currentlyValid, liveHttps. Not the full /domain dossier. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tokenPaid $0.01 USDC exact on Base: ERC-20 metadata via public RPC (name, symbol, decimals, totalSupply).1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...e (use /who). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: ERC-20 metadata via public RPC (name, symbol, decimals, totalSupply). address= required. EOA/empty code is paid 200 with found:false. Not a spot price (use /price). Not a wallet balance (use /who). payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tsecPaid $0.01 USDC exact on Base: token security snapshot via public honeypot.is + DexScreener.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...tment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: token security snapshot via public honeypot.is + DexScreener. address=0x required. Optional chain=base|eth|bsc (default base). Not a full audit. Not investment advice. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • txPaid $0.01 USDC exact on Base: transaction + receipt for a 0x hash via public RPC.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: transaction + receipt for a 0x hash via public RPC. Returns found, from, to, valueEth, status, gasUsed, logsCount, pending. Unknown hash is paid 200 with found:false. inputLen only. Not a mempool tip. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • tzPaid $0.01 USDC exact on Base: IANA timezone clock.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: IANA timezone clock. name=America/Denver (default). Returns now, UTC offset, DST. No API keys. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • whoPaid $0.01 USDC exact on Base: isContract, ETH balance, USDC balance, tx count for an address.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...r an address. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: isContract, ETH balance, USDC balance, tx count for an address. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • wikiPaid $0.01 USDC exact on Base: Wikipedia lead summary via public Wikimedia REST + MediaWiki search.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...ly, CC BY-SA. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: Wikipedia lead summary via public Wikimedia REST + MediaWiki search. q= search or title= page title (wikipedia.org URLs ok). Optional lang=en|simple, hits=1..8. Lead extract only, CC BY-SA. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
  • wxPaid $0.01 USDC exact on Base: current weather via public Open-Meteo.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...nts /geo /tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: current weather via public Open-Meteo. q= place and/or lat=&lon=. Optional units=metric|us. Attribution required. Complements /geo /tz. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: true
Only reads 2Claude Code: allow
  • findPaid $0.01 USDC exact on Base: search this origin's free + paid catalog by keyword q=.1 finding

    Why it is in this group

    • The name "find" says "find": a word for reading.

    Findings

    • Warn

      The description contains a 42-character base64 string.

      Matched text

      description: "...global index. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0."

      What this check looks for
    Description, as the server wrote it
    Paid $0.01 USDC exact on Base: search this origin's free + paid catalog by keyword q=. Optional limit=1..20. House discovery (board/bid/name + SKUs). Not a global index. payTo 0x3903F05a17676566958B0a3E0c21E0bd49B66ea0.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • name_lookupFREE ENS-style agent name lookup by AI Nock.No findings

    Why it is in this group

    • The name "name_lookup" says "lookup": a word for reading.
    Description, as the server wrote it
    FREE ENS-style agent name lookup by AI Nock. n= lowercase [a-z0-9-] 3-32. If unset/unclaimed: taken false plus how/next pointing at unpaid POST /name $0.05 (HTTP 402), free GET /board, free GET /check (origin gate), GET /find $0.01. payTo + noSelfPay + TTL 30d. If set: origin, ownerHint?, expiresAt. Does not spend money. REST GET /name is the same SKU.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.34.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http x402-checker https://x402-checker.nock-for-mak.workers.dev/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__x402-checker__find",
      "mcp__x402-checker__name_lookup"
    ],
    "ask": [
      "mcp__x402-checker__check",
      "mcp__x402-checker__check_batch",
      "mcp__x402-checker__report",
      "mcp__x402-checker__who",
      "mcp__x402-checker__md",
      "mcp__x402-checker__headers",
      "mcp__x402-checker__json",
      "mcp__x402-checker__sanctions",
      "mcp__x402-checker__domain",
      "mcp__x402-checker__ens",
      "mcp__x402-checker__redirect",
      "mcp__x402-checker__gas",
      "mcp__x402-checker__price",
      "mcp__x402-checker__tx",
      "mcp__x402-checker__block",
      "mcp__x402-checker__ssl",
      "mcp__x402-checker__token",
      "mcp__x402-checker__sig",
      "mcp__x402-checker__pm",
      "mcp__x402-checker__fng",
      "mcp__x402-checker__tsec",
      "mcp__x402-checker__dex",
      "mcp__x402-checker__now",
      "mcp__x402-checker__geo",
      "mcp__x402-checker__fx",
      "mcp__x402-checker__wx",
      "mcp__x402-checker__quote",
      "mcp__x402-checker__hn",
      "mcp__x402-checker__arxiv",
      "mcp__x402-checker__so",
      "mcp__x402-checker__cve",
      "mcp__x402-checker__gh",
      "mcp__x402-checker__wiki",
      "mcp__x402-checker__email",
      "mcp__x402-checker__bizdays",
      "mcp__x402-checker__tz",
      "mcp__x402-checker__cron",
      "mcp__x402-checker__crypto_news",
      "mcp__x402-checker__board",
      "mcp__x402-checker__bid",
      "mcp__x402-checker__name_register"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as x402-checker. Review it before you use it.