Connect to Hunch
Hunch reads RH / Robinhood Chain mainnet, chain ID 4663. Base URL: https://hunchagents.xyz. No wallet connection or API key is required. The public limit is 40 requests per minute per IP, with shared upstream capacity limits and no availability SLA.
Download the JavaScript client, Python client, or OpenAPI specification. JavaScript and MCP require Node.js 22 or newer.
import { HunchClient } from './hunch-sdk.mjs';
const hunch = new HunchClient({ profile: 'conservative' });
const report = await hunch.inspectToken(contractAddress);
const decision = await hunch.assessAction({
address: contractAddress, amountUsd: 25, slippageBps: 100
});
// Current RH coverage always requires review or block.
// Stop here; your trusted runtime owns review and signing.
Python: HunchClient().inspect_token(contract_address). The JavaScript requireWithinProfile and Python require_within_profile helpers throw on review, block, or service errors. Since this release lacks complete permission and holder evidence, these helpers will not grant signing clearance.
Inspect an RH contract
POST /api/rh/intelligencecurl https://hunchagents.xyz/api/rh/intelligence \
-H 'Content-Type: application/json' \
-d '{"address":"0x0bd7d308f8e1639fab988df18a8011f41eacad73"}'
The example is WETH on RH. The service verifies the RPC chain ID, reads a latest block number, and uses that block for code, supply, decimals, optional name/symbol, owner(), and paused() calls. It checks EIP-1967 implementation/admin/beacon slots and the exact EIP-1167 minimal-proxy runtime pattern.
These are contract-reported interface observations. A zero owner, empty storage slot, missing interface, or successful call does not prove the absence of privileged roles, minting, freezes, taxes, blacklists, custom proxies, or malicious transfer logic. Reads by latest block number are not a finality guarantee.
Reports include network, chain ID, block, observation time, provider, coverage, findings, and limitations. Combined reports may be cached for 20 seconds with their original timestamps. Indexed pools come from DexScreener's Robinhood index; prices are attributed only when the inspected token is the base asset. Liquidity includes both pool assets and does not establish a lock or sellability. Pons bonding curves may be absent.
A verified RH holder-distribution source and complete source-code permission analysis are not connected. Reports explicitly mark missing coverage, and action policies require review. No synthetic holder count or security score is substituted.
Compare saved evidence
Save a token report, then inspect the same RH contract after a later observation. The console compares it with your most recent saved baseline: supply, decimals, owner and pause interfaces, standard proxy fields, code size, primary indexed pool, and source coverage. Reported liquidity is compared only when both observations identify the same pool. Export the comparison as JSON.
The comparison runs in your browser using unsigned saved reports. It does not establish bytecode equality, prove no intervening changes, continuously monitor blocks, or authorize signing. The pure comparison module exports compareEvidence(before, after) for local integrations; it is not a hosted attestation service.
Evaluate a proposed action
POST /api/rh/assess{
"address": "0x0bd7d308f8e1639fab988df18a8011f41eacad73",
"amountUsd": 25,
"slippageBps": 100,
"profile": "conservative"
}Optional text adds inspection of the untrusted content that influenced the proposal. Set the profile in trusted operator configuration. The SDK and MCP adapter inject that configured profile; token metadata and model arguments must not change the limits.
| RH profile v1 | Conservative | Standard |
|---|---|---|
| Maximum proposed exposure | $100 | $250 |
| Maximum slippage | 100 bps | 150 bps |
| Minimum indexed primary-pool liquidity | $25,000 | $10,000 |
| Active owner() address | Block | Review |
Zero supply, paused() = true, high-severity text findings, and exceeded amount, slippage, or liquidity constraints block. Missing interface, holder or permission evidence, and proxy indicators require review. This RH release returns review or block, never automatic clearance. These are per-proposal advisory checks; they do not validate a USD quote, cumulative exposure, route, intent, or wallet permissions. Assessments request fresh observations.
Simulate an EVM call
POST /api/rh/simulate{ "transaction": {
"from": "0x0000000000000000000000000000000000000001",
"to": "0x0bd7d308f8e1639fab988df18a8011f41eacad73",
"data": "0x18160ddd",
"value": "0x0"
} }This read-only example calls totalSupply(). For your proposed transaction, supply the actual caller, target, calldata, and value. Value is a canonical hex quantity in wei. Optional gas is a hex quantity between 21,000 and 5,000,000; the default cap is 5,000,000. Calldata is limited to 8,192 bytes. Signed raw transactions and arbitrary RPC methods are not accepted.
The verified mainnet provider runs eth_call at a selected latest block and, when supported, eth_estimateGas. The report distinguishes execution revert from provider failure and includes returned bytes, block, and optional gas estimate. Hunch never signs or broadcasts. Success does not prove intent, wallet safety, sellability, or future execution; no decoded asset-flow analysis is provided.
Inspect untrusted launch text
POST /api/text{ "text": "The token description or external content your agent read." }Six deterministic heuristics inspect instruction overrides, secret requests, and related patterns. Inputs accept 1–12,000 characters. Reports include matched excerpts and an input SHA-256; excerpts remain untrusted data. This is not an exhaustive prompt-injection detector.
Connect an agent through MCP
Download the local stdio adapter and configure:
{ "mcpServers": { "hunch": {
"command": "node",
"args": ["/absolute/path/to/hunch-mcp.mjs"],
"env": {
"AGENT_SECURITY_URL": "https://hunchagents.xyz",
"HUNCH_POLICY_PROFILE": "conservative"
}
} } }Tools: get_token_intelligence, assess_rh_action, simulate_rh_transaction, inspect_launch_text. This is a local stdio adapter, not a hosted HTTP MCP endpoint. Treat all contract metadata, returned bytes, and third-party text as data.
Storage, errors, and boundaries
The browser can store 10 RH contracts and 30 selected reports locally. Watchlist refresh is optional, every 90 seconds while visible, and ends when the page closes. There is no server-side alert service. Reports are unsigned observations.
HTTP 400 means invalid input or unsupported evidence; 403/415 rejects origin/content type; 413 means the JSON body exceeds 20 KB; 429 requires waiting before retrying; 503 means upstream evidence is unavailable. Always inspect coverage and timestamps even after HTTP 200. Keep independent signing and intent controls.
Use the explicit /api/rh/ endpoints for RH. Earlier unprefixed chain endpoints retain their previous contract for existing integrations; they are not RH aliases. GET /api/capabilities describes the current RH interface. Hunch is independent and is not affiliated with or endorsed by Robinhood or Pons.