Skip to main content
Glama

Edgegap MCP Server

Connect AI coding agents to Edgegap through our MCP server. Your agent can take a headless server build all the way to players connecting: write or check the Dockerfile, push the image to your private Edgegap registry, deploy an authoritative dedicated server close to players, and read logs when something breaks.

Install in Cursor Install in VS Code

👉 Supported Features

TIP

Using Unity, Unreal Engine, or Godot? Our Unity, Unreal Engine, and Godot guides and plugins remain the fastest path for those engines. The MCP server works alongside them, and on its own for any engine.

Use our MCP server when:

  • Containerizing your game server - your agent writes a Dockerfile for your build (or checks the one you have) against Edgegap's requirements, then pushes the image to your private Edgegap container registry.

  • Deploying a dedicated server - create an application and version, deploy close to your players, and get the connection address.

  • Setting up matchmaking - generate a matchmaker configuration that points at your deployed version, ready to upload in the dashboard.

  • Running a host-client game - create a relay session if your game is built with one player as host. See Dedicated Servers or Relays? first.

  • Building a CI/CD pipeline - test your deployments and teardown from a build system.

  • Troubleshooting a game server issue - inspect app versions and deployment status, read container logs, or reproduce a failed deployment.

WARNING

Out of scope / not supported by MCP: creating or running a matchmaker (the MCP generates the configuration, you upload it in the dashboard); server browser; lobbies; managed clusters; private fleets; or billing.

NOTE

If you need help,please reach out to us over Discord. For live games support see our ticketing system.

Related MCP server: BasicDeploy MCP Server

⚖️ Dedicated Servers or Relays?

Edgegap can host your multiplayer game in two ways. We recommend dedicated servers, and so does our MCP server: your agent will default to a dedicated server and only use a relay when you've chosen a host-client setup.

Dedicated server (recommended)

Relay

What Edgegap runs

Your headless server build, close to players

A traffic forwarder only, no game code

Who runs the game

The server

One player's game (the host)

Cheating

Much harder, the server has authority

The host can change anything

Fairness

Every player connects directly to the server

The host has no latency, everyone else goes through two hops

When the host leaves

The match continues

The match ends, unless your game supports host migration

Performance limited by

The server's allocated CPU and memory

The host's PC and home internet upload

You need

A server build in a container image

Netcode built as a listen server (host-client)

NOTE

No server image yet? That's not a reason to choose relays. Your agent can write the Dockerfile for your build with edgegap_generate_dockerfile. Learn more about relays in Distributed Relay.

🚀 Installation

MCP server installation is very simple:

  1. Install the MCP server for Popular Agents or with Custom Integration.

  2. Generate and attach an API token for your agent to use with our MCP server.

Generate (and view) your secret tokens for Edgegap API in Dashboard - User Settings / Tokens.

Add your secret token with each API request as an HTTP header (include the word token):

Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62

CAUTION

Do not integrate Edgegap API endpoints in game client, as your API token provides unlimited access to your account. See Integration for secure client-facing API endpoints and functions.

TIP

In case your secret tokens are compromised or leaked, delete and re-create them from dashboard.

The token is organization-wide and cannot be scoped to one application. Read DESIGN.md before giving it to an unattended agent.

Install Edgegap MCP server in your preferred agentic IDE with the Cursor or VS Code buttons at the top of this page, then add your token to the Authorization header.

Claude Code

claude mcp add --transport http edgegap https://mcp.edgegap.dev/mcp \
  -H "Authorization: token xxxxxxxx-e458-4592-b607-c2c28afd8b62" --scope user

ChatGPT Codex

codex mcp add edgegap --url https://mcp.edgegap.dev/mcp

claude.ai

Add https://mcp.edgegap.dev/mcp as a custom connector and supply the same token.

mcp.json

Most agentic IDEs also support integration by pasting JSON configuration:

{
    "mcpServers": {
        "Edgegap": {
            "type": "http",
            "url": "https://mcp.edgegap.dev/mcp",
            "headers": {
                "Authorization": "token xxxxxxxx-e458-4592-b607-c2c28afd8b62"
            }
        }
    }
}

Custom Integration

Install remote Edgegap MCP server in your agent's virtualized environment (never in your project!):

Node, using the mcp-remote npx package

{
  "command": "npx",
  "args": ["-y", "mcp-remote", "https://mcp.edgegap.dev/mcp", "--transport", "http-only"]
}

Python, using the mcp-proxy uvx package

{
  "command": "uvx",
  "args": ["mcp-proxy", "--transport", "streamablehttp", "https://mcp.edgegap.dev/mcp"]
}

Local Server

To keep your API token on your own machine, run the server locally instead. Leave the token out and your agent asks you for it on first use, holding it in memory only for that session:

{
  "mcpServers": {
    "Edgegap": {
      "command": "npx",
      "args": ["-y", "@edgegap/mcp"],
      "env": { "EDGEGAP_API_TOKEN": "xxxxxxxx-e458-4592-b607-c2c28afd8b62" }
    }
  }
}

Needs Node 18+. Pin a version in production (@edgegap/mcp@0.3.0) rather than floating on latest. Registered in the official MCP registry as dev.edgegap/mcp.

The local server can also limit what an agent can do. These variables have no effect on the hosted endpoint at mcp.edgegap.dev:

Variable

Default

Purpose

EDGEGAP_API_TOKEN

(prompted)

API token. Optional: omit it and you're asked at first use. The token prefix is added for you. Never pass it as a command-line argument.

EDGEGAP_READ_ONLY

0

Set to 1 and the eight mutating tools are never registered, so the agent cannot be talked into calling them.

EDGEGAP_APP_ALLOWLIST

(empty)

Comma-separated application names. Limits what the agent can create and deploy into, not what it can touch once running. See DESIGN.md.

EDGEGAP_MAX_DURATION_MINUTES

60

Ceiling on max_duration the agent may set on a version.

EDGEGAP_TIMEOUT_MS

30000

Per-request HTTP timeout.

🧰 Tools

Your agent picks the right tool from your request. You don't need to name them, but knowing what's available helps you ask. Tools marked ● change something in your account and are hidden when EDGEGAP_READ_ONLY=1.

Before Your First Deployment

Tool

What it does

edgegap_generate_dockerfile

Writes a Dockerfile for your server build: your build folder, server binary or start script, ports, and launch arguments, with the right headless flags (Unity -batchmode -nographics, Godot --headless), a non-root user for Unreal, and matching ports. Lists anything it had to assume so your agent can confirm it. Works for Unity, Unreal Engine, Godot, and any other engine.

edgegap_validate_server_config

Checks an existing Dockerfile, ports, resources, and image tag before you build. Catches ARM or Windows images (Edgegap runs linux/amd64), Unreal servers running as root, missing Unity -batchmode -nographics, servers bound to localhost, ports that don't match your netcode transport, and the latest tag.

edgegap_get_registry_credentials ●

Returns push credentials for your private Edgegap container registry, with the exact docker login, build, and push commands. No Docker Hub account needed.

edgegap_list_registry_tags

Confirms your image push landed before you register it.

Tool

What it does

edgegap_list_apps

Lists your applications.

edgegap_create_app ●

Creates an application.

edgegap_list_app_versions

Lists versions with their image, resources, and ports.

edgegap_create_app_version ●

Registers a container image as a deployable version.

edgegap_deploy ●

Deploys an authoritative dedicated server close to your players.

edgegap_wait_for_deployment

Waits until the server is ready and returns the connection address.

edgegap_get_deployment

Reads a deployment's status.

edgegap_list_deployments

Lists running deployments, filtered by application, version, status, tags and more, and sorted by age. Finds servers left running. See Filter Deployments.

edgegap_get_deployment_logs

Reads container logs and crash details.

edgegap_stop_deployment ●

Stops one deployment.

Matchmaking

Tool

What it does

edgegap_build_matchmaker_config

Generates a matchmaker configuration (teams, team size, optional latency rules and expansions) and checks that the version it deploys exists. Upload the result in the dashboard to create your matchmaker, which starts a dedicated server for each match.

Learn more about the configuration in Matchmaking.

Relays (Host-Client Games Only)

A relay is not a game server: it forwards traffic while one player's game hosts the match. See Dedicated Servers or Relays?.

Tool

What it does

edgegap_create_relay_session ●

Creates a relay session for your players and returns the relay address and each player's authorization token.

edgegap_get_relay_session

Reads a relay session.

edgegap_authorize_relay_user ●

Adds a player who joins later.

edgegap_delete_relay_session ●

Closes a relay session.

WARNING

Deployments and relay sessions are billed while they run. Ask your agent to stop test deployments and delete test relay sessions when it's done.

Example Prompts

  • "Write a Dockerfile for my Unity server build, then push it and deploy a server near me."

  • "Check my Dockerfile for Edgegap and fix any problems."

  • "Create a matchmaker config for 2v2 matches on my latest version."

  • "My deployment failed. Read the logs and tell me why."

  • "My game uses host-client networking. Set up an Edgegap relay for two players."

🚨 Troubleshooting

Review common error codes and learn how to unlock your integration.

401 Unauthorized

Your MCP integration is most likely not including the Authorization header correctly.

403 Forbidden

Your MCP integration is likely using the template token or a deleted token. Please validate that the token value used by your integration matches exactly the token displayed in dashboard.

424 Image Could Not Be Pulled

Edgegap could not pull your container image. Check the repository, image name, and tag, and that the tag was pushed (ask your agent to list registry tags). For images in the Edgegap registry, the image name must include your project, e.g. my-project/my-game-server.

Registry Credentials Unavailable

If your agent can't retrieve registry credentials, request them in the dashboard under Container Registry, or push to another registry Edgegap can pull from (Docker Hub, GitHub, AWS ECR, GCP, GitLab). See External Registries.

Server Starts Locally but Not on Edgegap

Ask your agent to validate your server configuration, or to generate a new Dockerfile. The most common causes are an image built on Apple Silicon without docker build --platform linux/amd64, a server listening on a different port than the version exposes, or a UDP transport configured as TCP.

Other API Errors

Please consult our API Reference for possible error responses for individual API endpoints.

NOTE

If you need help,please reach out to us over Discord. For live games support see our ticketing system.

🛠️ Self-Hosting

The hosted endpoint at mcp.edgegap.dev runs as a Cloudflare Worker (see worker/INSTALL.md). To run the same stateless HTTP server on your own infrastructure, use the Docker image:

docker build -t edgegap-mcp .
docker run --rm -p 8080:8080 edgegap-mcp

Clients connect to http://<host>:8080/mcp with their own Authorization header, the same way they connect to the hosted endpoint. The image holds no credential, and /health answers without one. PORT, HOST, EDGEGAP_READ_ONLY, EDGEGAP_APP_ALLOWLIST and EDGEGAP_MAX_DURATION_MINUTES apply. Read worker/DECISION.md before exposing it beyond a private network.

Prebuilt images are published to ghcr.io/edgegap/edgegap-mcp, tagged main and sha-<commit> on every push to main, plus the version on v* tags:

docker run --rm -p 8080:8080 ghcr.io/edgegap/edgegap-mcp:main

Development

npm ci
npm run build
npm test                  # mock-API tests; none reach Edgegap
npm run typecheck:worker

Test

Covers

test/smoke.mjs

Handshake, tool registration, read-only mode

test/guards.mjs

Local validation and allowlist enforcement

test/elicit.mjs

Token prompt: accept, refuse acknowledgement, decline, no support

test/newtools.mjs

Validator, Dockerfile generator, registry, deployments, relay and matchmaker tools against a local mock API

test/http.mjs

Self-hosted HTTP server: discovery without a token, per-request tokens, foreign credentials

test/live-check.mjs

Not in npm test. Runs against the real API with a token from a non-production organization

Design decisions, the security model, and what's deliberately out of scope are in DESIGN.md.

Available Tools

19 tools
edgegap_authorize_relay_userAdd a player to a relay sessionA
Idempotent
Inspect

Authorize one more player (by public IP) on an existing relay session, for a player joining after the session was created. Returns that player's authorization token.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_ipYesPublic IP of the joining player.
session_idYes

TDQS

A4/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 safety is covered. The description adds that a token is returned and that the operation augments an existing session, but says nothing about failure modes (e.g., unknown session_id) or any IP validation behavior.

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?

Two sentences, front-loaded with the action and scope, followed by the return value. No filler or restatement of the title.

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

Completeness4/5

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

For a 2-parameter mutation with no output schema, the description covers the return value (authorization token) and the operational context. Only error/edge-case behavior (invalid or expired session) is left unaddressed, which is a minor gap.

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

Parameters3/5

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

Schema description coverage is 50%: user_ip is documented ('Public IP of the joining player') but session_id has no schema description. The description's phrase 'existing relay session' and 'by public IP' loosely map to the two params but add no format or constraint detail beyond the schema. Baseline 3 is appropriate.

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?

States a specific verb (authorize), resource (player/relay session), and the exact scope: adding a player to an already-created session. This clearly differentiates it from edgegap_create_relay_session (initial creation) and edgegap_get/delete_relay_session.

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

Usage Guidelines4/5

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

Gives a precise usage condition: 'for a player joining after the session was created.' This implies the alternative is session creation, but it never names edgegap_create_relay_session explicitly, so the routing is inferred rather than stated.

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

edgegap_build_matchmaker_configBuild a basic matchmaker configurationA
Read-onlyIdempotent
Inspect

Generate a ready-to-upload Edgegap matchmaker JSON configuration with one profile: team count and size, optional latency rule, and optional expansions that relax the rules the longer a player waits. Checks the referenced application version exists and has ports. Edgegap has no API for creating a matchmaker, so this tool does NOT create one: save the returned config to a file (e.g. matchmaker-config.json) and have the developer upload it on the Matchmaker page of the dashboard. The matchmaker starts an authoritative dedicated server for each match, which is the recommended setup for multiplayer games.

ParametersJSON Schema
NameRequiredDescriptionDefault
inspectNoExpose the inspection API for debugging. Default true; turn off for production.
versionYesVersion the matchmaker deploys.
expansionsNoRule relaxations after a player has waited this long, e.g. [{after_seconds: 30, min_team_size: 1}].
team_countYesTeams per match. 1 for free-for-all or co-op.
applicationYesApplication the matchmaker deploys.
profile_nameYesProfile clients will queue into, e.g. "casual-2v2".
max_team_sizeYes
min_team_sizeYes
max_latency_msNoAdds a latency rule: drop players above this ping to the chosen region. Needs beacon pings from the client.
verify_versionNoLook up the application version first. Default true.
ticket_expirationNoDefault "5m".
latency_difference_msNoMax ping spread between matched players. Default 100.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds real value beyond them by disclosing the version/port verification check and the crucial caveat that no server-side matchmaker is created, making the 'generates a file, does not deploy' behavior unambiguous.

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 output is front-loaded in the first clause, followed by the key constraint and workflow. It is a fairly dense paragraph but each sentence (capability, verification, no-API caveat, recommended setup) carries distinct information.

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

Completeness4/5

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

For a 12-parameter tool with no output schema, the description covers the main concept and the return/config-file expectation. It stops short of explaining every optional parameter, but combined with 83% schema coverage an agent has enough to call it correctly.

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

Parameters3/5

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

Schema description coverage is 83%, so the schema already documents most parameters. The description echoes the schema's semantics (team count/size, latency rule, expansions that relax rules over time) without adding format or syntax detail the schema lacks, so the baseline 3 is appropriate.

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?

Names a specific verb and resource ('Generate a ready-to-upload Edgegap matchmaker JSON configuration') and enumerates the scope of what one profile contains. An agent can immediately tell it apart from sibling tools like edgegap_create_app or edgegap_deploy, none of which build matchmaker configs.

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

Usage Guidelines4/5

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

Explicitly clarifies that Edgegap has no API for creating a matchmaker and that this tool does NOT create one, instructing the agent to save the result and have the developer upload it manually. This is clear usage context, but it describes the output workflow rather than naming a sibling alternative to pick instead.

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

edgegap_create_appCreate an Edgegap applicationAInspect

Create a new application to hold game server versions. Only call this after edgegap_list_apps confirms no suitable application exists. Creating an application does not deploy anything — follow with edgegap_create_app_version.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesApplication name, 3-64 chars. Usually the game or project name.
is_activeNoWhether deployments are allowed. Default true.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=false and idempotentHint=false; the description adds that creating an application does not deploy anything, which is crucial behavioral context. It also implies a non-destructive nature but avoids repeating annotation-mandated details. This goes beyond annotations by clarifying the tool's limited scope.

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 only two sentences long, with the essential action front-loaded and the critical usage condition immediately following. Every word adds value, and the structure is efficient without redundancy.

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

Completeness4/5

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

Given that the tool has a simple schema with two simple parameters, full schema coverage, and no output schema, the description provides sufficient information for correct invocation. It lacks details on default behavior for is_active, but the schema covers that. The main gap is not specifying what the response looks like, but since there's no output schema, it's not mandatory. Overall, it's complete enough for its complexity.

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

Parameters3/5

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

Schema coverage is 100%, so both parameters are fully described in the schema. The description does not add extra parameter-level detail beyond what the schema provides, aligning with the baseline of 3. It doesn't repeat parameter names, but it also doesn't offer additional context like naming conventions beyond the schema's note.

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

Purpose4/5

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

The description clearly states the tool creates a new application to hold game server versions, distinguishing it from related operations like creating an app version. However, it doesn't explicitly mention that it's creating the top-level container versus other resource types, but the verb 'create' and resource 'application' are specific enough. It could more strongly differentiate from edgegap_create_app_version, but the follow-up note implicitly does so.

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 explicitly instructs to call this only after confirming no suitable application exists via edgegap_list_apps, and it tells the user to follow with edgegap_create_app_version. This provides clear when-to-use and sequential guidance, surpassing typical usage notes.

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

edgegap_create_app_versionCreate an application versionAInspect

Register a container image as a deployable version of an application. The image must already be pushed to a registry that Edgegap can pull from (see edgegap_get_registry_credentials and edgegap_list_registry_tags). Resource units: 1024 cpu units = 1 vCPU; memory_mb must be at least 256 and at most double the cpu units. Set verify_image true on the first version so a bad image fails here rather than at deploy time. Avoid the "latest" docker tag — use a build ID so deployments are reproducible.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoEnvironment variables injected into the container.
nameYesVersion identifier, typically a build ID or timestamp.
portsYesPorts to expose. At least one is required for players to connect.
cpu_unitsYesvCPU units. 1024 = 1 vCPU.
memory_mbYesMemory in MB. At most 2x cpu_units.
docker_tagYesImage tag. Use a build ID, not "latest".
applicationYesExisting application name.
docker_imageYesNamespaced image, e.g. "mystudio/game-server".
verify_imageNoVerify Edgegap can pull the image before accepting the version.
registry_tokenNoRegistry password or token.
docker_repositoryYesRegistry host, e.g. "docker.io" or "registry.edgegap.com".
registry_usernameNoRegistry username, for private images.
max_duration_minutesNoAuto-stop after this many minutes. Keeps test deployments from running up cost.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only supply openWorldHint/idempotentHint/destructiveHint; the description adds real behavioral context beyond them: the external-registry dependency, that verify_image makes a bad image fail here rather than at deploy time, and that reproducible tags prevent flaky deploys. It does not state permissions/error behavior, keeping it short of a 5.

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?

Five sentences, purpose front-loaded, then prerequisites, then resource-unit rules, then two actionable tips. No filler and every clause carries operational information.

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

Completeness4/5

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

For a 13-parameter mutation with no output schema and only safety-oriented annotations, the description covers the key unknowns: registry prerequisites, resource-unit math, verification, and tag hygiene. It omits version-name uniqueness expectations and any indication of the response payload, but the core call path is complete.

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 100%, so the baseline is 3, but the description adds cross-parameter meaning absent from any single schema field: the 1024-units-per-vCPU conversion and the memory_mb >= 256 / <= 2x cpu_units constraint. Usage semantics for verify_image ('first version') also go beyond the schema text.

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?

Specific verb+resource ('Register a container image as a deployable version of an application') that clearly separates it from sibling edgegap_create_app and edgegap_list_app_versions. An agent can tell exactly what object is being created and from what input.

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

Usage Guidelines4/5

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

Gives concrete preconditions (image must already be pushed to a registry Edgegap can pull from) and routes the agent to edgegap_get_registry_credentials and edgegap_list_registry_tags for verification. It advises setting verify_image on the first version and avoiding the 'latest' tag, but doesn't explicitly contrast with edgegap_create_app for the 'when not to use' case.

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

edgegap_create_relay_sessionCreate a relay session (host-client games only)AInspect

A relay is NOT a game server and is not the recommended default — for a multiplayer match, deploy an authoritative dedicated server with edgegap_deploy instead. A relay only forwards traffic between players while one player's game acts as host and owns the game state: the host can cheat and has a latency advantage, the host's PC and connection cap the match, and the match ends if the host quits. Only use this when the developer has chosen peer-to-peer/host-client, or the netcode is already a listen server and a dedicated server is not an option; if that has not been established, ask first. Never pick it only because it needs no server image. Creates an Edgegap relay session for every player's public IP, host first, waits until it is ready, and returns the relay address plus per-player authorization tokens for the relay transport. Relay sessions are billed while open: delete test sessions with edgegap_delete_relay_session when finished.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_ipsYesPublic IP of each player, host first. Add late joiners with edgegap_authorize_relay_user.
webhook_urlNoCalled when the session is ready.
timeout_secondsNoDefault 30.
wait_until_readyNoPoll until the relay is assigned. Default true.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover openWorld/idempotent/destructive, but the description adds substantial context beyond them: the host-risk profile (host can cheat, has a latency advantage, host's PC caps the match, match ends if host quits), that the call blocks until ready, what is returned (relay address plus per-player authorization tokens), and that sessions are billed while open with a cleanup path via edgegap_delete_relay_session.

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 warnings are front-loaded and every sentence carries real decision weight for a high-stakes, billable, non-default tool. It is long and slightly repetitive about the host's role and the 'no server image' caution, but not padded in a way that harms comprehension.

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?

With no output schema, the description still explains the return payload (relay address and per-player authorization tokens), the blocking behavior, billing implications, and the deletion follow-up. Nothing an agent needs to call and then manage this tool correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description reinforces the host-first ordering of user_ips and points to edgegap_authorize_relay_user for late joiners, but these details already live in the schema, so it adds little beyond it.

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 states a specific verb and resource ('Creates an Edgegap relay session') and explicitly contrasts it with the sibling edgegap_deploy by declaring 'A relay is NOT a game server'. An agent can distinguish this tool from deployment tools without opening any 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?

It gives explicit when-to-use ('Only use this when the developer has chosen peer-to-peer/host-client, or the netcode is already a listen server'), when-not ('for a multiplayer match, deploy an authoritative dedicated server with edgegap_deploy instead'), a routing instruction to ask first if that hasn't been established, and an explicit anti-pattern ('Never pick it only because it needs no server image'). This is a complete routing guide.

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

edgegap_delete_relay_sessionDelete a relay sessionA
DestructiveIdempotent
Inspect

Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint, idempotentHint and openWorldHint, so the safety profile is structured. The description adds real value beyond that by disclosing the consequence: 'Connected players lose their relay connection.' It does not mention auth requirements or error behavior.

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?

Three short sentences, action front-loaded, with the impact statement and cleanup guidance following in priority order. No filler.

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

Completeness4/5

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

For a one-parameter destructive delete with annotations covering idempotency and destructiveness, the definition covers the operation, its side effect, and a cleanup workflow. The only real gap is the unexplained session_id, which is minor at this complexity.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter session_id is undocumented in the schema or description. The definition never says where session_id comes from (e.g., create_relay_session) or what format it takes, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: 'Close one relay session.' An agent can distinguish it from the create/get/authorize relay siblings by name. It does not explicitly name alternatives, but the operation is unambiguous.

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

Usage Guidelines3/5

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

The description gives a lifecycle directive ('Delete every session you created for testing before ending your task'), which implies when cleanup is appropriate but does not compare against siblings or state prerequisites such as needing the session_id from create_relay_session.

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

edgegap_deployDeploy a game serverAInspect

Start one authoritative dedicated game server from an application version, placed near the players you specify. This is the recommended way to host a multiplayer match: the server owns the game state, so no player hosts it. Returns immediately with a request_id; the server is still starting and has no connection details yet. Follow this call with edgegap_wait_for_deployment to get the address players connect to. Always stop deployments you started for testing.

ParametersJSON Schema
NameRequiredDescriptionDefault
envNoEnvironment variables for this deployment only.
tagsNoTags for filtering later, e.g. ["agent-test"]. Recommended.
usersYesWhere the players are. Exactly one of these two is required.
versionYesVersion name within the application.
cpu_unitsNoOverride the version CPU.
memory_mbNoOverride the version memory.
applicationYesApplication name.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare non-idempotent, non-destructive, open-world behavior, so the description isn't carrying the safety burden, but it adds genuinely new async semantics: the call 'returns immediately with a request_id' and the server 'has no connection details yet'. That tells the agent not to expect a usable address in the response, which the annotations do not convey.

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?

Four sentences, front-loaded with the core action and its async consequence, with no filler. The final cleanup sentence is usage guidance rather than capability description, but it is short and operationally useful rather than padding.

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

Completeness4/5

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

For a 7-param deployment tool with no output schema, the description covers the key unknowns: what it starts, what it returns immediately (request_id), and how to obtain the connection address. It leaves out failure modes, quota/pricing limits, and whether the deployment auto-expires, which would round out the picture.

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

Parameters3/5

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

Schema description coverage is 100% and the nested users object is fully documented, so the baseline is 3. The description only restates schema content ('placed near the players you specify') and adds no format, cardinality, or override guidance for cpu_units/memory_mb/env/tags.

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?

States a specific verb and resource ('Start one authoritative dedicated game server from an application version') and distinguishes the resource from siblings like edgegap_create_app_version or edgegap_create_relay_session. The scope ('one', 'authoritative', 'near the players') is precise enough that an agent can pick it out 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 Guidelines4/5

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

Explicitly frames this as 'the recommended way to host a multiplayer match' and names the required follow-up tool (edgegap_wait_for_deployment) plus a cleanup obligation ('Always stop deployments you started for testing'). It never states when to prefer this over edgegap_create_relay_session, so it stops short of a full when/when-not contrast.

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

edgegap_generate_dockerfileGenerate a game server DockerfileA
Read-onlyIdempotent
Inspect

Write a Dockerfile for this project's headless game server build, ready for Edgegap: linux/amd64 base, the build folder copied in, the binary made executable, the right headless flags (Unity -batchmode -nographics, Godot --headless), a non-root user where the engine needs it (Unreal refuses root), CRLF fixes for start scripts, and EXPOSE lines matching the ports. Call this when the project has no Dockerfile, before building anything. Look at the build output first so you can pass the real build folder, binary name and port; anything you omit is assumed and listed under assumptions, which you must confirm with the developer or the project files. Write the result to Dockerfile, then build. The output is checked against edgegap_validate_server_config before it is returned. Makes no API calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
portsNoPorts the server listens on. Default: 7777, with the protocol the netcode uses (UDP if unknown).
engineYesGame engine of the server build.
netcodeNoNetworking transport, to pick the protocol. Known: mirror-kcp, kcp, mirror-telepathy, telepathy, mirror-simpleweb, simpleweb, websocket, fishnet-tugboat, tugboat, netcode-for-gameobjects, ngo, unity-transport, utp, photon-fusion, litenetlib, enet, unreal-netdriver, godot-enet, godot-websocket.
base_imageNoDefault "ubuntu:22.04".
build_pathNoServer build folder, relative to where docker build runs. Defaults: unity "Builds/EdgegapServer", unreal "." (run from inside the packaged LinuxServer folder), godot "build".
executableNoFile name of the server binary or start script inside build_path. Defaults: unity "ServerBuild", unreal "StartServer.sh", godot "server.x86_64". Required for "other".
launch_argsNoExtra server arguments, one per entry, e.g. ["-log", "-port=7777"].

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/openWorldHint=false, and the description reinforces this with 'Makes no API calls' – explaining why a 'write' tool is read-only (it emits a local file). It also discloses the validation step against edgegap_validate_server_config and the assumption-reporting behavior. Minor gap: it doesn't say what happens if required build info is missing beyond 'listed under assumptions', nor what the returned text looks like.

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?

One dense paragraph that front-loads the action and the output contents before moving to preconditions and follow-ups. Every clause carries information, though the mid-sentence list of engine flags and file-system details makes it slightly run-on compared with a tighter two- or three-sentence split.

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?

No output schema exists, but the description explains what the generated artifact contains, where it is written, that it is checked against edgegap_validate_server_config before return, and that assumptions must be confirmed. For a generator tool with only one required parameter, nothing an agent needs to invoke it correctly is missing.

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 100%, so the baseline is 3, but the description adds cross-parameter behavior the schema cannot express: omitted values become assumptions that must be confirmed, and the engine choice drives defaults for build path, executable and headless flags. It does not re-explain the port/netcode lists, which the schema already covers.

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?

States a specific verb and artifact ('Write a Dockerfile for this project's headless game server build, ready for Edgegap') and enumerates the exact contents it produces (base image, build folder, binary permissions, headless flags, non-root user, CRLF fixes, EXPOSE). This is clearly distinguishable from siblings like edgegap_create_app_version or edgegap_validate_server_config.

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?

Explicit trigger ('Call this when the project has no Dockerfile, before building anything'), explicit precondition ('Look at the build output first so you can pass the real build folder, binary name and port'), and an explicit follow-up path (write to Dockerfile, then build). Usage is fully determined.

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

edgegap_get_deploymentGet deployment statusA
Read-only
Inspect

Read the current status of one deployment, including connection address and ports once it is ready. For a deployment you just created, prefer edgegap_wait_for_deployment — it polls for you instead of making you call this in a loop.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by edgegap_deploy.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, so the read-only behavior is covered. The description adds value by disclosing that connection address and ports appear only once the deployment is ready, which helps the agent understand timing and response behavior.

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?

Two short sentences with no filler: the first states what the tool does and what it returns, and the second routes to the preferred sibling when relevant. The most important information is front-loaded.

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 simple single-parameter read tool with readOnlyHint and full schema coverage, the description is sufficient. An agent knows what to call, how to get the request_id, what to expect in the response, and when to use wait_for_deployment instead.

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

Parameters3/5

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

The input schema already documents request_id fully, including that it is returned by edgegap_deploy, so schema coverage is 100%. The description reinforces this but does not add meaningful semantics beyond the schema, warranting the baseline score.

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 states a specific verb and resource: 'Read the current status of one deployment' and adds the relevant output ('connection address and ports once it is ready'). The singular 'one deployment' clearly distinguishes it from list-style siblings.

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?

It explicitly names the alternative edgegap_wait_for_deployment and gives the condition for preferring it: a deployment you just created, because that tool polls for you instead of requiring a loop. This is clear, actionable usage guidance.

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

edgegap_get_deployment_logsGet container logs for a deploymentA
Read-only
Inspect

Retrieve stdout/stderr and crash output for a deployment. Call this whenever a deployment errors or a server exits unexpectedly — the crash exit code usually identifies the problem faster than redeploying does. Logs for stopped deployments are only retained if Endpoint Storage was configured on the version beforehand.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id of the deployment.
max_charactersNoTruncate logs to this length, keeping the tail. Default 8000.

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint and openWorldHint already present, the description adds useful non-obvious behavior: logs include crash output and are retained for stopped deployments only if Endpoint Storage was configured. No contradiction with annotations.

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?

Three tight sentences cover what the tool returns, when to call it, and an important retention caveat. No filler; the usage guidance is front-loaded before the edge case.

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 simple read-only log retrieval tool with two well-documented parameters and annotations covering safety, the description provides enough context: what logs are retrieved, when to use it, and the retention limitation. The lack of an output schema is not a gap here.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions of request_id and max_characters. The description does not add parameter-level details, but the baseline 3 is appropriate because the schema already carries the semantic load.

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 names a specific verb ('Retrieve') and resource ('stdout/stderr and crash output for a deployment'), making the tool's function unambiguous. This is clearly distinct from sibling tools that list, stop, or create deployments/apps.

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

Usage Guidelines4/5

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

It gives explicit trigger conditions: call when a deployment errors or a server exits unexpectedly, and explains the diagnostic value of the crash exit code. It does not explicitly name alternatives or when-not-to-use cases, so it stops short of a 5.

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

edgegap_get_registry_credentialsGet Edgegap container registry push credentialsA
Idempotent
Inspect

Return the registry URL, project, username and token for this organization's private Edgegap container registry (registry.edgegap.com), plus the exact docker login, build and push commands for your image. Use this when the server image is not in a registry yet — no Docker Hub account needed. Provisions the registry project on first use. The token is registry-scoped (push/pull images in this project), not the org API token: pass it to docker login via --password-stdin, never as a command-line argument, and do not write it into files. Call edgegap_validate_server_config before building.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoUnique build tag for the commands, e.g. a build ID. Never "latest".
image_nameNoImage name without project or tag, e.g. "my-game-server". Used to build the commands.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=false, idempotentHint=true, openWorldHint=true, and the description explains exactly why it is not read-only ('Provisions the registry project on first use'). It adds high-value context beyond annotations: token scope (registry-scoped, not org API token) and a security constraint (pass via --password-stdin, never as an argument, never write to files). No contradiction with the structured hints.

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?

Front-loaded with the return payload, then when-to-use, then provisioning side effect, then token safety, then prerequisite call. Every sentence carries distinct operational information and none is redundant.

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?

No output schema exists, but the description enumerates the return payload (URL, project, username, token, commands) and covers the mutation side effect, token scope, and sequencing. An agent has everything needed to call it safely and correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (tag, image_name) are already documented, including the 'Never latest' rule. The description only alludes to them via 'the exact docker login, build and push commands for your image,' adding essentially no meaning beyond the schema. Baseline 3 applies.

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?

Names a specific verb and resource (return registry URL/project/username/token plus exact docker commands) and pins it to a concrete artifact (registry.edgegap.com). Clearly distinguishable from sibling edgegap_list_registry_tags, which lists tags rather than handing back credentials and commands.

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?

Explicit trigger: 'Use this when the server image is not in a registry yet — no Docker Hub account needed.' It also sequences a sibling dependency ('Call edgegap_validate_server_config before building'), so the agent knows both when to invoke this and what to do first.

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

edgegap_get_relay_sessionGet a relay sessionA
Read-only
Inspect

Read one relay session: whether it is ready, the relay address and ports, and each authorized player with their authorization token. edgegap_create_relay_session already waits for readiness; use this to re-read a session or one created with wait_until_ready false.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesReturned by edgegap_create_relay_session.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, so safety is covered. The description adds genuinely useful behavioral context: what data comes back (readiness flag, relay address, ports, per-player authorization tokens). It does not cover auth requirements or rate limits, so it stops short of a 5.

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?

Two sentences, zero filler: the first front-loads the return contents, the second handles routing against the sibling tool. Every clause earns its place.

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?

With no output schema, the description carries the burden of describing return values and does so concretely. Combined with annotations and a fully documented single parameter, an agent has everything needed to call and interpret this tool.

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

Parameters3/5

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

Schema coverage is 100% and the single session_id parameter is documented in the schema as 'Returned by edgegap_create_relay_session.' The description adds no format or syntax detail beyond that, so the baseline 3 applies.

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?

States a specific verb ('Read') and resource ('one relay session') and enumerates what the read returns: readiness, relay address and ports, authorized players with tokens. It is clearly distinguishable from edgegap_create_relay_session by name.

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 says create already waits for readiness, and directs the agent here to re-read a session or read one created with wait_until_ready false. That is a concrete when-to-use rule with the alternative named.

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

edgegap_list_appsList Edgegap applicationsA
Read-only
Inspect

List the applications in the Edgegap organization. Start here before creating or deploying anything, so you reuse an existing application instead of making a duplicate. An "application" groups versions of one game server.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNoResults per page. Default 50.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful context about organizational scope and the meaning of an application, but does not disclose pagination behavior or response details.

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?

Three short sentences front-load the action, then give a concrete usage rule, then define the domain concept. No wasted words.

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

Completeness4/5

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

The description is sufficient for deciding to call it and knowing its scope, and the annotations cover safety. It falls slightly short by not hinting that results are paginated or that page/limit should be considered for a complete inventory.

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

Parameters2/5

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

The two pagination parameters are optional, and only 'limit' carries a schema description; 'page' has only type/constraints. The description adds no parameter-level detail, so it fails to compensate for the incomplete schema coverage.

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?

Opens with a specific verb and resource: 'List the applications in the Edgegap organization.' The definition of an application as grouping versions of one game server distinguishes it from sibling list_app_versions and places it clearly in the create/deploy workflow.

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

Usage Guidelines4/5

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

Explicitly instructs the agent to call this before creating or deploying anything to avoid duplicate applications. It does not name sibling alternatives or state when not to use, but the context is clear.

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

edgegap_list_app_versionsList versions of an applicationA
Read-only
Inspect

List the versions under an application, with their container image and resource settings. Use this to find the version name to deploy, or to copy settings from a working version when creating a new one.

ParametersJSON Schema
NameRequiredDescriptionDefault
applicationYesApplication name, as returned by edgegap_list_apps.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, covering the read-only safety profile. The description adds useful context about the output content, but does not disclose any edge behaviors such as pagination, ordering, or error conditions when an application does not exist.

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?

Two tightly written sentences with no filler. The first states the core action and output scope; the second gives practical use cases. Every sentence earns its place.

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

Completeness4/5

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

For a simple read-only tool with one well-documented parameter and no output schema, the description covers what the tool returns and why an agent would call it. It could mention absence of an application as a possible failure, but this is a minor gap.

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

Parameters3/5

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

Schema description coverage is 100%, so the single 'application' parameter is already documented in the schema. The description does not add format or syntax detail beyond that, which is acceptable given the schema's completeness.

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?

States a specific verb ('List'), a precise resource ('versions under an application'), and the key contents of the result ('container image and resource settings'). It is clearly distinguished from sibling edgegap_list_apps, which lists applications rather than versions.

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

Usage Guidelines4/5

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

Provides explicit use cases: 'find the version name to deploy' or 'copy settings from a working version when creating a new one.' It does not name alternatives or state when not to use it, but the intended context is clear.

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

edgegap_list_deploymentsList running deploymentsA
Read-only
Inspect

List active deployments, optionally filtered and sorted. Use this to find deployments left running from earlier sessions before starting new ones — orphaned servers cost money. Filter by status, application, version, tags, request_id, created_at, fleet_name or host_name, e.g. [{field:"application",operator:"eq",value:"my-game"},{field:"status",operator:"eq",value:"ready"}]. Operators: eq and neq on every field except created_at (eq, gte, lte); in and nin with an array value on request_id, tags, application, version, fleet_name, host_name; ilike with % wildcards on fleet_name and host_name. At most one filter per field. Sort by created_at or available_session_sockets.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoDefault 50.
filtersNoOmit for all deployments.
order_byNoe.g. [{field:"created_at",order:"asc"}] for oldest first.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond that: the cost consequence of orphaned deployments, the constraint that at most one filter per field is allowed, and per-field operator support that the schema does not encode.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a dense single-paragraph run-on mixing use case, field enumeration (already in the schema enum), example filter syntax, and operator rules. Bullet-style structuring of the operator matrix would make it far easier to parse.

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

Completeness3/5

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

No output schema exists, yet the description never characterizes what a returned deployment looks like or its key fields, which matters for a list tool. Input semantics are thoroughly covered and annotations carry the safety profile, but the return shape is an unaddressed gap.

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 description coverage is 100%, so much of the filter syntax is already documented. However, the description adds constraint meaning the schema lacks: which operators apply to which fields (eq/neq everywhere but created_at; in/nin only on specific fields; ilike only on fleet_name/host_name) and the one-filter-per-field rule.

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?

States a specific verb and resource ('List active deployments') plus scope of optional filtering and sorting. It is clearly distinguishable from edgegap_get_deployment (single) and edgegap_wait_for_deployment (blocking) without opening any schema.

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

Usage Guidelines4/5

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

Gives an explicit use case with a rationale: find deployments left running from earlier sessions before starting new ones, because orphaned servers cost money. It does not name a competing sibling tool to route against (e.g. get_deployment for a single deployment), so it stops short of full when/when-not guidance.

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

edgegap_list_registry_tagsList image tags in the Edgegap registryA
Read-only
Inspect

List the tags pushed for one image in this organization's Edgegap container registry, with push time and size. Call it after docker push to confirm the tag landed before edgegap_create_app_version, which otherwise fails later with an image-pull error.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
limitNoDefault 20.
image_nameYes"<project>/<image>", e.g. "my-org-cv2l3w3vy6fg/my-game-server". Project comes from edgegap_get_registry_credentials.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that by explaining the downstream failure mode this check guards against and what the response contains. It omits pagination behavior, which keeps it from a 5.

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?

Two sentences, zero filler, with the purpose and the return contents front-loaded before the workflow hint. Every clause earns its place.

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

Completeness4/5

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

No output schema exists, and the description does adequately describe the payload (tags with push time and size) along with the workflow context. The only real omission is how paging works for retrieving beyond the default limit.

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

Parameters3/5

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

Schema description coverage is 67%; image_name has a useful schema description and limit documents its default, but page is undocumented in both schema and description. The description adds no parameter-level detail (format, paging), so it neither compensates for the gap nor regresses below baseline.

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?

States a specific verb (list) and resource (tags pushed for one image) scoped to the organization's Edgegap registry, and names the concrete return fields (push time, size). This clearly distinguishes it from the app/deployment siblings.

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 says when to call it ('after docker push to confirm the tag landed') and what it prevents ('edgegap_create_app_version, which otherwise fails later with an image-pull error'), naming the sibling tool directly.

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

edgegap_stop_deploymentStop a deploymentA
DestructiveIdempotent
Inspect

Gracefully stop one deployment by request_id, sending SIGTERM to the container. Stop every deployment you started for testing before ending your task. This tool stops exactly one deployment; bulk stop is deliberately not exposed.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id of the deployment to stop.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark the tool destructive and idempotent; the description adds the behavioral detail that stopping is graceful and sends SIGTERM to the container. It also scopes behavior to exactly one deployment. This adds context beyond the structured hints without contradicting them.

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?

Three short sentences, each earning its place: the first defines the operation and mechanism, the second gives a task-level cleanup directive, and the third sets scope. Information is front-loaded and there is no 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?

For a single-parameter, annotation-rich tool with no output schema, the description covers what the agent needs: the operation, the mechanism, the required identifier, and the cleanup expectation. Nothing material is missing.

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

Parameters3/5

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

Schema coverage is 100% and the request_id parameter is already described as 'The request_id of the deployment to stop.' The description adds little beyond confirming lookup by request_id and single-deployment scope, so it earns the baseline score for schema-covered parameters.

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?

States a specific action ('stop'), a specific resource ('one deployment'), and the required identifier ('by request_id'), and distinguishes itself from any bulk-stop alternative ('bulk stop is deliberately not exposed'). It is unambiguous and differentiates from sibling tools like edgegap_deploy.

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

Usage Guidelines4/5

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

Provides explicit usage context: the agent should stop every deployment it started for testing before ending its task. It also clarifies the tool's single-deployment scope and that bulk stop is intentionally unavailable, preventing the agent from seeking a bulk alternative. It does not explicitly point to sibling tools for finding request_ids, but the context is sufficient.

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

edgegap_validate_server_configValidate a game server Dockerfile and port configA
Read-onlyIdempotent
Inspect

Check a game server Dockerfile and the ports/resources you intend to register against what Edgegap requires, BEFORE building and pushing. Catches the failures that otherwise only show up after a build, push, version and deploy: ARM or Windows images (Edgegap runs linux/amd64), Unreal running as root, missing Unity -batchmode -nographics, a server bound to localhost, EXPOSE ports that do not match the version ports, a protocol that does not match the netcode transport, the "latest" tag, and bad CPU/memory ratios. Pass the Dockerfile text (read it from disk first). If there is no Dockerfile yet, call edgegap_generate_dockerfile instead. Makes no API calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
portsNoPorts you plan to pass to edgegap_create_app_version.
engineNoGame engine. Detected from the Dockerfile when omitted.
netcodeNoNetworking transport, to check the port protocol. Known: mirror-kcp, kcp, mirror-telepathy, telepathy, mirror-simpleweb, simpleweb, websocket, fishnet-tugboat, tugboat, netcode-for-gameobjects, ngo, unity-transport, utp, photon-fusion, litenetlib, enet, unreal-netdriver, godot-enet, godot-websocket.
cpu_unitsNo
memory_mbNo
docker_tagNo
dockerfileNoFull text of the Dockerfile.
docker_imageNo
docker_repositoryNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint=false, so the safety profile is known. The description still adds real value beyond them: it enumerates the concrete failure classes detected (ARM/Windows images, root Unreal, missing -batchmode -nographics, localhost binding, EXPOSE/version port mismatch, protocol/netcode mismatch, 'latest' tag, bad CPU/memory ratios) and states 'Makes no API calls,' which confirms it is a local static check. It stops short of describing the returned report.

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 purpose and timing are front-loaded in the first sentence, followed by a dense but well-ordered list of concrete failure modes rather than vague hedging. It is long, but nearly every clause names a distinct, actionable check, so little is wasted.

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

Completeness4/5

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

For a 9-parameter, no-output-schema validation tool, the description conveys purpose, timing, alternative routing, and the failure classes it catches. The main gap is the shape of the result (pass/fail report, list of issues) and how the optional params like docker_image/docker_repository feed the check.

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

Parameters3/5

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

Schema coverage is only 44%, so several parameters (cpu_units, memory_mb, docker_tag, docker_image, docker_repository) carry no explanation anywhere. The description partially compensates by telling the agent to pass the Dockerfile text (read from disk first) and by conveying the port/netcode relationship that drives validation, but it adds little for the remaining unlabeled params. Baseline 3 is appropriate given the partial coverage.

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?

States a specific verb (validate/check) and resource (game server Dockerfile plus ports/resources) scoped against Edgegap's requirements. It explicitly distinguishes itself from edgegap_generate_dockerfile and from the build/push/version/deploy flow, so an agent knows exactly what this tool does and does not do.

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?

Gives explicit timing ('BEFORE building and pushing') and a clear branch condition with an alternative ('If there is no Dockerfile yet, call edgegap_generate_dockerfile instead'). This is exactly the when-to-use / when-not-to-use / alternative structure.

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

edgegap_wait_for_deploymentWait for a deployment to become readyA
Read-onlyIdempotent
Inspect

Poll a deployment until it is ready, errors, or the timeout expires, then return the connection details. This is the tool to call right after edgegap_deploy. Do not build your own polling loop — this handles backoff and reports the container error detail if the server fails to start.

ParametersJSON Schema
NameRequiredDescriptionDefault
request_idYesThe request_id returned by edgegap_deploy.
timeout_secondsNoHow long to wait before giving up. Default 180.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral details: polling behavior, backoff, timeout handling, and that it reports container error detail on failure. This is more than the annotations provide, though it doesn't specify exact timeout semantics beyond the parameter.

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?

Two sentences with zero waste. The purpose is front-loaded, and the usage guidance is compact and direct. Every clause serves a purpose, making it easy for an agent to parse quickly.

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 polling tool with no output schema, the description covers the full lifecycle: what triggers it, what it does while polling, what it returns on success, and what happens on failure (error detail). An agent has everything needed to call it 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?

Schema coverage is 100% with both parameters documented. The description adds the key contextual meaning that request_id comes from edgegap_deploy, which is not in the schema. This extra clarification goes beyond the schema's field descriptions, justifying a score above the baseline 3.

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 states a precise verb ('poll') and resource ('deployment'), and the outcome ('return the connection details'). It explicitly positions itself relative to edgegap_deploy and mentions that it handles backoff, which distinguishes it from a generic status check like edgegap_get_deployment.

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?

It clearly says 'This is the tool to call right after edgegap_deploy' and instructs 'Do not build your own polling loop', giving an explicit when-to-use and a when-not-to alternative. This leaves no ambiguity about the intended context.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.2.2
    • Addededgegap_generate_dockerfile
    • Changededgegap_list_deployments3 fields changed
      • removedInput schema / properties / filter
        Removed value: -{
        -  "description": "Edgegap filter expression, e.g. by tag. Omit for all deployments.",
        -  "type": "string"
        -}
      • addedInput schema / properties / filters
        Added value: +{
        +  "description": "Omit for all deployments.",
        +  "items": {
        +    "properties": {
        +      "field": {
        +        "enum": [
        +          "status",
        +          "request_id",
        +          "tags",
        +          "created_at",
        +          "application",
        +          "version",
        +          "fleet_name",
        +          "host_name"
        +        ],
        +        "type": "string"
        +      },
        +      "operator": {
        +        "enum": [
        +          "eq",
        +          "neq",
        +          "in",
        +          "nin",
        +          "gte",
        +          "lte",
        +          "ilike"
        +        ],
        +        "type": "string"
        +      },
        +      "value": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          }
        +        ],
        +        "description": "A string, or an array of strings for in/nin. created_at is ISO 8601, e.g. \"2026-09-30T00:00:00Z\"."
        +      }
        +    },
        +    "required": [
        +      "field",
        +      "operator",
        +      "value"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / order_by
        Added value: +{
        +  "description": "e.g. [{field:\"created_at\",order:\"asc\"}] for oldest first.",
        +  "items": {
        +    "properties": {
        +      "field": {
        +        "enum": [
        +          "created_at",
        +          "available_session_sockets"
        +        ],
        +        "type": "string"
        +      },
        +      "order": {
        +        "enum": [
        +          "asc",
        +          "desc"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "field",
        +      "order"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 9 tool updatesv0.2.0
    • Addededgegap_authorize_relay_user
    • Addededgegap_build_matchmaker_config
    • Changededgegap_create_app_version1 field changed
      • changedInput schema / properties / ports / items / properties / protocol / description
        Previous value: -"UDP, TCP, WS, or HTTP. Most game servers use UDP."New value: +"One of UDP, TCP, TCP/UDP, HTTP, HTTPS, WS, WSS. Most game servers use UDP."
    • Addededgegap_create_relay_session
    • Addededgegap_delete_relay_session
    • Addededgegap_get_registry_credentials
    • Addededgegap_get_relay_session
    • Addededgegap_list_registry_tags
    • Addededgegap_validate_server_config
  3. 10 tool updatesv0.1.2
    • First observededgegap_create_app
    • First observededgegap_create_app_version
    • First observededgegap_deploy
    • First observededgegap_get_deployment
    • First observededgegap_get_deployment_logs
    • First observededgegap_list_app_versions
    • First observededgegap_list_apps
    • First observededgegap_list_deployments
    • First observededgegap_stop_deployment
    • First observededgegap_wait_for_deployment

TDQS

A4.1/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target clearly distinct resources and actions (deploy vs. relay session, create_app vs. create_app_version vs. create_relay_session). The only mild overlaps are edgegap_get_deployment vs. edgegap_wait_for_deployment and edgegap_list_deployments vs. edgegap_get_deployment, but the descriptions explicitly distinguish polling from one-shot reads. Boundaries are well communicated overall.

Naming Consistency5/5

Every tool uses the edgegap_ prefix with a consistent snake_case verb_noun pattern (list_apps, create_app_version, deploy, get_deployment, stop_deployment, delete_relay_session). The convention is uniform throughout with no camelCase or style mixing.

Tool Count4/5

19 tools is on the heavier side but each maps to a distinct step in a genuinely broad domain (apps, versions, deployments, relays, registry, and build-time helpers). No tool appears redundant, so the count is justified though slightly high.

Completeness4/5

Covers the full deployment lifecycle (deploy, wait, get, list, stop, logs), app/version creation and listing, registry access, relay session management, and build-time helpers. Minor gaps exist (no delete/update for applications or versions, no explicit list of applications' full settings), but core workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers