RiskState MCP Server
MCP server for RiskState — deterministic risk governance API for autonomous crypto trading agents.
Your agent asks: "How much can I risk?" RiskState answers with: policy level, max position size, leverage limits, blocked actions.
What it does
Wraps the RiskState /v1/risk-state API as an MCP tool. One tool: get_risk_policy.
Field | Description |
| 5 levels: BLOCK_SURVIVAL, BLOCK_DEFENSIVE, CAUTIOUS, GREEN_SELECTIVE, GREEN_EXPANSION |
| Maximum position size as % of portfolio (0-100) |
| Maximum allowed leverage multiplier |
| What the agent CAN do at this policy level |
| What the agent CANNOT do |
| Signal agreement x data quality (0-1) |
The API aggregates 9+ real-time data sources server-side. See API docs for details.
What this wrapper does (and doesn't)
This is a thin wrapper — it translates MCP tool calls into REST API requests to POST /v1/risk-state and returns the response. All computation (scoring, policy engine, data ingestion) happens server-side.
This wrapper adds:
MCP protocol compliance (stdio transport for Claude Desktop/Code)
Input validation via Zod schemas
Human-readable policy summary prepended to responses
Specific error messages (auth, rate limit, timeout) for agent recovery
This wrapper does NOT:
Cache responses (the API has 60s server-side cache)
Perform any scoring or computation locally
Guarantee response schema stability (follows API versioning)
Installation
npm install @riskstate/mcp-serverConfiguration
Environment Variables
Variable | Required | Description |
| Yes | API key from riskstate.ai (free during beta) |
| No | Custom API base URL (default: |
Claude Desktop
Add to ~/.config/Claude/claude_desktop_config.json:
{
"mcpServers": {
"riskstate": {
"command": "npx",
"args": ["@riskstate/mcp-server"],
"env": {
"RISKSTATE_API_KEY": "your-api-key"
}
}
}
}Claude Code
claude mcp add riskstate -- npx @riskstate/mcp-serverSet the API key in your environment:
export RISKSTATE_API_KEY=your-api-keyUsage
The server exposes one tool: get_risk_policy
Parameters
Parameter | Type | Required | Description |
|
| Yes | Asset to analyze |
| string | No | DeFi wallet for on-chain position data |
|
| No | Lending protocol (default: spark) |
| boolean | No | Include full breakdown (subscores, macro, risk flags) |
Example Response
{
"exposure_policy": {
"policy_level": "CAUTIOUS",
"max_size_pct": 35,
"leverage_max": 1.5,
"allowed_actions": ["DCA", "WAIT", "SPOT_LONG_CONFIRMED"],
"blocked_actions": ["LEVERAGE_GT_2X", "NEW_POSITIONS_UNCONFIRMED"]
},
"classification": {
"cycle_phase": "MID",
"market_regime": "RANGE",
"macro_regime": "NEUTRAL",
"direction": "SIDEWAYS"
},
"auditability": {
"composite_score": 52,
"confidence_score": 0.72,
"policy_hash": "a3f8c2...",
"ttl_seconds": 60
}
}How Agents Should Use This
Call get_risk_policy before every trade:
If
policy_levelstarts withBLOCK→ do not open new positionsUse
max_size_pctto cap position sizingCheck
blocked_actionsbefore executingRe-query after
ttl_seconds(60s cache)
Limitations
v1 scope: BTC and ETH only. More assets planned.
Protocols: Spark and Aave V3 only for DeFi position data.
Rate limit: 60 requests/minute per API key.
Latency: ~1-3s per request (9+ upstream data source aggregation).
Tested with: Claude Desktop, Claude Code. Should work with any MCP-compatible client.
Links
Landing page: riskstate.ai
API docs: github.com/likidodefi/riskstate-docs
SKILL.md: agentskills.io
License
MIT