Connect to Hunch
Hunch reads
RH / Robinhood Chain mainnet, chain ID 4663. Base
URL: https://hunchagents.fun. 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.
One decision-context integration
POST /api/rh/context
const context = await hunch.getDecisionContext({
address: assetAddress,
tokens: '2',
counterAsset: counterAssetAddress,
transaction: { from: caller, to: router, data: calldata, value: '0x0' }
});
Only address is required. tokens defaults to
the decimal string '1'; counterAsset and transaction are
optional. The endpoint reads fresh asset evidence, relevant
stock-token context, a caller-selected counter asset and optional
eth_call simulation. It does not assume that the largest indexed pool
is your route. A counter-asset reference is per one token, not a
valuation of the whole trade.
The packet includes request, requestSha256,
underlying reports, observation times/blocks, reasons and a
review or block decision. An unavailable
component remains a gap. Instrument blocks and execution reverts
propagate. The fingerprint is SHA-256 of the normalized request JSON
in returned key order, not an attestation or proof of transaction
intent. Observations may come from different blocks and are not
finality guarantees.
Python:
get_decision_context(address, tokens='2',
counter_asset=other_address, transaction=call). MCP: get_rh_decision_context.
TypeScript declarations
accompany the portable SDK. There is no published npm package or
verified protocol adapter in this release.
This orchestration does not replace the fixed action-policy endpoint or trusted wallet controls. It has a shared capacity of one in-flight context request. Simulation retains its 5,000,000 gas cap; routes requiring more are unsupported. Hookr recapture swaps can exceed that cap. Do not lower a route's gas to make it fit.
Inspect an RH contract
POST /api/rh/intelligence
curl https://hunchagents.fun/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 the exact EIP-1167 pattern, and the
44-byte minimal forwarding runtime. Recognized targets are read at the
same block; both token and implementation runtime bytes receive
SHA-256 fingerprints. This is not recursive resolution or source
verification.
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 begin with a deterministic decision brief: observed controls, their consequences, and next checks. Counter-asset identities are matched by address against the official RH registry. Liquidity shares describe only returned pools, not all liquidity or executable depth. 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.
Instrument intelligence for agentic finance
POST /api/rh/instrument
{ "address": "0xaf3d76f1834a1d425780943c99ea8a608f8a93f9", "tokens": "2" }
Matches the chain and contract against Robinhood's official asset
registry. For stock tokens, Hunch reads uiMultiplier(),
newUIMultiplier(), effectiveAt(),
oraclePaused() and decimals at one latest block. It
reconciles the current multiplier with official REST metadata and
validates an identity-matched USD bid/ask. A stock-token contract
report also includes this instrument report automatically.
Corporate actions can change share-equivalent units without changing
raw balances. REST bid/ask are
underlying-share prices and need the multiplier once; Chainlink
stock-token prices already include it. Newer REST
tokenBid/tokenAsk fields are checked against
the computed result when present. Hunch uses integer fixed-point
arithmetic, then rounds reference values down to 18 decimal places.
Stale quotes (over 60 seconds), timestamps over five seconds in the future, trading halts, paused or invalid oracle flags, inactive assets, multiplier conflicts, and transitions due within five minutes block valuation-dependent execution. Missing interfaces suppress reference valuation and require review. The API never grants signing clearance. Registry entries may be cached for 30 seconds; official quote endpoints have their own 15-second cache.
JavaScript: hunch.inspectInstrument(address, '2').
Python: hunch.inspect_instrument(address, '2'). Quantity
is a positive decimal string, up to 18 decimal places and 1e18 tokens.
Chainlink rounds and sequencer uptime are not yet queried; venue flags
are underlying-equity metadata, not proof of wallet eligibility or
executable liquidity.
Source semantics: Building with Stock Tokens, Stock Token APIs, and Oracles & Price Feeds. Observed live API schema includes session-specific trading capabilities and token-equivalent prices in addition to the documented fields.
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.fun",
"HUNCH_POLICY_PROFILE": "conservative"
}
} } }
Tools: get_rh_decision_context,
get_rh_instrument_intelligence,
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.