API & MCP
Monad validator data
for your app or agent
The 16 tools behind the PurpleIris assistant are available directly: as a Model Context Protocol server for AI agents and as a REST API for everything else. Read-only, no key, and every response carries the same data-class label the assistant uses.
Try it
These run real requests from your browser. The first one reads the validator set straight from the staking precompile and returns the block it was read at.
Connect over MCP
Streamable HTTP transport, stateless, protocol version 2025-06-18. Point any MCP client that supports remote HTTP servers at:
https://purpleiris.live/api/mcp
Claude Code:
claude mcp add --transport http purpleiris https://purpleiris.live/api/mcp
Clients configured with JSON:
{
"mcpServers": {
"purpleiris": { "type": "http", "url": "https://purpleiris.live/api/mcp" }
}
}Or speak JSON-RPC to it yourself:
curl -s https://purpleiris.live/api/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"get_onchain_snapshot","arguments":{"top_n":3}}}'REST
One endpoint per tool. POST a JSON body, or GET with query parameters. The catalog and an OpenAPI 3.1 document are generated from the same tool definitions the assistant uses.
# list tools and their JSON Schemas
curl -s https://purpleiris.live/api/v1/tools
# call one
curl -s 'https://purpleiris.live/api/v1/tools/estimate_stake_reward?stake_mon=10000&days=90'
curl -s https://purpleiris.live/api/v1/tools/get_validator \
-H 'content-type: application/json' -d '{"id":"backpack"}'
# OpenAPI
curl -s https://purpleiris.live/api/v1/openapi.jsonWhat comes back
Every tool returns the same envelope. Over MCP it is the structuredContent of the result.
{
"tool": "get_onchain_snapshot",
"data": { "as_of_block": 112474748, "epoch": 2250, "...": "..." },
"data_class": 1,
"data_class_label": "Class 1 — on-chain (deterministic)",
"source": "get_onchain_snapshot",
"timestamp": "2026-10-11T13:20:00.000Z",
"freshness": { "indexed_at": "…", "age_hours": 1.2, "stale": false },
"methodology_url": "https://purpleiris.live/methodology"
}data_class— 1 read from chain, 2 derived by a stated formula, 3 an estimate. Defined on the methodology page.freshness— present on tools that read the indexer's tables. Ifstaleis true the data is older than one and a half indexer cycles; showindexed_atto your user instead of calling it current.as_of_block— on the live snapshot, the block every value was read at, so the result can be reproduced against any Monad RPC.
Tools
| TOOL | WHAT IT RETURNS | ARGUMENTS | SOURCE |
|---|---|---|---|
| get_onchain_snapshot | Live on-chain network snapshot | top_n? | live chain read |
| get_validator_onchain | Live on-chain validator and delegator position | id, delegator_address? | live chain read |
| get_validator | Validator profile | id | indexer |
| list_validators | List validators | active_only?, max_commission_bps?, min_stake_mon?, region?, infra_provider?, limit? | indexer |
| get_network_health | Network health | — | indexer |
| find_underdogs | Find underdog validators | min_success_rate?, max_stake_rank?, limit? | indexer |
| simulate_delegation | Simulate a delegation | validator_id, stake_mon, days | indexer |
| simulate_diversification | Score a delegation split | allocations | indexer |
| estimate_stake_reward | Estimate staking reward | stake_mon, days, commission_bps? | formula |
| get_recent_assignments | Recent epoch history | validator_id, limit? | indexer |
| get_network_overview | Network overview | — | indexer |
| get_latest_monad_release | Latest Monad release | — | indexer |
| get_assignment_predictor | Round assignment predictor | validator_id | indexer |
| get_anomaly_check | Anomaly check | validator_id, window_hours? | indexer |
| get_execution_revenue | Execution revenue | validator_identifier | indexer |
| get_staking_rewards | Staking rewards | validator_identifier | indexer |
Limits and ground rules
- 60 requests per minute per IP. A 429 response includes Retry-After.
- Read-only. No endpoint signs, sends or holds anything.
- Non-advisory. The API reports data; it does not rank validators for you, and Class 3 values are estimates with stated weaknesses, not promises.
- Open source under the MIT license: github.com/gizdusum/purpleiris-monad.
purpleiris 1.1.0