{"name":"pjm-nowcast","version":"1.0.0","description":"Trailing and semi-live descriptive statistics on PJM RTO LMP, selected zonal LMP price spreads, and RTO load.","whatItIsNot":"Not a forecast, signal, trading recommendation, or advice. Not a substitute for official PJM data products. Buyer beware: figures are aggregated from public market sources; freshness equals the last successful background poll.","whenToUse":"When to use: You need a PJM window nowcast — load, prints, or realized window volatility — for a named hub or node, as inputs to mark or risk a power window or forward.","whenNotToUse":"When not to use: You already have model inputs (S or forward mark, K, times, r, σ or a premium) and only need fair value, Greeks, or an IV surface; you want a generic ticker screener or “price any stock.”","disclaimer":"Descriptive statistics only. Not a forecast, signal, or trading recommendation. Aggregated from public market sources. Freshness depends on the last successful background poll.","publicBaseUrl":"https://pjm-nowcast-production.up.railway.app","tags":["pjm","lmp","load","spread","electricity"],"jobTags":["mark","realized_vol","regime","spreads","asof"],"iconUrl":"https://pjm-nowcast-production.up.railway.app/favicon.ico","timezone":"America/New_York","networks":["solana","base"],"facilitators":{"payai":true,"cdp":true,"base":"cdp","solana":"payai","polygon":"payai"},"prices":{"POST /v1/nowcast/latest":"$0.02","POST /v1/nowcast/history":"$0.10","POST /v1/nowcast/history/extended":"$0.25"},"mcp":{"enabled":true,"path":"/mcp","url":"https://pjm-nowcast-production.up.railway.app/mcp","transport":"streamable-http","protocolVersion":"2024-11-05","accept":"application/json, text/event-stream","curl":"curl -sS -H 'Accept: application/json, text/event-stream' -H 'Content-Type: application/json' -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{}}' https://pjm-nowcast-production.up.railway.app/mcp"},"staleness":{"asOf":"Observation clock of the latest stored sample (America/New_York).","polledAt":"Wall time the background poller wrote that sample.","ageSeconds":"Seconds since polledAt.","maxAgeSeconds":10800,"stale":"true when ageSeconds > maxAgeSeconds. Payload is still returned."},"retentionDays":30,"endpoints":[{"tier":"L0","method":"GET","path":"/health","price":"free","description":"Process, store, and poll freshness. No market fetch."},{"tier":"L0","method":"GET","path":"/","price":"free","description":"This service card."},{"tier":"L0","method":"GET","path":"/v1/demo/sample","price":"free","description":"Unpaid synthetic fixture for schema inspection only. Not live PJM and not a nowcast. Paid routes are POST /v1/nowcast/*."},{"tier":"L0","method":"GET","path":"/v1/capabilities","price":"free","description":"Machine matrix: windows, zones, fields, networks, prices."},{"tier":"L0","method":"GET","path":"/openapi.json","price":"free","description":"OpenAPI 3 document. Free routes use security: []. Paid nowcast POSTs include x-payment-info and 402."},{"tier":"L0","method":"GET","path":"/swagger.json","price":"free","description":"Alias of /openapi.json."},{"tier":"L0","method":"GET","path":"/skill.md","price":"free","description":"Short agent skill card (also /SKILL.md)."},{"tier":"L0","method":"GET","path":"/llms.txt","price":"free","description":"Plain-text discovery index (also /llm.txt, /.well-known/llms.txt)."},{"tier":"L0","method":"POST","path":"/mcp","price":"free","description":"Streamable HTTP MCP JSON-RPC. tools/list is free. Paid nowcast tools return paymentStatus=required without x402."},{"tier":"L0","method":"GET","path":"/.well-known/x402","price":"free","description":"x402 well-known catalog (also /.well-known/x402.json)."},{"tier":"L0","method":"GET","path":"/.well-known/agent.json","price":"free","description":"Agent card: name, paid tools, networks, facilitator."},{"tier":"L0","method":"GET","path":"/.well-known/x402-resources","price":"free","description":"Machine list of paid resources (method, path, price, networks)."},{"tier":"L0","method":"GET","path":"/robots.txt","price":"free","description":"Allows free discovery paths."},{"tier":"L1","method":"POST","path":"/v1/nowcast/latest","price":"$0.02","description":"Latest snapshot plus trailing 24h descriptive stats. Also last price_vol ($/MWh rolling realized LMP std, not Black vol), price_vol_missing, mix_std_price (mixture std of RTO LMP, not price_vol), and mix_n_obs. asOf, polledAt, ageSeconds, maxAgeSeconds, stale, observationCount, and per-family last/min/max/mean/std/p05/p50/p95 with units. Load also includes sourcePublishedPeakTodayMw / Tomorrow and vsPublishedPeakTodayMw (source-published figures, not produced by this service).","inputSchema":{"type":"object","properties":{"families":{"type":"array","items":{"enum":["rto_lmp","zonal_spread","rto_load"]},"description":"Optional subset. Default: all families."}},"additionalProperties":false},"exampleRequest":{"families":["rto_lmp","zonal_spread","rto_load"]}},{"tier":"L2","method":"POST","path":"/v1/nowcast/history","price":"$0.10","description":"1–72h history of the same families at native poll resolution. asOf, polledAt, ageSeconds, maxAgeSeconds, stale, observationCount, and per-family last/min/max/mean/std/p05/p50/p95 with units. Load also includes sourcePublishedPeakTodayMw / Tomorrow and vsPublishedPeakTodayMw (source-published figures, not produced by this service).","inputSchema":{"type":"object","properties":{"families":{"type":"array","items":{"enum":["rto_lmp","zonal_spread","rto_load"]},"description":"Optional subset. Default: all families."},"windowHours":{"type":"integer","minimum":1,"maximum":72,"description":"Trailing window in hours. Default 24. L2 max 72."}},"additionalProperties":false},"exampleRequest":{"families":["rto_lmp"],"windowHours":24}},{"tier":"L3","method":"POST","path":"/v1/nowcast/history/extended","price":"$0.25","description":"Up to 30-day history, optional hourly buckets and prior-period comparison. Descriptive only. asOf, polledAt, ageSeconds, maxAgeSeconds, stale, observationCount, and per-family last/min/max/mean/std/p05/p50/p95 with units. Load also includes sourcePublishedPeakTodayMw / Tomorrow and vsPublishedPeakTodayMw (source-published figures, not produced by this service).","inputSchema":{"type":"object","properties":{"families":{"type":"array","items":{"enum":["rto_lmp","zonal_spread","rto_load"]},"description":"Optional subset. Default: all families."},"windowHours":{"type":"integer","minimum":1,"maximum":720,"description":"Trailing window in hours. Default 168. Max 720."},"resolution":{"enum":["native","hourly"]},"compare":{"enum":["none","prior_period"]}},"additionalProperties":false},"exampleRequest":{"families":["rto_load"],"windowHours":168,"resolution":"hourly","compare":"prior_period"}},{"tier":"L1","method":"POST","path":"/v1/nowcast/regime","price":"$0.02","description":"Paid latent-state snapshot with asOf and ageSeconds. Descriptive only. Not a forecast."},{"tier":"L1","method":"POST","path":"/v1/nowcast/spreads","price":"$0.02","description":"Paid zone-level spread table for the latest print. No history dump."},{"tier":"L1","method":"POST","path":"/v1/nowcast/asof","price":"$0.02","description":"Paid descriptive snapshot pinned to asOf. Fail closed if missing.","exampleRequest":{"asOf":"2026-08-01T16:00:00-04:00"}}]}