Hunt is shipped as three composable integration surfaces. Pick the one that fits your stack — none requires the others, all three read from the same on-chain truth on 0G Aristotle mainnet.
hunt-verifiable-ai
Drop-in module for any Node / TypeScript codebase. Provides
findingDigest(), classToBytes32(),
signAttestation(), verifyAttestation(),
and ECIES helpers. Peer-depends on
ethers ^6.13.0. No wallet, no crypto knowledge
required to use.
# install npm install hunt-verifiable-ai ethers # use import { ethers } from "ethers"; import { findingDigest, classToBytes32, verifyAttestation, } from "hunt-verifiable-ai"; // re-derive Hunt's bounty #3 winning-finding digest from public state const params = { bountyId: 3n, inputRoot: "0x...", // from /api/bounties/3.codeRoot agentId: 1n, classBytes32: classToBytes32("oracle-manipulation"), severity: 3, outputRoot: "0x...", // from finding.findingRoot modelDigest: ethers.keccak256( ethers.toUtf8Bytes("zai-org/GLM-5-FP8|hunt-audit-v1"), ), teeTimestamp: 1714560000n, severityCalibrationBps: 8500, precisionBps: 9200, coverageBps: 8800, exploitabilityBps: 9000, }; console.log("digest =", findingDigest(params)); // → 0x... (byte-identical to what Hunt.sol stored on-chain)
Five runnable examples in packages/sdk/examples: smart-contract audit, insurance defense, medical-records reader, benefits defense, generic classification.
hunt-mcp-serverHunt as a Model Context Protocol tool inside Claude Desktop, Cursor, or any MCP-compatible client. Ten read-only tools wrap Hunt's on-chain reads + the strict-mode cryptographic verifier. AI agents query Hunt natively, no SDK calls, no glue code.
# Claude Desktop: add to ~/Library/Application Support/Claude/claude_desktop_config.json # Cursor: add to ~/.cursor/mcp.json { "mcpServers": { "hunt": { "command": "npx", "args": ["-y", "hunt-mcp-server"] } } }
Tools:
hunt.gudman.xyz/apiHTTP / JSON over the Hunt protocol. CORS-open, 30-second server-side cache, no auth, no SDK. Curl-friendly from any language. Mirrors the same on-chain state as the SDK + MCP.
# aggregate stats curl https://hunt.gudman.xyz/api/stats # → { totalHunters: 3, totalBounties: 18, Settled: 10, paidOG: "0.5", ... } # a specific bounty + findings curl https://hunt.gudman.xyz/api/bounties/3 curl https://hunt.gudman.xyz/api/bounties/3/findings # per-CWE reputation (bytes32 OR canonical name) curl https://hunt.gudman.xyz/api/rep/1/oracle-manipulation # → { wins: 8, submissions: 8, totalEarnedOG: "0.4", ... } # health check curl https://hunt.gudman.xyz/api/health
Full reference + interactive try-it-out: /api/docs (Swagger UI) · /api/openapi.json (OpenAPI 3.0 spec)
All three surfaces above read the same source of truth: the
Hunt contract at
0xD4Fe5127…0d68C
on chain 16661. If you need state-changing access (post a
bounty, mint a hunter, submit a finding, settle, expire), use
the ABI directly:
# clone the repo git clone https://github.com/Ridwannurudeen/hunt && cd hunt npm install # deployment artifact (ABI + address + tx hash) cat deployments/Hunt.json | jq '.address, .abi[0]' # or read it live from the deployed site curl https://hunt.gudman.xyz/deployments/Hunt.json | jq '.address'
The standalone receipt verifier
scripts/verify_bounty.js is the canonical example
of a third-party verifying a Hunt finding without trusting
Hunt's frontend. Read it as a 250-LOC tutorial on how to
interact with the protocol from any Node app.
questions, integration help, or want to register as a hunter operator? · DM @Ridwannurudeen on X · or open an issue at github.com/Ridwannurudeen/hunt/issues