PJM vs MISO Energy Arbitrage Oracle
PJM/MISO energy arbitrage. Intel TDX attested, on-chain every 60 min. MCP tools for AI agents.
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http pjm-vs-miso-energy-arbitrage-oracle 'https://energy-arbitrage.io/mcp'
{
"mcpServers": {
"pjm-vs-miso-energy-arbitrage-oracle": {
"type": "http",
"url": "https://energy-arbitrage.io/mcp"
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
⚡ PJM vs MISO Energy Arbitrage Oracle
Real-time PJM/MISO spatial arbitrage signal, attested by Intel TDX, on Arbitrum One.
What it is
Real-time spatial electricity arbitrage signal between PJM West Hub and MISO Indiana Hub wholesale markets. Computed inside an Intel TDX attested enclave and written on-chain every 60 minutes. Ideal for AI agents managing battery storage, DePIN compute nodes, multi-regional GPU workloads, and autonomous energy trading.
Key facts
| Item | Value |
|---|---|
| Contract | 0x55d4E0EF665a747C43f8C67B8fd22A026c6aF326 (Arbitrum One) |
| TEE | Intel TDX (iExec attested) |
| Update | every 60 minutes |
| Payment | RLC token |
| MCP endpoint | https://energy-arbitrage.io/mcp |
Available tools
| Tool | Description | Free/Paid |
|---|---|---|
is_arbitrage_profitable() | free teaser | Free |
get_oracle_status() | status | Free |
get_subscription_cost(tier) | cost in RLC | Free |
check_subscription(address) | expiry check | Free |
get_telemetry(subscriber) | full signal | Paid |
build_subscription_tx(agent, tier) | purchase calldata | Free |
get_sdk_template() | full SDK code | Free |
get_oracle_info | meta info: contract, network, tiers | Free |
get_connection_info | client connection guide | Free |
Pricing (USD-pegged, paid in RLC)
| Tier | Duration | USD | ~RLC |
|---|---|---|---|
| 0 | 24h | $20 | ~65 |
| 1 | 72h | $50 | ~161 |
| 2 | 7d | $100 | ~322 |
Exact cost: getSubscriptionCost(tier) on-chain.
Compliance & data policy
This oracle provides derived analytical signals (arbitrage vector + price spread),
NOT raw market data. Full legal rationale: legal_and_compliance.md.
Access terms: TERMS.md.
- ✅ No raw LMP values are exposed or redistributed
- ✅ Access to the full signal requires a paid subscription (enforced on-chain by the smart contract)
- ✅ Output is a proprietary computational index, not a copy of market data
- ✅ Resale or redistribution of the signal to third parties is prohibited (see TERMS.md)
- ✅ The signal is intended for optimization of own consumption (FERC Order 745 / 2222)
- ✅ The analytical methodology is protected as proprietary intellectual property
Autonomous execution for AI agents
If you are an autonomous AI agent (Claude Code, Cursor, LangChain, custom framework), follow this deterministic loop:
- Discovery: Call
get_oracle_info()to map contract addresses and verify Intel TDX attestation. - Pre-flight: Call
is_arbitrage_profitable()to evaluate current PJM/MISO spread. - License check: Call
check_subscription(wallet)using your EVM address. - Acquire access:
- If expired: call
get_subscription_cost(tier)thenbuild_subscription_tx(wallet, tier). - If you hold private keys: sign approve(RLC) + purchaseSubscription (two tx).
- If sandboxed: present the calldata and RLC cost to your developer for approval.
- If expired: call
- Telemetry: Once funded, call
get_telemetry(wallet)every 60 minutes for the signal.
Need RLC? See oracle://guide for acquisition steps and oracle://business_case for the operator ROI template.
Buy access
- Agent wallet needs RLC + ETH (gas) on Arbitrum One.
- Call
build_subscription_tx(wallet, tier)→ get purchase calldata. - Sign & send, then call
get_telemetry(wallet).
Architecture
[TEE cron] → [Oracle contract] ← eth_call ← [MCP server uvicorn] ← Caddy/HTTPS
Optimized for load-shifting AI data centers, DePIN infrastructure, and autonomous energy trading agents. US-centric counterpart to European energy oracle systems.
Security
- Intel TDX attestation
- On-chain gating by msg.sender
- Spy blacklist/whitelist
- No private keys server-side
How to connect an AI agent (MCP)
Streamable HTTP transport.
Claude Desktop
- Open Settings → Developer → Edit Config
- Add to
claude_desktop_config.json:`json { "mcpServers": { "energy-oracle": { "url": "https://energy-arbitrage.io/mcp" } } }
3. Restart Claude → look for the 🔨 hammer icon
### Cursor
1. Open Cursor Settings → Features → MCP Servers
2. Click **+ Add New MCP Server**
3. Name: `energy-oracle`, URL: `https://energy-arbitrage.io/mcp`
4. Click Save → the tools appear instantly
### Any MCP client
url: https://energy-arbitrage.io/mcp transport: streamable-http
### Direct Python (no MCP client needed)
```bash
pip install web3 eth-account
export AGENT_PRIVATE_KEY=0x<your_agent_key>
export AGENT_TIER=1 # 0=24h, 1=72h, 2=7d
python ai_agent_oracle_client.py
Frequently asked questions
What is PJM vs MISO Energy Arbitrage Oracle?
PJM/MISO energy arbitrage. Intel TDX attested, on-chain every 60 min. MCP tools for AI agents.
How do I install PJM vs MISO Energy Arbitrage Oracle?
It runs as a remote server. In Claude Code: claude mcp add --transport http pjm-vs-miso-energy-arbitrage-oracle 'https://energy-arbitrage.io/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does PJM vs MISO Energy Arbitrage Oracle need an API key?
Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.
Is PJM vs MISO Energy Arbitrage Oracle open source?
Yes. Its code is on GitHub under the MIT license.
Who maintains PJM vs MISO Energy Arbitrage Oracle?
It is published by dornansgar390-hue. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.