{ "openapi": "3.1.0", "info": { "title": "Hunch Security Intelligence", "version": "0.5.0", "description": "Read-only observations for RH / Robinhood Chain agents. No custody, signing, or automatic runtime enforcement. Public API: 40 requests/minute/IP with shared provider limits. Missing required evidence requires review." }, "servers": [ { "url": "https://hunchagents.fun" } ], "paths": { "/api/rh/context": { "post": { "operationId": "context", "summary": "Build a shared RWA decision-context packet", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "tokens": { "type": "string", "default": "1" }, "counterAsset": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "transaction": { "type": "object", "properties": { "from": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "to": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "data": { "type": "string" }, "value": { "type": "string" }, "gas": { "type": "string" } }, "required": [ "from", "to", "data" ], "additionalProperties": false } }, "required": [ "address" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DecisionContext" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/rh/instrument": { "post": { "operationId": "instrument", "summary": "Reconcile stock-token identity and reference valuation", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "tokens": { "type": "string", "default": "1", "description": "Positive decimal token quantity with up to 18 decimal places" } }, "required": [ "address" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstrumentIntelligence" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/rh/intelligence": { "post": { "operationId": "intelligence", "summary": "Read token intelligence", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" } }, "required": [ "address" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TokenIntelligence" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/rh/assess": { "post": { "operationId": "assess", "summary": "Assess an action under an operator-selected profile", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "amountUsd": { "type": "number", "minimum": 0 }, "slippageBps": { "type": "integer", "minimum": 0, "maximum": 10000 }, "profile": { "type": "string", "enum": [ "conservative", "standard" ], "default": "conservative" }, "text": { "type": "string", "minLength": 1, "maxLength": 12000 } }, "required": [ "address", "amountUsd", "slippageBps" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ActionAssessment" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/rh/simulate": { "post": { "operationId": "simulate", "summary": "Simulate an EVM call without broadcasting", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "transaction": { "type": "object", "properties": { "from": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "to": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "data": { "type": "string", "maxLength": 16386, "pattern": "^0x([0-9a-fA-F]{2})*$" }, "value": { "type": "string" }, "gas": { "type": "string" } }, "required": [ "from", "to", "data" ], "additionalProperties": false } }, "required": [ "transaction" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Simulation" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/text": { "post": { "operationId": "text", "summary": "Inspect text using six deterministic heuristics", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "text": { "type": "string", "minLength": 1, "maxLength": 12000 } }, "required": [ "text" ] } } } }, "responses": { "200": { "description": "Check completed. Inspect coverage, decision, and limitations. This is not signing approval.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TextReport" } } } }, "400": { "description": "Invalid input or unsupported/incomplete evidence", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "403": { "description": "Origin rejected", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "413": { "description": "Body exceeds 20 KB", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "415": { "description": "JSON content type required", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "429": { "description": "Client or shared capacity limit", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Upstream provider unavailable", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/api/capabilities": { "get": { "operationId": "capabilities", "summary": "Read available operations and fixed policy profiles", "responses": { "200": { "description": "Current capabilities", "content": { "application/json": { "schema": { "type": "object" } } } } } } } }, "components": { "schemas": { "DecisionContext": { "type": "object", "additionalProperties": true, "required": [ "kind", "chainId", "observedAt", "decision", "request", "requestSha256", "asset", "instruments", "reasons", "observations", "limitations" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "chainId": { "const": 4663 }, "decision": { "type": "string", "enum": [ "review", "block" ] }, "request": { "type": "object", "additionalProperties": true }, "requestSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "asset": { "type": "object", "additionalProperties": true }, "instruments": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "simulation": { "type": [ "object", "null" ] }, "observations": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "reasons": { "type": "array", "items": { "type": "string" } }, "limitations": { "type": "array", "items": { "type": "string" } } } }, "InstrumentIntelligence": { "type": "object", "additionalProperties": true, "required": [ "kind", "address", "observedAt", "decision", "identity", "findings", "coverage", "limitations" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "identity": { "type": "object", "additionalProperties": true }, "decision": { "type": "string", "enum": [ "review", "block" ] }, "quote": { "type": "object", "additionalProperties": true }, "referenceValue": { "type": "object", "additionalProperties": true }, "findings": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "coverage": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "limitations": { "type": "array", "items": { "type": "string" } } } }, "Error": { "type": "object", "required": [ "error" ], "properties": { "error": { "type": "string" } } }, "TokenIntelligence": { "type": "object", "additionalProperties": true, "required": [ "kind", "address", "observedAt", "status", "contract", "holders", "markets", "coverage", "findings", "limitations" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "address": { "type": "string", "minLength": 42, "maxLength": 42, "pattern": "^0x[0-9a-fA-F]{40}$", "description": "RH mainnet token contract address" }, "network": { "const": "robinhood-mainnet" }, "status": { "type": "string", "enum": [ "incomplete", "attention", "observations_complete" ] }, "contract": { "type": "object", "additionalProperties": true }, "holders": { "type": "object", "additionalProperties": true }, "markets": { "type": "object", "additionalProperties": true }, "coverage": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "findings": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "limitations": { "type": "array", "items": { "type": "string" } } } }, "ActionAssessment": { "type": "object", "additionalProperties": true, "required": [ "kind", "observedAt", "decision", "profile", "proposal", "reasons", "report", "enforcement" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "decision": { "type": "string", "enum": [ "block", "review" ] }, "profile": { "type": "object", "additionalProperties": true }, "proposal": { "type": "object", "additionalProperties": true }, "reasons": { "type": "array", "items": { "type": "string" } }, "report": { "$ref": "#/components/schemas/TokenIntelligence" }, "textReport": { "$ref": "#/components/schemas/TextReport" }, "enforcement": { "type": "string" } } }, "Simulation": { "type": "object", "additionalProperties": true, "required": [ "kind", "observedAt", "status", "block", "error", "returnData", "settings", "limitations" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "status": { "type": "string", "enum": [ "simulation_succeeded", "simulation_failed" ] }, "block": { "type": "string" }, "provider": { "type": "string" }, "error": {}, "gasEstimate": { "type": [ "string", "null" ] }, "returnData": { "type": [ "string", "null" ] }, "settings": { "type": "object", "additionalProperties": true }, "limitations": { "type": "array", "items": { "type": "string" } } } }, "TextReport": { "type": "object", "additionalProperties": true, "required": [ "kind", "observedAt", "inputSha256", "status", "findings", "checks", "scope", "limitations" ], "properties": { "id": { "type": "string" }, "kind": { "type": "string" }, "version": { "type": "string" }, "observedAt": { "type": "string", "format": "date-time" }, "inputSha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }, "status": { "type": "string", "enum": [ "review_required", "review_recommended", "no_pattern_matches" ] }, "findings": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "checks": { "type": "array", "items": { "type": "object", "additionalProperties": true } }, "scope": { "type": "string" }, "limitations": { "type": "array", "items": { "type": "string" } } } } } } }