Skip to main content
Glama

Create service

render_create_service

Creates a new Render service (static site, web service, private service, background worker, or cron job) with the specified configuration and triggers the first deploy.

Instructions

Create service. Creates a new Render service in the specified workspace with the specified configuration. Calls POST /services on the Render Public API. Usage: Pick the serviceDetails branch whose title matches type: static_site→staticSiteDetailsPOST, web_service→webServiceDetailsPOST, private_service→privateServiceDetailsPOST, background_worker→backgroundWorkerDetailsPOST, cron_job→cronJobDetailsPOST. Source comes from either repo (+branch) for a build, or image for a prebuilt container — never both. Inside serviceDetails, envSpecificDetails follows runtime: use the dockerDetails branch (dockerfilePath, dockerContext, dockerCommand) when runtime is docker, and the nativeEnvironmentDetails branch (buildCommand, startCommand) for every language runtime. A private registry is referenced by registryCredentialId inside the top-level image, not inside serviceDetails — create the credential first with render_create_registry_credential. schedule is a standard five-field cron expression in UTC and is required for cron jobs. Creating a service starts a first deploy; follow with render_wait_for_deploy. Example — a cron job that builds from a Dockerfile and runs every day at 03:00 UTC: {"type":"cron_job","name":"nightly-report","ownerId":"tea-abc123","repo":"https://github.com/acme/reports","branch":"main","serviceDetails":{"runtime":"docker","schedule":"0 3 * * *","plan":"starter","region":"oregon","envSpecificDetails":{"dockerfilePath":"./Dockerfile","dockerContext":".","dockerCommand":"python report.py"}}} Example — the same cron job from a prebuilt image, with no repo to build: {"type":"cron_job","name":"nightly-report","ownerId":"tea-abc123","image":{"ownerId":"tea-abc123","imagePath":"docker.io/acme/reports:latest"},"serviceDetails":{"runtime":"image","schedule":"0 3 * * *","plan":"starter","region":"oregon","envSpecificDetails":{"dockerCommand":"python report.py"}}} Example — a Node web service built from a repo: {"type":"web_service","name":"api","ownerId":"tea-abc123","repo":"https://github.com/acme/api","branch":"main","serviceDetails":{"runtime":"node","plan":"starter","region":"oregon","envSpecificDetails":{"buildCommand":"npm ci","startCommand":"node server.js"}}}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesThe service's name. Must be unique within the workspace.
repoNoThe service's repository URL. Do not specify a branch in this string (use the `branch` parameter instead).
typeYes
imageNo
branchNoThe repo branch to pull, build, and deploy. If omitted, uses the repository's default branch.
envVarsNo
ownerIdYesThe ID of the workspace the service belongs to. Obtain your workspace's ID from its Settings page in the Render Dashboard.
rootDirNo
autoDeployNoyes
buildFilterNo
secretFilesNo
environmentIdNoThe ID of the environment the service belongs to, if any. Obtain an environment's ID from its Settings page in the Render Dashboard.
serviceDetailsNoSelected by `type`: `static_site` → staticSiteDetailsPOST, `web_service` → webServiceDetailsPOST, `private_service` → privateServiceDetailsPOST, `background_worker` → backgroundWorkerDetailsPOST, `cron_job` → cronJobDetailsPOST. 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.
Behavior4/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, and the description adds meaningful side-effect context by stating 'Creating a service starts a first deploy; follow with render_wait_for_deploy.' It also discloses the non-obvious placement of `registryCredentialId` and the cron schedule requirement, going beyond what the flags convey. It doesn't discuss auth, rate limits, or errors, but the annotation coverage lowers the bar.

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

Conciseness4/5

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

The description is long but each section adds unique value; the three examples concretely illustrate branch selection and source combinations. It could be improved with bullet points or shorter examples, but the density is justified by the complex conditional schema.

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 no output schema and an extremely complex conditional schema, the description covers the key decision branches (type→serviceDetails, runtime→envSpecificDetails), the mutual-exclusion rule, cron schedule format, registry credential placement, and post-creation follow-up. It omits error handling and return shape, but with no output schema that burden is lower and the description is sufficient for selecting and invoking the tool correctly.

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

Parameters4/5

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

With only 46% schema description coverage, the description compensates by explaining the conditional meaning of `serviceDetails`, `envSpecificDetails`, and `image` vs `repo`, plus the schedule format for cron jobs. The examples concretely map type/runtime branches. However, parameters like `rootDir`, `buildFilter`, and `secretFiles` remain undocumented in both the schema and description, so it doesn't fully cover the 13-parameter space.

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 opening sentence 'Creates a new Render service in the specified workspace with the specified configuration' names the verb (create), the resource (Render service), and scope (workspace). It also names the API endpoint `POST /services`, which clearly distinguishes this from sibling create tools like render_create_registry_credential or render_create_job.

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 gives explicit usage guidance: pick the `serviceDetails` branch matching `type`, use either `repo`+`branch` or `image` but 'never both', and follow with render_wait_for_deploy. It even names the prerequisite sibling tool render_create_registry_credential for private registry access, making when-to-use and next steps clear.

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