Loading...
Loading...
Debug failed Render deployments by analyzing logs, metrics, and database state. Identifies errors (missing env vars, port binding, OOM, etc.) and suggests fixes. Use when deployments fail, services won't start, or users mention errors, logs, or debugging.
npx skill4agent add render-oss/skills render-debuglist_services()render --versionRENDER_API_KEYrender whoami -o jsonget_selected_workspace()render workspace current -o jsonNote: MCP tools require the Render MCP server. If unavailable, use the CLI for logs and deploy status; metrics and structured database queries require MCP.
list_services()https://dashboard.render.com/u/*/settings#api-keys~/.cursor/mcp.json<YOUR_API_KEY>{
"mcpServers": {
"render": {
"url": "https://mcp.render.com/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}list_services()https://dashboard.render.com/u/*/settings#api-keys<YOUR_API_KEY>claude mcp add --transport http render https://mcp.render.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"list_services()https://dashboard.render.com/u/*/settings#api-keysexport RENDER_API_KEY="<YOUR_API_KEY>"codex mcp add render --url https://mcp.render.com/mcp --bearer-token-env-var RENDER_API_KEYlist_services()Set my Render workspace to [WORKSPACE_NAME]list_services()get_service(serviceId: "<id>")list_logs(resource: ["<service-id>"], type: ["build"], limit: 200)list_logs(resource: ["<service-id>"], level: ["error"], limit: 100)list_logs(resource: ["<service-id>"], text: ["KeyError", "ECONNREFUSED"], limit: 50)list_logs(resource: ["<service-id>"], statusCode: ["500", "502", "503"], limit: 50)| Error | Log Pattern | Common Fix |
|---|---|---|
| MISSING_ENV_VAR | | Add to render.yaml or |
| PORT_BINDING | | Use |
| MISSING_DEPENDENCY | | Add to package.json/requirements.txt |
| DATABASE_CONNECTION | | Check DATABASE_URL, DB status |
| HEALTH_CHECK | | Add /health endpoint, check port binding |
| OUT_OF_MEMORY | | Optimize memory or upgrade plan |
| BUILD_FAILURE | | Fix build command or dependencies |
get_metrics(
resourceId: "<service-id>",
metricTypes: ["cpu_usage", "memory_usage", "memory_limit"]
)get_metrics(
resourceId: "<service-id>",
metricTypes: ["http_latency"],
httpLatencyQuantile: 0.95
)# Check database status
list_postgres_instances()
# Check connections
get_metrics(resourceId: "<postgres-id>", metricTypes: ["active_connections"])
# Query directly
query_render_postgres(
postgresId: "<postgres-id>",
sql: "SELECT state, count(*) FROM pg_stat_activity GROUP BY state"
)update_environment_variables(
serviceId: "<service-id>",
envVars: [{"key": "MISSING_VAR", "value": "value"}]
)# Check deploy status
list_deploys(serviceId: "<service-id>", limit: 1)
# Check for new errors
list_logs(resource: ["<service-id>"], level: ["error"], limit: 20)
# Check metrics
get_metrics(resourceId: "<service-id>", metricTypes: ["http_request_count"])| Scenario | Workflow |
|---|---|
| Deploy failed | |
| App crashing | |
| App slow | |
| DB connection | |
| Post-deploy check | |
# Service Discovery
list_services()
get_service(serviceId: "<id>")
list_postgres_instances()
# Logs
list_logs(resource: ["<id>"], level: ["error"], limit: 100)
list_logs(resource: ["<id>"], type: ["build"], limit: 200)
list_logs(resource: ["<id>"], text: ["search"], limit: 50)
# Metrics
get_metrics(resourceId: "<id>", metricTypes: ["cpu_usage", "memory_usage"])
get_metrics(resourceId: "<id>", metricTypes: ["http_latency"], httpLatencyQuantile: 0.95)
# Database
query_render_postgres(postgresId: "<id>", sql: "SELECT ...")
# Deployments
list_deploys(serviceId: "<id>", limit: 5)
# Environment Variables
update_environment_variables(serviceId: "<id>", envVars: [{key, value}])render services -o json
render logs -r <service-id> --level error -o json
render logs -r <service-id> --tail -o text
render deploys create <service-id> --wait