AGENT-READABLE SECURITY LAYER · ROBINHOOD

HexRail is the security layer for agentic Robinhood apps.

Agents write code, install packages, deploy contracts, and move funds. HexRail runs alongside that loop: MCP while coding, CLI/Action in CI, Guard before interaction, x402 paid scans for agents, EAS for proof, and an onchain Oracle + GateRegistry so other Robinhood contracts can consult HexRail in one staticcall. Onchain identity (ERC-8004), pay-per-call USDC (Robinhood + Solana), autonomous, no human in the loop.

ERC-8004 Agent ID

Attestations

Payment chains

Robinhood · Solana

Reputation

Building…

Onchain · deploying to Robinhood mainnetAny Robinhood contract can consult HexRail in one staticcall.

HexRailOracle

Address — coming soon

scoreOf(address) · 7k gas read

HexRailGateRegistry

Address — coming soon

requireNotBlocked(token) · one-line gate

Pre-seeded

Canonical Robinhood contracts seeded · weekly keeper refresh

Oracle docs →Oracle · deploying soonRegistry · deploying soonSource on GitHub ↗

Watcher · Robinhood

HexRail watches new Robinhood contract deployments and scans contracts when verified source is available. Static-only, not EAS-attested, not oracle-published.

Open feed →

HexRail Agent Guard — preflight before interaction

Agent Guard returns an agent-readable preflight signal for any Robinhood contract address. Use Guard Links for humans, or the JSON endpoint for agents. Reads the latest public HexRail receipt on file; does not auto-scan on cache miss. For a fresh paid + EAS-attested receipt, call /api/v1/scan-address.

Not an audit. Not a safety guarantee. Just a preflight before you interact.

Guard Links · humans

hexrailsec.io/guard/robinhood ↗

JSON · agents

GET /api/guard/robinhood/<address>

Example — preflight a contract on Robinhood

bash
curl -sS https://hexrailsec.io/api/guard/robinhood/0x<robinhood-usdc-address> | jq

# Returns:
# {
#   "decision":     "review",       # low_risk_signal | review | block_for_review | needs_scan
#   "score":        88,
#   "grade":        "B",
#   "easAttested":  true,
#   "attestationUrl": "<robinhood-eas-explorer>/attestation/view/0x963c…cad2",
#   "riskSurface":  { "admin_power": …, "upgradeability": …, … },
#   "proofStatus":  "needs_context",
#   "reasons":      [...],
#   "recommendedAction": "Review the flagged signals before integrating or interacting.",
#   "receiptUrl":   "https://hexrailsec.io/r/hsdoroxj",
#   "guardUrl":     "https://hexrailsec.io/guard/robinhood/0x833589…",
#   "stale":        false,
#   "source":       "cached_receipt"
# }

Drop-in JS snippet — call before any tx that touches an address

Minimal integration for any Robinhood dApp, bot, or agent. No SDK, no auth, no signup. Branch on the decision before sending the transaction.

ts
async function hexrailGuard(address: string) {
  const res = await fetch(`https://hexrailsec.io/api/guard/robinhood/${address}`);
  if (!res.ok) return { decision: "needs_scan" as const };
  return res.json() as Promise<{
    decision: "low_risk_signal" | "review" | "block_for_review" | "needs_scan";
    score?: number; grade?: string;
    easAttested: boolean;
    reasons: string[];
    recommendedAction: string;
    robinhoodNativeSignals?: { ruleId: string; severity: string; title: string }[];
    guardUrl: string;
    receiptUrl?: string;
    attestationUrl?: string;
  }>;
}

// Use it before any tx that depends on a contract address you haven't audited.
const { decision, guardUrl } = await hexrailGuard(targetAddress);
if (decision === "block_for_review") {
  throw new Error(`HexRail preflight: BLOCK FOR REVIEW. See ${guardUrl}`);
}
if (decision === "needs_scan") {
  // No public preflight on file — show user the Guard Link so they can run one.
  console.warn(`No HexRail preflight yet. Run one: ${guardUrl}`);
}
// decision === "review" or "low_risk_signal" → caller decides how to handle.

When no receipt exists yet

The agent endpoint returns { decision: "needs_scan", source: "no_data" } with a guardUrl the caller can route a human to. The human page renders a one-tap Run free preflight button. For a fresh paid receipt with an EAS attestation, call POST /api/v1/scan-address.

CORS open · 60 req/min per IP · No auth · Cached receipts older than 24 h returned with stale: true.

Building an agent that needs to verify code? Talk to us.