Deterministic pre-trade risk checks for AI agents on Robinhood Chain. Returns allow/warn/deny.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Honeypot / contract safety check for any ERC-20 token. Returns a severity classification (safe / warn / danger), the specific risk factors detected, and the result of a simulated sell. When severity=danger, the next `evaluate_trade` for the same contract is automatically denied regardless of any other checks. This is a heuristic bytecode + simulation check, not a formal audit. Use it before trading unknown tokens, memecoins, or any contract that is absent from the official Robinhood Chain registry. It is safe to call repeatedly; no transaction is ever sent.
Token contract address (0x...).
Honeypot / contract safety check for any ERC-20 token. Returns a severity classification (safe / warn / danger), the specific risk factors detected, and the result of a simulated sell. When severity=danger, the next `evaluate_trade` for the same contract is automatically denied regardless of any other checks. This is a heuristic bytecode + simulation check, not a formal audit. Use it before trading unknown tokens, memecoins, or any contract that is absent from the official Robinhood Chain registry. It is safe to call repeatedly; no transaction is ever sent.
| Argument | Type | Description |
|---|---|---|
| contract_address* | string | Token contract address (0x...). |
{
"type": "object",
"required": [
"contract_address"
],
"properties": {
"contract_address": {
"type": "string",
"description": "Token contract address (0x...)."
}
},
"additionalProperties": false
}Pre-trade risk check for a proposed trade. Call this BEFORE executing any trade and treat a "deny" decision as a hard stop. Evaluated at a fixed Tier 1 ceiling ($5,000 notional). For higher limits, use `evaluate_trade_paid` (Tier 2, $25,000) which settles an x402 payment on-chain.
| Argument | Type | Description |
|---|---|---|
| side* | string | "buy" or "sell". |
| asset* | string | Asset symbol, e.g. NVDA, AAPL, TSLA, USDG. |
| amount* | number | Quantity in token units — NOT a pre-computed USD value. |
| wallet* | string | EVM wallet address (0x...) the trade would execute from. |
| request_id | any | Optional idempotency key. |
| contract_address* | string | Token contract address (0x...). Must match the official registry address for that symbol, or the trade is denied as a suspected fake token. |
| max_slippage_bps | integer | Max slippage in basis points (default 100). |
{
"type": "object",
"required": [
"wallet",
"asset",
"contract_address",
"side",
"amount"
],
"properties": {
"side": {
"type": "string",
"description": "\"buy\" or \"sell\"."
},
"asset": {
"type": "string",
"description": "Asset symbol, e.g. NVDA, AAPL, TSLA, USDG."
},
"amount": {
"type": "number",
"description": "Quantity in token units — NOT a pre-computed USD value."
},
"wallet": {
"type": "string",
"description": "EVM wallet address (0x...) the trade would execute from."
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional idempotency key."
},
"contract_address": {
"type": "string",
"description": "Token contract address (0x...). Must match the\nofficial registry address for that symbol, or the trade is\ndenied as a suspected fake token."
},
"max_slippage_bps": {
"type": "integer",
"default": 100,
"description": "Max slippage in basis points (default 100)."
}
},
"additionalProperties": false
}Pre-trade risk check gated by an x402 payment. Evaluated as COLR Tier 2: $25,000 notional ceiling, 10/25 per-minute rate limits. No COLR holdings are required — the on-chain payment is the credential. FLOW ---- 1. Call WITHOUT payment_proof → the tool returns a `PaymentRequiredOutput` describing the on-chain payment (network, asset, amount, payTo, resource). 2. Settle the payment on-chain using an x402-capable client. The facilitator returns a proof string. 3. Call again with `payment_proof=<proof>` → the tool forwards the proof to the guardrail's x402-paid endpoint and returns a full `EvaluateTradeOutput` with `tier=2`.
| Argument | Type | Description |
|---|---|---|
| side* | string | "buy" or "sell". |
| asset* | string | Asset symbol, e.g. NVDA, AAPL, TSLA, USDG. |
| amount* | number | Quantity in token units. |
| wallet* | string | EVM wallet address (0x...) the trade would execute from. |
| request_id | any | Optional idempotency key. |
| payment_proof | any | x402 payment proof from the facilitator. Omit on the first call to receive the payment challenge. |
List every asset in the guardrail's official Robinhood Chain registry, with its canonical contract address.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Simulate a wallet's ERC-20 balance after a hypothetical trade using eth_call state override. Read-only: no transaction is ever sent.
| Argument | Type | Description |
|---|---|---|
| delta* | number | Signed amount (negative = spend). |
| holder* | string | Wallet address whose balance is simulated (0x...). |
| decimals | integer | Token decimals (default 18). |
| token_address* | string | ERC-20 contract address (0x...). |
{
"type": "object",
"required": [
"token_address",
"holder",
"delta"
],
"properties": {
"delta": {
"type": "number",
"description": "Signed amount (negative = spend)."
},
"holder": {
"type": "string",
"description": "Wallet address whose balance is simulated (0x...)."
},
"decimals": {
"type": "integer",
"default": 18,
"description": "Token decimals (default 18)."
},
"token_address": {
"type": "string",
"description": "ERC-20 contract address (0x...)."
}
},
"additionalProperties": false
}Verify the tamper-evident audit trail for a wallet's past guardrail decisions.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many recent records to verify (1-1000, default 100). |
| wallet* | string | EVM wallet address (0x...). |
{
"type": "object",
"required": [
"wallet"
],
"properties": {
"limit": {
"type": "integer",
"default": 100,
"description": "How many recent records to verify (1-1000, default 100)."
},
"wallet": {
"type": "string",
"description": "EVM wallet address (0x...)."
}
},
"additionalProperties": false
}| contract_address* |
| string |
| Token contract address (0x...). |
| max_slippage_bps | integer | Max slippage in basis points (default 100). |
{
"type": "object",
"required": [
"wallet",
"asset",
"contract_address",
"side",
"amount"
],
"properties": {
"side": {
"type": "string",
"description": "\"buy\" or \"sell\"."
},
"asset": {
"type": "string",
"description": "Asset symbol, e.g. NVDA, AAPL, TSLA, USDG."
},
"amount": {
"type": "number",
"description": "Quantity in token units."
},
"wallet": {
"type": "string",
"description": "EVM wallet address (0x...) the trade would execute from."
},
"request_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional idempotency key."
},
"payment_proof": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "x402 payment proof from the facilitator. Omit\non the first call to receive the payment challenge."
},
"contract_address": {
"type": "string",
"description": "Token contract address (0x...)."
},
"max_slippage_bps": {
"type": "integer",
"default": 100,
"description": "Max slippage in basis points (default 100)."
}
},
"additionalProperties": false
}