{"status":"ok","server_role":"control_plane","supported_server_roles":["control_plane","runtime","self_hosted"],"execution_topology":"single_server","hosted_execution_mode":"local_pool","deployment_mode":"managed","supported_deployment_modes":["managed","self_hosted"],"auth_strategy":"workspace_api_key","provider_key_mode":"managed","hosted_base_url":"https://backend.agentmemorylabs.com","plugin_package_name":"agentic-memory-openclaw","plugin_id":"agentic-memory","install_command":"openclaw plugin install agentic-memory-openclaw","setup_command":"openclaw agentic-memory setup","doctor_command":"openclaw agentic-memory doctor","required_services":[{"service_id":"backend_http","label":"Agentic Memory backend HTTP API","required":true,"status":"healthy","summary":"The Rust am-server process is responding and can publish onboarding health.","depends_on":[],"details":{"health_path":"/health","onboarding_path":"/health/onboarding","implementation":"am-server-rs"}},{"service_id":"api_auth","label":"Backend API authentication","required":true,"status":"healthy","summary":"Authenticated operator routes have at least one backend API key configured.","depends_on":["backend_http"],"details":{"api_key_count":1,"configured":true,"env_vars":["AM_SERVER_API_KEYS","AM_SERVER_API_KEY"],"auth_strategy":"workspace_api_key","introspection_configured":false,"control_plane_base_url":"https://backend.agentmemorylabs.com"}},{"service_id":"openclaw_memory","label":"OpenClaw memory capture pipeline","required":true,"status":"healthy","summary":"OpenClaw memory routes execute through the per-account embedded graph pool on this server.","component":"openclaw_memory","depends_on":["backend_http","api_auth"],"details":{"execution_adapter":"ladybug_tool_execution_service","hosted_execution_mode":"local_pool","execution_topology":"single_server","account_graph_pool_configured":true,"runtime_route_configured":true,"local_runtime_configured":false,"default_graph_backend":"grafeo","skeleton_fallback_disabled":true,"source_contract":"crates/am-server-rs/src/openclaw_memory_handlers.rs"}},{"service_id":"product_state_persistence","label":"Hosted product-state persistence","required":true,"status":"healthy","summary":"Product state is using the postgres adapter and reports production cutover readiness.","component":"product_state","depends_on":["backend_http"],"details":{"configured_backend":"postgres","installed_adapter":"postgres","durable":true,"restart_safe":true,"postgres_backed":true,"cutover_ready":true,"production_cutover_blocking_reason":null}}],"optional_services":[{"service_id":"openclaw_context_engine","label":"OpenClaw context engine","required":false,"status":"healthy","summary":"OpenClaw context resolution executes through the shared memory execution service.","component":"openclaw_context_engine","depends_on":["backend_http","api_auth","openclaw_memory"],"details":{"execution_adapter":"ladybug_tool_execution_service","hosted_execution_mode":"local_pool","execution_topology":"single_server","account_graph_pool_configured":true,"runtime_route_configured":true,"local_runtime_configured":false,"default_graph_backend":"grafeo","skeleton_fallback_disabled":true,"source_contract":"crates/am-server-rs/src/openclaw_memory_handlers.rs"}},{"service_id":"mcp_surfaces","label":"Hosted MCP surfaces","required":false,"status":"healthy","summary":"MCP mounts use rmcp Streamable HTTP transport and now report runtime capability separately from route wiring.","component":"mcp","depends_on":["backend_http"],"details":{"surface_count":7,"wired_tool_count":45,"implemented_tool_count":45,"unavailable_by_config_tool_count":0,"not_implemented_tool_count":0,"full_tool_count":45,"public_tool_count":16,"transport_status":"streamable_http_transport_ready","implementation_status":"runtime_capability_complete"}},{"service_id":"public_mcp_temporal_retrieval","label":"Public MCP temporal retrieval contract","required":false,"status":"unknown","summary":"Temporal-first public retrieval remains unready until Rust Ladybug and conversation/research retrieval are ported.","depends_on":["mcp_surfaces","openclaw_memory","openclaw_context_engine"],"details":{"publication_ready":false}},{"service_id":"hosted_account_surfaces","label":"Hosted account, billing, waitlist, and publication HTML","required":false,"status":"healthy","summary":"Hosted account login, billing checkout/portal, waitlist, beta lead capture, Stripe webhook, publication HTML, and brand assets are live.","component":"hosted_surfaces","depends_on":["backend_http"],"details":{"implementation_status":"partial_live","account_routes":"mounted","waitlist":"live","beta_leads":"live_when_resend_configured","billing_webhook":"live_when_stripe_webhook_configured","billing_checkout":"live_with_account_session","billing_portal":"live_with_account_session","hosted_assets":"live_for_packaged_assets","stripe_configured":true,"stripe_webhook_configured":true,"leads_configured":true,"inventory_module":"product_routes::HOSTED_SURFACE_ROUTE_CONTRACTS","mount":"product_routes::hosted_surface_router"}},{"service_id":"runtime_route_provisioning","label":"Hosted runtime route provisioning","required":false,"status":"historical","summary":"Sprite per-account runtime sync is retired; Grafeo graph binding is provisioned at signup in local_pool mode.","component":"runtime_provisioning","depends_on":["backend_http","product_state_persistence"],"details":{"sync_path":"/product/account/runtime-route/sync","diagnostics_path":"/product/operator/runtime-routes/{route_id}/diagnostics","hosted_execution_mode":"local_pool","sprite_provisioning":"retired"}},{"service_id":"code_index_production","label":"Managed code-index production execution","required":false,"status":"healthy","summary":"Managed code-index production execution is configured with worker paths, embedding credentials, and shadow/promote planning.","component":"code_index","depends_on":["backend_http","product_state_persistence"],"details":{"execution_readiness":{"adapter":"code_index_production_executor","production_execution_ready":true,"manifest_planning_ready":true,"worker_launch_enabled":true,"blockers":[]},"wired_route_count":10,"env_vars":["AM_LADYBUG_CODE_INDEX_WORKER_PATH","AM_CODE_INDEX_SNAPSHOT_DIR","AM_CODE_INDEX_WORKER_EVENT_DIR","AM_LADYBUG_DB_PATH","AM_CODE_INDEX_LAUNCH_WORKER_PROCESSES"]}}],"readiness":{"setup_ready":true,"capture_only_ready":true,"augment_context_ready":true,"public_mcp_temporal_status":"ready","public_mcp_temporal_ready":true,"public_mcp_publication_ready":false,"required_healthy":4,"required_total":4,"optional_healthy":5,"optional_total":6,"blocking_services":[],"degraded_optional_services":[]},"product_state_persistence":{"configured_backend":"postgres","installed_adapter":"postgres","durable":true,"restart_safe":true,"postgres_backed":true,"cutover_ready":true,"env_vars":["AM_PRODUCT_STATE_BACKEND","AM_PRODUCT_STATE_DATABASE_URL","DATABASE_URL"]},"notes":["OpenClaw memory routes are mounted on the shared Ladybug execution layer and fail closed when no runtime route or local Ladybug database is configured.","Public MCP publication remains gated on OAuth, tenant routing, and temporal-ready research/conversation retrieval.","Hosted account login, Google OAuth, dashboard, account API keys, waitlist, leads, billing, publication HTML, and brand assets are mounted in product_routes::hosted_surface_router.","Production product-state cutover remains blocked until the SQL adapters finish the remaining trait methods and startup selects Postgres in managed mode.","Rust v1 remains fail-closed until later migration waves pass the product contract gates."]}