{"description":"Phase 3 usage metering via Supabase","how_it_works":["Every POST /process call records a usage event to Supabase (if configured).","If SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY are not set, NoopPersistence is used (events are logged but not stored).","Persistence failures never block service responses.","GET /health shows persistence mode (supabase|noop), configured status, and last_check result."],"usage_event_fields":["request_id","service_id","status","cost_usd","currency","settlement_asset","payment_required_now","payment_required_future","uses_ai","provider_type","input_size","output_size","latency_ms","format","user_agent","ip_hash","api_key_id","agent_id","error_code","input_hash"],"setup":{"env_vars":["SUPABASE_URL","SUPABASE_SERVICE_ROLE_KEY"],"migration":"Run supabase/migrations/002_usage_events_phase3.sql against your Supabase project.","health_check":"GET /health returns { persistence: { mode, configured, last_check } }"}}