Skip to main content
Glama
This connector has been deprecated

older mcp we are replacing it with another one.

Update an application version

edgegap_update_app_version
Idempotent

Change settings on an existing version instead of creating a new one: point it at a new image tag, turn it on or off, change max_duration, set the registry login (the API cannot add registry_profile "Edgegap" to an existing version: create a new version for that), turn on image caching (force_cache: Edgegap pre-loads the image so deployments start faster), set the restart policy, or set the shutdown grace period. Only the fields you pass change. Deployments already running keep their old settings; new deployments get the new ones. Same refusals as edgegap_create_app_version: "latest" or empty tags, a docker_image holding a host or tag, and the API token in the registry login or env vars. ports and env REPLACE the version's whole list (per the API): read the current ones with edgegap_get_app_version and pass every port or variable to keep; secret env values are not readable, so get them from the developer. Refused, with nothing sent, for a registry login or env value equal to the API's "This value is set and encrypted" placeholder; leave the registry login out to keep it. cpu_units and memory_mb change together (both or neither); to try other resources for one deployment only, override them in edgegap_deploy instead.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "application": "<application>",
      "version": "<version>"
    },
    "name": "edgegap_update_app_version"
  }
}

Input Schema

NameRequiredDescriptionDefault
envNoREPLACES every env var on the version; [] removes them all. Values are never echoed back.
portsNoREPLACES every port on the version. Include the ports to keep, not only new ones.
dry_runNoShow the exact request (method, host, path, body) with secrets masked, and send nothing. Local checks still run. Use it to confirm a billable or destructive call before making it.
versionYesVersion name to change.
cpu_unitsNoNew vCPU units for later deployments, with memory_mb. 1024 = 1 vCPU.
is_activeNofalse blocks new deployments of this version.
memory_mbNoNew memory in MB for later deployments, with cpu_units. At most 2x cpu_units.
docker_tagNoNew image tag: a build ID, commit SHA or timestamp.
applicationYesApplication name.
force_cacheNoPre-load the image on Edgegap so deployments start faster.
docker_imageNoImage path, e.g. "my-org-abc123/my-game-server".
verify_imageNoCheck Edgegap can pull the image when saving.
registry_tokenNoRegistry password or token. Never echoed back.
restart_policyNoWhat Edgegap does when the server process exits. "never" for match servers that stop themselves (an exit or crash ends the deployment instead of restarting a half-played match); "on_failure" restarts only after a crash (persistent servers); "always" (the API default) restarts after any exit.
endpoint_storageNoEndpoint Storage name (edgegap_list_endpoint_storage) to export container logs to when deployments end.
docker_repositoryNoRegistry host, e.g. "registry.edgegap.com".
registry_usernameNo
max_duration_minutesNoAuto-stop after this many minutes. Capped by EDGEGAP_MAX_DURATION_MINUTES.
termination_grace_period_secondsNoSeconds between SIGTERM and SIGKILL when a deployment stops.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / restart_policy
      Added value: +{
      +  "description": "What Edgegap does when the server process exits. \"never\" for match servers that stop themselves (an exit or crash ends the deployment instead of restarting a half-played match); \"on_failure\" restarts only after a crash (persistent servers); \"always\" (the API default) restarts after any exit.",
      +  "enum": [
      +    "never",
      +    "on_failure",
      +    "always"
      +  ],
      +  "type": "string"
      +}
  2. Changed3 schema fields changed
    • addedInput schema / properties / cpu_units
      Added value: +{
      +  "description": "New vCPU units for later deployments, with memory_mb. 1024 = 1 vCPU.",
      +  "maximum": 9007199254740991,
      +  "minimum": 256,
      +  "type": "integer"
      +}
    • addedInput schema / properties / endpoint_storage
      Added value: +{
      +  "description": "Endpoint Storage name (edgegap_list_endpoint_storage) to export container logs to when deployments end.",
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / memory_mb
      Added value: +{
      +  "description": "New memory in MB for later deployments, with cpu_units. At most 2x cpu_units.",
      +  "maximum": 9007199254740991,
      +  "minimum": 256,
      +  "type": "integer"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / env
      Added value: +{
      +  "description": "REPLACES every env var on the version; [] removes them all. Values are never echoed back.",
      +  "items": {
      +    "properties": {
      +      "key": {
      +        "type": "string"
      +      },
      +      "value": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "key",
      +      "value"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / ports
      Added value: +{
      +  "description": "REPLACES every port on the version. Include the ports to keep, not only new ones.",
      +  "items": {
      +    "properties": {
      +      "name": {
      +        "description": "Label, e.g. \"gameport\".",
      +        "type": "string"
      +      },
      +      "port": {
      +        "description": "Port the server listens on.",
      +        "maximum": 59999,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "protocol": {
      +        "description": "One of UDP, TCP, TCP/UDP, HTTP, HTTPS, WS, WSS. Most game servers use UDP.",
      +        "type": "string"
      +      },
      +      "tls_upgrade": {
      +        "description": "wss:// / https:// for browser clients. WS and HTTP ports only.",
      +        "type": "boolean"
      +      },
      +      "to_check": {
      +        "description": "Readiness check on this port. Default true.",
      +        "type": "boolean"
      +      }
      +    },
      +    "required": [
      +      "port",
      +      "protocol"
      +    ],
      +    "type": "object"
      +  },
      +  "minItems": 1,
      +  "type": "array"
      +}
  4. Added

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is partly covered; the description adds real value beyond that with partial-update semantics ("Only the fields you pass change"), the fact that running deployments keep old settings, the refusal list, and the encrypted-placeholder rejection. The notable gap is that ports/env "REPLACE the version's whole list" is a data-losing behavior that sits uneasily with destructiveHint=false, and the description does not reconcile that or state that nothing is sent on refusal beyond the placeholder case.

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?

Purpose is front-loaded and nearly every clause carries operational information, but it is one dense paragraph of roughly 200 words with stacked parentheticals, which makes the replacement and coupling rules hard to scan. Bullet or sentence separation for the ports/env and cpu/memory rules would improve it without adding length.

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?

For a 19-parameter mutation tool with no output schema, the description covers everything an agent needs to call it safely: partial-update behavior, list-replacement hazards, the read-before-write sibling, parameter coupling, refusal conditions, and the effect on already-running deployments. The remaining schema-documented fields are self-explanatory at 95% coverage.

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?

Schema coverage is 95%, so the baseline is 3; the description earns above that by documenting cross-parameter rules the schema cannot express, notably that cpu_units and memory_mb must change together, that omitting the registry login preserves it, and that ports/env must be fully re-sent. It does not add meaning for the remaining parameters (verify_image, endpoint_storage, dry_run details) beyond what the schema already says.

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?

"Change settings on an existing version instead of creating a new one" gives a specific verb and resource and immediately contrasts the tool with edgegap_create_app_version. The follow-on list of mutable fields (image tag, is_active, max_duration, registry login, force_cache, restart policy, grace period) lets an agent confirm scope without opening the schema.

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?

Explicitly routes the agent away from creating a new version and names the alternative when that is required (registry_profile "Edgegap" cannot be added, so create a new version). It also directs the agent to edgegap_get_app_version to read current ports/env before a replacing update, and to edgegap_deploy for one-off resource overrides.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.