{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bloomfilter",
    "name": "Bloomfilter",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Eronmmer/bloomfilter",
    "canonicalUrl": "https://clawhub.ai/Eronmmer/bloomfilter",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bloomfilter",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bloomfilter",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/bloomfilter"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/bloomfilter",
    "agentPageUrl": "https://openagent3.xyz/skills/bloomfilter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bloomfilter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bloomfilter/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Bloomfilter - Domain Registration API",
        "body": "Base URL: https://api.bloomfilter.xyz\n\nPaid endpoints use the x402 payment protocol. The API returns HTTP 402 with payment details - your x402-compatible HTTP client handles payment automatically.\n\nEVM_PRIVATE_KEY is used locally by the agent's x402 HTTP client (@x402/axios or @x402/fetch) to sign EIP-3009 TransferWithAuthorization messages for USDC payments and to sign EIP-4361 SIWE messages for authentication. The private key never leaves the local machine and is never sent to any server. All cryptographic signing happens client-side in the agent runtime.\n\nDNS and account endpoints require authentication via SIWE (Sign-In With Ethereum). Authenticate once, then pass the JWT as a Bearer token."
      },
      {
        "title": "Authentication (SIWE)",
        "body": "GET /auth/nonce\n-> Returns { nonce, domain, uri, chainId, version, expiresIn }\n\nPOST /auth/verify\nBody: { \"message\": \"<EIP-4361 SIWE message>\", \"signature\": \"0x...\" }\n-> Returns { accessToken, refreshToken, walletAddress }\n\nPOST /auth/refresh\nBody: { \"refreshToken\": \"...\" }\n-> Returns new { accessToken, refreshToken }\n\nPOST /auth/revoke (requires Bearer token)\n-> Revokes all sessions for the authenticated wallet"
      },
      {
        "title": "Domain Search & Pricing (free, no auth)",
        "body": "GET /domains/search?query=example&tlds=com,io,xyz\n-> Returns availability and pricing for each TLD. The tlds parameter is optional.\n\nGET /domains/pricing\n-> Returns pricing for all supported TLDs\n\nGET /domains/pricing/:tld\n-> Returns pricing for a single TLD (e.g., /domains/pricing/com)"
      },
      {
        "title": "Domain Registration (x402 - dynamic pricing)",
        "body": "POST /domains/register\nBody: { \"domain\": \"example.com\", \"years\": 1 }\nyears defaults to 1 if omitted.\nOptional: \"dns_records\": [{ \"type\": \"A\", \"host\": \"@\", \"value\": \"1.2.3.4\" }]\nSupported dns_records types: A, AAAA, CNAME, MX, TXT, SRV, CAA\nEach record also accepts optional \"ttl\" (300-86400, default 3600) and \"priority\" (for MX/SRV)\n-> First call returns 402 with exact price. Retry with x402 payment to complete.\n-> Returns 201 on success, or 202 with a job ID for async provisioning.\n\nPOST /domains/renew\nBody: { \"domain\": \"example.com\", \"years\": 1 }\nyears defaults to 1 if omitted.\n-> Same two-phase x402 flow as registration."
      },
      {
        "title": "Domain Info (free, no auth)",
        "body": "GET /domains/:domain\n-> Returns domain status, expiry, nameservers, lock/privacy state.\nNote: Only works for domains registered through Bloomfilter."
      },
      {
        "title": "Job Status (free, no auth)",
        "body": "GET /domains/status/:jobId\n-> Poll for async registration status. Returns 200 (done), 202 (pending), or 500 (failed)."
      },
      {
        "title": "DNS Management (requires Bearer token)",
        "body": "Mutations cost $0.10 USDC each (x402). Listing is free.\n\nIMPORTANT: Always add, update, or delete DNS records one at a time (sequentially, not in parallel). After registering a new domain, wait at least 30 seconds before adding DNS records — the DNS zone may not be ready immediately.\n\nGET /dns/:domain\n-> List all DNS records\n\nPOST /dns/:domain\nBody: { \"type\": \"A\", \"host\": \"@\", \"value\": \"1.2.3.4\" }\nOptional: \"ttl\" (300-86400, default 3600), \"priority\" (for MX/SRV)\nSupported types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA\n\nPUT /dns/:domain/:recordId\nBody: { \"host\": \"@\", \"value\": \"5.6.7.8\" }\nAt least one field required. Optional: host, value, ttl, priority.\n\nDELETE /dns/:domain/:recordId\n-> Deletes the record"
      },
      {
        "title": "Account (requires Bearer token, free)",
        "body": "GET /account\n-> Account summary (wallet, domain count, total spent)\n\nGET /account/domains?limit=50&offset=0\n-> Paginated list of owned domains\n\nGET /account/transactions?limit=50&offset=0\n-> Paginated transaction history"
      },
      {
        "title": "Notes",
        "body": "All paid requests require an x402-compatible HTTP client with USDC on Base (chain ID 8453)\nWHOIS privacy is enabled by default on all registrations\nDocs: https://docs.bloomfilter.xyz"
      },
      {
        "title": "External Endpoints",
        "body": "URLData SentPurposehttps://api.bloomfilter.xyz/*Domain queries, DNS records, wallet addressDomain search, registration, DNS management\n\nNo data is sent anywhere else. All requests go to the Bloomfilter API only."
      },
      {
        "title": "Security & Privacy",
        "body": "Your EVM_PRIVATE_KEY never leaves your local machine — it is used locally to sign x402 payment authorizations and SIWE messages\nThe API receives your wallet address (derived from the key) but never the private key itself\nWHOIS privacy is enabled by default on all registrations — your identity is never exposed in public WHOIS records\nAll API communication is over HTTPS"
      },
      {
        "title": "Trust",
        "body": "This skill connects to api.bloomfilter.xyz to register ICANN domains and manage DNS records. Payments are made in USDC on Base via the x402 protocol. Your private key stays local. Install only if you trust Bloomfilter (https://bloomfilter.xyz) as a domain registration provider."
      }
    ],
    "body": "Bloomfilter - Domain Registration API\n\nBase URL: https://api.bloomfilter.xyz\n\nPaid endpoints use the x402 payment protocol. The API returns HTTP 402 with payment details - your x402-compatible HTTP client handles payment automatically.\n\nEVM_PRIVATE_KEY is used locally by the agent's x402 HTTP client (@x402/axios or @x402/fetch) to sign EIP-3009 TransferWithAuthorization messages for USDC payments and to sign EIP-4361 SIWE messages for authentication. The private key never leaves the local machine and is never sent to any server. All cryptographic signing happens client-side in the agent runtime.\n\nDNS and account endpoints require authentication via SIWE (Sign-In With Ethereum). Authenticate once, then pass the JWT as a Bearer token.\n\nAuthentication (SIWE)\n\nGET /auth/nonce -> Returns { nonce, domain, uri, chainId, version, expiresIn }\n\nPOST /auth/verify Body: { \"message\": \"<EIP-4361 SIWE message>\", \"signature\": \"0x...\" } -> Returns { accessToken, refreshToken, walletAddress }\n\nPOST /auth/refresh Body: { \"refreshToken\": \"...\" } -> Returns new { accessToken, refreshToken }\n\nPOST /auth/revoke (requires Bearer token) -> Revokes all sessions for the authenticated wallet\n\nDomain Search & Pricing (free, no auth)\n\nGET /domains/search?query=example&tlds=com,io,xyz -> Returns availability and pricing for each TLD. The tlds parameter is optional.\n\nGET /domains/pricing -> Returns pricing for all supported TLDs\n\nGET /domains/pricing/:tld -> Returns pricing for a single TLD (e.g., /domains/pricing/com)\n\nDomain Registration (x402 - dynamic pricing)\n\nPOST /domains/register Body: { \"domain\": \"example.com\", \"years\": 1 } years defaults to 1 if omitted. Optional: \"dns_records\": [{ \"type\": \"A\", \"host\": \"@\", \"value\": \"1.2.3.4\" }] Supported dns_records types: A, AAAA, CNAME, MX, TXT, SRV, CAA Each record also accepts optional \"ttl\" (300-86400, default 3600) and \"priority\" (for MX/SRV) -> First call returns 402 with exact price. Retry with x402 payment to complete. -> Returns 201 on success, or 202 with a job ID for async provisioning.\n\nPOST /domains/renew Body: { \"domain\": \"example.com\", \"years\": 1 } years defaults to 1 if omitted. -> Same two-phase x402 flow as registration.\n\nDomain Info (free, no auth)\n\nGET /domains/:domain -> Returns domain status, expiry, nameservers, lock/privacy state. Note: Only works for domains registered through Bloomfilter.\n\nJob Status (free, no auth)\n\nGET /domains/status/:jobId -> Poll for async registration status. Returns 200 (done), 202 (pending), or 500 (failed).\n\nDNS Management (requires Bearer token)\n\nMutations cost $0.10 USDC each (x402). Listing is free.\n\nIMPORTANT: Always add, update, or delete DNS records one at a time (sequentially, not in parallel). After registering a new domain, wait at least 30 seconds before adding DNS records — the DNS zone may not be ready immediately.\n\nGET /dns/:domain -> List all DNS records\n\nPOST /dns/:domain Body: { \"type\": \"A\", \"host\": \"@\", \"value\": \"1.2.3.4\" } Optional: \"ttl\" (300-86400, default 3600), \"priority\" (for MX/SRV) Supported types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA\n\nPUT /dns/:domain/:recordId Body: { \"host\": \"@\", \"value\": \"5.6.7.8\" } At least one field required. Optional: host, value, ttl, priority.\n\nDELETE /dns/:domain/:recordId -> Deletes the record\n\nAccount (requires Bearer token, free)\n\nGET /account -> Account summary (wallet, domain count, total spent)\n\nGET /account/domains?limit=50&offset=0 -> Paginated list of owned domains\n\nGET /account/transactions?limit=50&offset=0 -> Paginated transaction history\n\nNotes\nAll paid requests require an x402-compatible HTTP client with USDC on Base (chain ID 8453)\nWHOIS privacy is enabled by default on all registrations\nDocs: https://docs.bloomfilter.xyz\nExternal Endpoints\nURL\tData Sent\tPurpose\nhttps://api.bloomfilter.xyz/*\tDomain queries, DNS records, wallet address\tDomain search, registration, DNS management\n\nNo data is sent anywhere else. All requests go to the Bloomfilter API only.\n\nSecurity & Privacy\nYour EVM_PRIVATE_KEY never leaves your local machine — it is used locally to sign x402 payment authorizations and SIWE messages\nThe API receives your wallet address (derived from the key) but never the private key itself\nWHOIS privacy is enabled by default on all registrations — your identity is never exposed in public WHOIS records\nAll API communication is over HTTPS\nTrust\n\nThis skill connects to api.bloomfilter.xyz to register ICANN domains and manage DNS records. Payments are made in USDC on Base via the x402 protocol. Your private key stays local. Install only if you trust Bloomfilter (https://bloomfilter.xyz) as a domain registration provider."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Eronmmer/bloomfilter",
    "publisherUrl": "https://clawhub.ai/Eronmmer/bloomfilter",
    "owner": "Eronmmer",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bloomfilter",
    "downloadUrl": "https://openagent3.xyz/downloads/bloomfilter",
    "agentUrl": "https://openagent3.xyz/skills/bloomfilter/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bloomfilter/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bloomfilter/agent.md"
  }
}