{"service":"Anvil API","version":"0.4.0","status":"ok","uptime":20569,"release":"unknown","sandbox":"firejail","promptVersion":"refine.v9","redis":false,"sentry":true,"toolchain":{"cargo":true,"cargoBuildSbf":true,"anchor":true},"differentialAvailable":true,"parseSourceMaxBytes":5000000,"liteSvmContract":{"hasWarpToTimestamp":false,"hasWarpToSlot":true,"hasAddProgram":true,"hasAirdrop":true,"hasGetAccount":true,"hasSendTransaction":true,"hasLatestBlockhash":true},"aiCache":{"entries":0,"totalBytes":0,"maxEntries":10000,"maxBytes":1073741824,"maxAgeMs":2592000000,"utilizationPct":0},"endpoints":["POST /parse  — Anchor source|file|project → Solana IR","POST /emit   — Solana IR → target framework code (?refine=1 for AI polish)","POST /lint   — portability scorecard (ready/review/blocker findings)","POST /build  — cargo check on emitted Rust → structured rustc diagnostics","POST /build/differential — byte-equal verification (Anchor reference vs Anvil emit, in-browser)","GET  /build/differential/quota — caller's remaining differential quota for the day","POST /ai/refine — AI-powered fix for validation issues","GET  /demo      — list demo names","GET  /demo/:name — pre-loaded demo IR","GET  /health    — this response","GET  /metrics/public — public aggregate counters (cache hit rate, accept/reject, totals)","GET  /metrics   — full snapshot incl. top-IP-prefix spend (gated by ANVIL_METRICS_TOKEN when set)","GET  /metrics/dashboard — public HTML view of aggregate counters","GET  /whoami    — caller-scoped: spend remaining, rate-limit headroom, build queue depth"]}