Skip to main content
Glama

Update service

render_update_service

Update an existing Render service's configuration by sending only the fields you want to change. Modify settings like branch, build command, or cron schedule without triggering a deploy.

Instructions

Update service. Update the service with the provided ID. Calls PATCH /services/{serviceId} on the Render Public API. Usage: serviceDetails branches are the PATCH variants of the same five service types, and the branch must still match the service's existing type — a service cannot change type. Nothing in the payload names that type, so the server cannot check the branch for you; read the service first if you are unsure. Send only the fields you are changing; omitted fields keep their current values. Changing a cron job's schedule or a service's build settings does not itself deploy — call render_create_deploy afterwards when the change needs a rebuild. Example — move a cron job's schedule to 04:30 UTC: {"serviceId":"srv-abc123","serviceDetails":{"schedule":"30 4 * * *"}}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNo
repoNo
imageNo
branchNo
rootDirNo
serviceIdYesThe ID of the service
autoDeployNoyes
buildFilterNo
serviceDetailsNo

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changedv1.4.0
    • addedInput schema / properties / serviceDetails / anyOf
      Added value: +[
      +  {
      +    "properties": {
      +      "buildCommand": {
      +        "type": "string"
      +      },
      +      "ipAllowList": {
      +        "items": {
      +          "properties": {
      +            "cidrBlock": {
      +              "type": "string"
      +            },
      +            "description": {
      +              "description": "User-provided description of the CIDR block",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "cidrBlock",
      +            "description"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "previews": {
      +        "properties": {
      +          "generation": {
      +            "default": "off",
      +            "description": "Defaults to \"off\"",
      +            "enum": [
      +              "off",
      +              "manual",
      +              "automatic"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "publishPath": {
      +        "type": "string"
      +      },
      +      "pullRequestPreviewsEnabled": {
      +        "default": "no",
      +        "deprecated": true,
      +        "description": "This field has been deprecated. previews.generation should be used in its place.",
      +        "enum": [
      +          "yes",
      +          "no"
      +        ],
      +        "type": "string"
      +      },
      +      "renderSubdomainPolicy": {
      +        "description": "Controls whether render.com subdomains are available for the service",
      +        "enum": [
      +          "enabled",
      +          "disabled"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "staticSiteDetailsPATCH",
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "docker"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "dockerCommand": {
      +                  "type": "string"
      +                },
      +                "dockerContext": {
      +                  "type": "string"
      +                },
      +                "dockerfilePath": {
      +                  "type": "string"
      +                },
      +                "registryCredentialId": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "dockerDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      },
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "elixir",
      +                "go",
      +                "node",
      +                "python",
      +                "ruby",
      +                "rust"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "buildCommand": {
      +                  "type": "string"
      +                },
      +                "startCommand": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "nativeEnvironmentDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "cache": {
      +        "properties": {
      +          "profile": {
      +            "default": "no-cache",
      +            "enum": [
      +              "no-cache",
      +              "origin-controlled",
      +              "origin-controlled-all"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "profile"
      +        ],
      +        "type": "object"
      +      },
      +      "envSpecificDetails": {
      +        "description": "Selected by `runtime`: `docker` → dockerDetailsPATCH, `elixir`/`go`/`node`/`python`/`ruby`/`rust` → nativeEnvironmentDetailsPATCH. The matching schema is applied by this object's `allOf` rules, where each branch's fields are listed; sending a field from another branch is rejected.",
      +        "type": "object"
      +      },
      +      "healthCheckPath": {
      +        "type": "string"
      +      },
      +      "ipAllowList": {
      +        "items": {
      +          "properties": {
      +            "cidrBlock": {
      +              "type": "string"
      +            },
      +            "description": {
      +              "description": "User-provided description of the CIDR block",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "cidrBlock",
      +            "description"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "maintenanceMode": {
      +        "properties": {
      +          "enabled": {
      +            "type": "boolean"
      +          },
      +          "uri": {
      +            "description": "The page to be served when [maintenance mode](https://render.com/docs/maintenance-mode) is enabled. When empty, the default maintenance mode page is served.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "enabled",
      +          "uri"
      +        ],
      +        "type": "object"
      +      },
      +      "maxShutdownDelaySeconds": {
      +        "default": 30,
      +        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      +        "maximum": 300,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "plan": {
      +        "description": "The instance type to use. Legacy variants (`*_legacy`) identify grandfathered plans no longer offered for new services. Note that base services on any paid instance type can't create preview instances with the `free` instance type.",
      +        "enum": [
      +          "starter",
      +          "starter_plus",
      +          "standard",
      +          "standard_plus",
      +          "pro",
      +          "pro_plus",
      +          "pro_max",
      +          "pro_ultra",
      +          "free",
      +          "custom",
      +          "starter_legacy",
      +          "standard_legacy",
      +          "standard_plus_legacy",
      +          "pro_legacy",
      +          "pro_plus_legacy"
      +        ],
      +        "example": "starter",
      +        "type": "string"
      +      },
      +      "preDeployCommand": {
      +        "type": "string"
      +      },
      +      "previews": {
      +        "properties": {
      +          "generation": {
      +            "default": "off",
      +            "description": "Defaults to \"off\"",
      +            "enum": [
      +              "off",
      +              "manual",
      +              "automatic"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "pullRequestPreviewsEnabled": {
      +        "default": "no",
      +        "deprecated": true,
      +        "description": "This field has been deprecated. previews.generation should be used in its place.",
      +        "enum": [
      +          "yes",
      +          "no"
      +        ],
      +        "type": "string"
      +      },
      +      "renderSubdomainPolicy": {
      +        "description": "Controls whether render.com subdomains are available for the service",
      +        "enum": [
      +          "enabled",
      +          "disabled"
      +        ],
      +        "type": "string"
      +      },
      +      "runtime": {
      +        "description": "Runtime",
      +        "enum": [
      +          "docker",
      +          "elixir",
      +          "go",
      +          "node",
      +          "python",
      +          "ruby",
      +          "rust",
      +          "image"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "webServiceDetailsPATCH",
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "docker"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "dockerCommand": {
      +                  "type": "string"
      +                },
      +                "dockerContext": {
      +                  "type": "string"
      +                },
      +                "dockerfilePath": {
      +                  "type": "string"
      +                },
      +                "registryCredentialId": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "dockerDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      },
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "elixir",
      +                "go",
      +                "node",
      +                "python",
      +                "ruby",
      +                "rust"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "buildCommand": {
      +                  "type": "string"
      +                },
      +                "startCommand": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "nativeEnvironmentDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "envSpecificDetails": {
      +        "description": "Selected by `runtime`: `docker` → dockerDetailsPATCH, `elixir`/`go`/`node`/`python`/`ruby`/`rust` → nativeEnvironmentDetailsPATCH. The matching schema is applied by this object's `allOf` rules, where each branch's fields are listed; sending a field from another branch is rejected.",
      +        "type": "object"
      +      },
      +      "maxShutdownDelaySeconds": {
      +        "default": 30,
      +        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      +        "maximum": 300,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "plan": {
      +        "default": "starter",
      +        "description": "Defaults to `starter` when creating a new database.",
      +        "enum": [
      +          "starter",
      +          "standard",
      +          "pro",
      +          "pro_plus",
      +          "pro_max",
      +          "pro_ultra"
      +        ],
      +        "type": "string"
      +      },
      +      "preDeployCommand": {
      +        "type": "string"
      +      },
      +      "previews": {
      +        "properties": {
      +          "generation": {
      +            "default": "off",
      +            "description": "Defaults to \"off\"",
      +            "enum": [
      +              "off",
      +              "manual",
      +              "automatic"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "pullRequestPreviewsEnabled": {
      +        "default": "no",
      +        "deprecated": true,
      +        "description": "This field has been deprecated. previews.generation should be used in its place.",
      +        "enum": [
      +          "yes",
      +          "no"
      +        ],
      +        "type": "string"
      +      },
      +      "runtime": {
      +        "description": "Runtime",
      +        "enum": [
      +          "docker",
      +          "elixir",
      +          "go",
      +          "node",
      +          "python",
      +          "ruby",
      +          "rust",
      +          "image"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "privateServiceDetailsPATCH",
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "docker"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "dockerCommand": {
      +                  "type": "string"
      +                },
      +                "dockerContext": {
      +                  "type": "string"
      +                },
      +                "dockerfilePath": {
      +                  "type": "string"
      +                },
      +                "registryCredentialId": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "dockerDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      },
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "elixir",
      +                "go",
      +                "node",
      +                "python",
      +                "ruby",
      +                "rust"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "buildCommand": {
      +                  "type": "string"
      +                },
      +                "startCommand": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "nativeEnvironmentDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "envSpecificDetails": {
      +        "description": "Selected by `runtime`: `docker` → dockerDetailsPATCH, `elixir`/`go`/`node`/`python`/`ruby`/`rust` → nativeEnvironmentDetailsPATCH. The matching schema is applied by this object's `allOf` rules, where each branch's fields are listed; sending a field from another branch is rejected.",
      +        "type": "object"
      +      },
      +      "maxShutdownDelaySeconds": {
      +        "default": 30,
      +        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      +        "maximum": 300,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "plan": {
      +        "default": "starter",
      +        "description": "Defaults to `starter` when creating a new database.",
      +        "enum": [
      +          "starter",
      +          "standard",
      +          "pro",
      +          "pro_plus",
      +          "pro_max",
      +          "pro_ultra"
      +        ],
      +        "type": "string"
      +      },
      +      "preDeployCommand": {
      +        "type": "string"
      +      },
      +      "previews": {
      +        "properties": {
      +          "generation": {
      +            "default": "off",
      +            "description": "Defaults to \"off\"",
      +            "enum": [
      +              "off",
      +              "manual",
      +              "automatic"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "pullRequestPreviewsEnabled": {
      +        "default": "no",
      +        "deprecated": true,
      +        "description": "This field has been deprecated. previews.generation should be used in its place.",
      +        "enum": [
      +          "yes",
      +          "no"
      +        ],
      +        "type": "string"
      +      },
      +      "runtime": {
      +        "description": "Runtime",
      +        "enum": [
      +          "docker",
      +          "elixir",
      +          "go",
      +          "node",
      +          "python",
      +          "ruby",
      +          "rust",
      +          "image"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "backgroundWorkerDetailsPATCH",
      +    "type": "object"
      +  },
      +  {
      +    "allOf": [
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "docker"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "dockerCommand": {
      +                  "type": "string"
      +                },
      +                "dockerContext": {
      +                  "type": "string"
      +                },
      +                "dockerfilePath": {
      +                  "type": "string"
      +                },
      +                "registryCredentialId": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "dockerDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      },
      +      {
      +        "if": {
      +          "properties": {
      +            "runtime": {
      +              "enum": [
      +                "elixir",
      +                "go",
      +                "node",
      +                "python",
      +                "ruby",
      +                "rust"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "runtime"
      +          ]
      +        },
      +        "then": {
      +          "properties": {
      +            "envSpecificDetails": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "buildCommand": {
      +                  "type": "string"
      +                },
      +                "startCommand": {
      +                  "type": "string"
      +                }
      +              },
      +              "title": "nativeEnvironmentDetailsPATCH",
      +              "type": "object"
      +            }
      +          }
      +        }
      +      }
      +    ],
      +    "properties": {
      +      "envSpecificDetails": {
      +        "description": "Selected by `runtime`: `docker` → dockerDetailsPATCH, `elixir`/`go`/`node`/`python`/`ruby`/`rust` → nativeEnvironmentDetailsPATCH. The matching schema is applied by this object's `allOf` rules, where each branch's fields are listed; sending a field from another branch is rejected.",
      +        "type": "object"
      +      },
      +      "plan": {
      +        "default": "starter",
      +        "description": "Defaults to `starter` when creating a new database.",
      +        "enum": [
      +          "starter",
      +          "standard",
      +          "pro",
      +          "pro_plus",
      +          "pro_max",
      +          "pro_ultra"
      +        ],
      +        "type": "string"
      +      },
      +      "runtime": {
      +        "description": "Runtime",
      +        "enum": [
      +          "docker",
      +          "elixir",
      +          "go",
      +          "node",
      +          "python",
      +          "ruby",
      +          "rust",
      +          "image"
      +        ],
      +        "type": "string"
      +      },
      +      "schedule": {
      +        "type": "string"
      +      }
      +    },
      +    "title": "cronJobDetailsPATCH",
      +    "type": "object"
      +  }
      +]
    • removedInput schema / properties / serviceDetails / oneOf
      Removed value: -[
      -  {
      -    "properties": {
      -      "buildCommand": {
      -        "type": "string"
      -      },
      -      "ipAllowList": {
      -        "items": {
      -          "properties": {
      -            "cidrBlock": {
      -              "type": "string"
      -            },
      -            "description": {
      -              "description": "User-provided description of the CIDR block",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "cidrBlock",
      -            "description"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "previews": {
      -        "properties": {
      -          "generation": {
      -            "default": "off",
      -            "description": "Defaults to \"off\"",
      -            "enum": [
      -              "off",
      -              "manual",
      -              "automatic"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "publishPath": {
      -        "type": "string"
      -      },
      -      "pullRequestPreviewsEnabled": {
      -        "default": "no",
      -        "deprecated": true,
      -        "description": "This field has been deprecated. previews.generation should be used in its place.",
      -        "enum": [
      -          "yes",
      -          "no"
      -        ],
      -        "type": "string"
      -      },
      -      "renderSubdomainPolicy": {
      -        "description": "Controls whether render.com subdomains are available for the service",
      -        "enum": [
      -          "enabled",
      -          "disabled"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "cache": {
      -        "properties": {
      -          "profile": {
      -            "default": "no-cache",
      -            "enum": [
      -              "no-cache",
      -              "origin-controlled",
      -              "origin-controlled-all"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "profile"
      -        ],
      -        "type": "object"
      -      },
      -      "envSpecificDetails": {
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "dockerCommand": {
      -                "type": "string"
      -              },
      -              "dockerContext": {
      -                "type": "string"
      -              },
      -              "dockerfilePath": {
      -                "type": "string"
      -              },
      -              "registryCredentialId": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "properties": {
      -              "buildCommand": {
      -                "type": "string"
      -              },
      -              "startCommand": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "healthCheckPath": {
      -        "type": "string"
      -      },
      -      "ipAllowList": {
      -        "items": {
      -          "properties": {
      -            "cidrBlock": {
      -              "type": "string"
      -            },
      -            "description": {
      -              "description": "User-provided description of the CIDR block",
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "cidrBlock",
      -            "description"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "maintenanceMode": {
      -        "properties": {
      -          "enabled": {
      -            "type": "boolean"
      -          },
      -          "uri": {
      -            "description": "The page to be served when [maintenance mode](https://render.com/docs/maintenance-mode) is enabled. When empty, the default maintenance mode page is served.",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "enabled",
      -          "uri"
      -        ],
      -        "type": "object"
      -      },
      -      "maxShutdownDelaySeconds": {
      -        "default": 30,
      -        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      -        "maximum": 300,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "plan": {
      -        "description": "The instance type to use. Legacy variants (`*_legacy`) identify grandfathered plans no longer offered for new services. Note that base services on any paid instance type can't create preview instances with the `free` instance type.",
      -        "enum": [
      -          "starter",
      -          "starter_plus",
      -          "standard",
      -          "standard_plus",
      -          "pro",
      -          "pro_plus",
      -          "pro_max",
      -          "pro_ultra",
      -          "free",
      -          "custom",
      -          "starter_legacy",
      -          "standard_legacy",
      -          "standard_plus_legacy",
      -          "pro_legacy",
      -          "pro_plus_legacy"
      -        ],
      -        "example": "starter",
      -        "type": "string"
      -      },
      -      "preDeployCommand": {
      -        "type": "string"
      -      },
      -      "previews": {
      -        "properties": {
      -          "generation": {
      -            "default": "off",
      -            "description": "Defaults to \"off\"",
      -            "enum": [
      -              "off",
      -              "manual",
      -              "automatic"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "pullRequestPreviewsEnabled": {
      -        "default": "no",
      -        "deprecated": true,
      -        "description": "This field has been deprecated. previews.generation should be used in its place.",
      -        "enum": [
      -          "yes",
      -          "no"
      -        ],
      -        "type": "string"
      -      },
      -      "renderSubdomainPolicy": {
      -        "description": "Controls whether render.com subdomains are available for the service",
      -        "enum": [
      -          "enabled",
      -          "disabled"
      -        ],
      -        "type": "string"
      -      },
      -      "runtime": {
      -        "description": "Runtime",
      -        "enum": [
      -          "docker",
      -          "elixir",
      -          "go",
      -          "node",
      -          "python",
      -          "ruby",
      -          "rust",
      -          "image"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "envSpecificDetails": {
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "dockerCommand": {
      -                "type": "string"
      -              },
      -              "dockerContext": {
      -                "type": "string"
      -              },
      -              "dockerfilePath": {
      -                "type": "string"
      -              },
      -              "registryCredentialId": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "properties": {
      -              "buildCommand": {
      -                "type": "string"
      -              },
      -              "startCommand": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "maxShutdownDelaySeconds": {
      -        "default": 30,
      -        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      -        "maximum": 300,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "plan": {
      -        "default": "starter",
      -        "description": "Defaults to `starter` when creating a new database.",
      -        "enum": [
      -          "starter",
      -          "standard",
      -          "pro",
      -          "pro_plus",
      -          "pro_max",
      -          "pro_ultra"
      -        ],
      -        "type": "string"
      -      },
      -      "preDeployCommand": {
      -        "type": "string"
      -      },
      -      "previews": {
      -        "properties": {
      -          "generation": {
      -            "default": "off",
      -            "description": "Defaults to \"off\"",
      -            "enum": [
      -              "off",
      -              "manual",
      -              "automatic"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "pullRequestPreviewsEnabled": {
      -        "default": "no",
      -        "deprecated": true,
      -        "description": "This field has been deprecated. previews.generation should be used in its place.",
      -        "enum": [
      -          "yes",
      -          "no"
      -        ],
      -        "type": "string"
      -      },
      -      "runtime": {
      -        "description": "Runtime",
      -        "enum": [
      -          "docker",
      -          "elixir",
      -          "go",
      -          "node",
      -          "python",
      -          "ruby",
      -          "rust",
      -          "image"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "envSpecificDetails": {
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "dockerCommand": {
      -                "type": "string"
      -              },
      -              "dockerContext": {
      -                "type": "string"
      -              },
      -              "dockerfilePath": {
      -                "type": "string"
      -              },
      -              "registryCredentialId": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "properties": {
      -              "buildCommand": {
      -                "type": "string"
      -              },
      -              "startCommand": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "maxShutdownDelaySeconds": {
      -        "default": 30,
      -        "description": "The maximum amount of time (in seconds) that Render waits for your application process to exit gracefully after sending it a SIGTERM signal.",
      -        "maximum": 300,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "plan": {
      -        "default": "starter",
      -        "description": "Defaults to `starter` when creating a new database.",
      -        "enum": [
      -          "starter",
      -          "standard",
      -          "pro",
      -          "pro_plus",
      -          "pro_max",
      -          "pro_ultra"
      -        ],
      -        "type": "string"
      -      },
      -      "preDeployCommand": {
      -        "type": "string"
      -      },
      -      "previews": {
      -        "properties": {
      -          "generation": {
      -            "default": "off",
      -            "description": "Defaults to \"off\"",
      -            "enum": [
      -              "off",
      -              "manual",
      -              "automatic"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "pullRequestPreviewsEnabled": {
      -        "default": "no",
      -        "deprecated": true,
      -        "description": "This field has been deprecated. previews.generation should be used in its place.",
      -        "enum": [
      -          "yes",
      -          "no"
      -        ],
      -        "type": "string"
      -      },
      -      "runtime": {
      -        "description": "Runtime",
      -        "enum": [
      -          "docker",
      -          "elixir",
      -          "go",
      -          "node",
      -          "python",
      -          "ruby",
      -          "rust",
      -          "image"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "envSpecificDetails": {
      -        "oneOf": [
      -          {
      -            "properties": {
      -              "dockerCommand": {
      -                "type": "string"
      -              },
      -              "dockerContext": {
      -                "type": "string"
      -              },
      -              "dockerfilePath": {
      -                "type": "string"
      -              },
      -              "registryCredentialId": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "properties": {
      -              "buildCommand": {
      -                "type": "string"
      -              },
      -              "startCommand": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        ]
      -      },
      -      "plan": {
      -        "default": "starter",
      -        "description": "Defaults to `starter` when creating a new database.",
      -        "enum": [
      -          "starter",
      -          "standard",
      -          "pro",
      -          "pro_plus",
      -          "pro_max",
      -          "pro_ultra"
      -        ],
      -        "type": "string"
      -      },
      -      "runtime": {
      -        "description": "Runtime",
      -        "enum": [
      -          "docker",
      -          "elixir",
      -          "go",
      -          "node",
      -          "python",
      -          "ruby",
      -          "rust",
      -          "image"
      -        ],
      -        "type": "string"
      -      },
      -      "schedule": {
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  }
      -]
  2. First observedv1.0.2

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It discloses important behavioral traits beyond annotations: PATCH semantics (omitted fields keep current values), inability to change service type, and that schedule/build changes do not auto-deploy. This enriches the sparse annotation set with critical operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-organized paragraph that flows from action to API, then to usage rules, deploy caveat, and example. Every sentence adds value and there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex nested schema and absence of an output schema, the description covers the operation, key constraints, and follow-up actions thoroughly. It gives an agent enough to invoke the tool correctly without needing additional documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at only 11%, the description compensates by explaining the `serviceDetails` branch structure, the type-matching constraint, and providing a concrete JSON example. It clarifies the most complex parameter in a way the raw schema cannot.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update service' and explicitly identifies the API call `PATCH /services/{serviceId}`, specifying the exact resource and operation. It distinguishes itself from sibling tools like render_restart_service or render_scale_service by describing the general update endpoint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage instructions: match the `serviceDetails` branch to the existing service type, read the service first if unsure, send only changed fields, and call `render_create_deploy` when a rebuild is needed. This gives clear when-to-use and when-not-to-use guidance, including a named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LuSrodri/render-useful-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server