Server definition
- Hash
- sha256:3edde641ff3130d665b9b153d7bb79d6fdd5dc10f882bf8e31170c0d0c0d4e67
- What it is
- What a remote MCP server returned when asked what it offers: 19 tools
The blob, as servednamed by its sha256
{
"instructions": "Host multiplayer games on Edgegap. The recommended setup is an authoritative dedicated server per match; relays exist for games built host-client.\n\nDedicated server vs relay — recommend a dedicated server by default.\n- Dedicated (authoritative) server (edgegap_deploy): Edgegap runs the headless server build, and the server owns the game state. No player has host advantage, cheating is much harder, the match survives any player leaving, every player is one hop from the server, and performance does not depend on a player's PC or home connection.\n- Relay (edgegap_create_relay_session): NOT a game server. Edgegap only forwards traffic between players; one player's game is the host and owns the state. The host can cheat and has zero latency while everyone else has two hops, the host's machine and upload bandwidth cap the match, and the match ends when the host quits unless the game implements host migration.\nUse a relay only when the developer explicitly wants peer-to-peer/host-client, or the game's netcode is already built as a listen server and moving to a dedicated server is not an option. \"It needs no server image\" is not a reason: edgegap_generate_dockerfile removes most of that work. If unsure, ask the developer before choosing a relay.\n\nGolden path for a first dedicated-server deployment:\n1. edgegap_generate_dockerfile if the project has no Dockerfile, or edgegap_validate_server_config on the one it has, before building\n2. edgegap_get_registry_credentials, then docker build --platform linux/amd64 and push\n3. edgegap_list_registry_tags to confirm the push landed\n4. edgegap_list_apps, then edgegap_create_app if no suitable application exists\n5. edgegap_create_app_version to register the image\n6. edgegap_deploy to start a server near the players\n7. edgegap_wait_for_deployment to get the connection address\n8. edgegap_stop_deployment when finished\nTo match players into those servers, edgegap_build_matchmaker_config produces the config the developer uploads in the dashboard.\n\nDeployments and relay sessions cost money while running. Tag test deployments, and stop deployments and delete relay sessions you created before ending the task. If a deployment errors, read the container logs before redeploying.\n\nCredentials: the token comes from the Authorization header on this connection. That token is org-wide and cannot be scoped by Edgegap, so it authorises far more than any single task needs. Treat it as a supervised credential: do not use it for work the developer did not ask for, do not enumerate or modify unrelated applications, and do not repeat operations against it to explore what is possible. If the developer declines to provide a token, stop and report which operation needed it — do not retry.",
"tools": [
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"session_id": {
"type": "string"
},
"user_ip": {
"description": "Public IP of the joining player.",
"minLength": 3,
"type": "string"
}
},
"required": [
"session_id",
"user_ip"
],
"type": "object"
},
"name": "edgegap_authorize_relay_user",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"application": {
"description": "Application the matchmaker deploys.",
"type": "string"
},
"expansions": {
"description": "Rule relaxations after a player has waited this long, e.g. [{after_seconds: 30, min_team_size: 1}].",
"items": {
"properties": {
"after_seconds": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"max_latency_ms": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"min_team_size": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
}
},
"required": [
"after_seconds"
],
"type": "object"
},
"type": "array"
},
"inspect": {
"description": "Expose the inspection API for debugging. Default true; turn off for production.",
"type": "boolean"
},
"latency_difference_ms": {
"description": "Max ping spread between matched players. Default 100.",
"maximum": 9007199254740991,
"minimum": 0,
"type": "integer"
},
"max_latency_ms": {
"description": "Adds a latency rule: drop players above this ping to the chosen region. Needs beacon pings from the client.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"max_team_size": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"min_team_size": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"profile_name": {
"description": "Profile clients will queue into, e.g. \"casual-2v2\".",
"type": "string"
},
"team_count": {
"description": "Teams per match. 1 for free-for-all or co-op.",
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
},
"ticket_expiration": {
"description": "Default \"5m\".",
"type": "string"
},
"verify_version": {
"description": "Look up the application version first. Default true.",
"type": "boolean"
},
"version": {
"description": "Version the matchmaker deploys.",
"type": "string"
}
},
"required": [
"profile_name",
"application",
"version",
"team_count",
"min_team_size",
"max_team_size"
],
"type": "object"
},
"name": "edgegap_build_matchmaker_config",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"is_active": {
"description": "Whether deployments are allowed. Default true.",
"type": "boolean"
},
"name": {
"description": "Application name, 3-64 chars. Usually the game or project name.",
"maxLength": 64,
"minLength": 3,
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "edgegap_create_app",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"application": {
"description": "Existing application name.",
"type": "string"
},
"cpu_units": {
"description": "vCPU units. 1024 = 1 vCPU.",
"maximum": 9007199254740991,
"minimum": 256,
"type": "integer"
},
"docker_image": {
"description": "Namespaced image, e.g. \"mystudio/game-server\".",
"type": "string"
},
"docker_repository": {
"description": "Registry host, e.g. \"docker.io\" or \"registry.edgegap.com\".",
"type": "string"
},
"docker_tag": {
"description": "Image tag. Use a build ID, not \"latest\".",
"type": "string"
},
"env": {
"description": "Environment variables injected into the container.",
"items": {
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"key",
"value"
],
"type": "object"
},
"type": "array"
},
"max_duration_minutes": {
"description": "Auto-stop after this many minutes. Keeps test deployments from running up cost.",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"memory_mb": {
"description": "Memory in MB. At most 2x cpu_units.",
"maximum": 9007199254740991,
"minimum": 256,
"type": "integer"
},
"name": {
"description": "Version identifier, typically a build ID or timestamp.",
"maxLength": 64,
"minLength": 1,
"type": "string"
},
"ports": {
"description": "Ports to expose. At least one is required for players to connect.",
"items": {
"properties": {
"name": {
"description": "Label, e.g. \"gameport\".",
"type": "string"
},
"port": {
"description": "Port the server listens on.",
"maximum": 59999,
"minimum": 1,
"type": "integer"
},
"protocol": {
"description": "One of UDP, TCP, TCP/UDP, HTTP, HTTPS, WS, WSS. Most game servers use UDP.",
"type": "string"
},
"to_check": {
"description": "Readiness check on this port. Default true.",
"type": "boolean"
}
},
"required": [
"port",
"protocol"
],
"type": "object"
},
"minItems": 1,
"type": "array"
},
"registry_token": {
"description": "Registry password or token.",
"type": "string"
},
"registry_username": {
"description": "Registry username, for private images.",
"type": "string"
},
"verify_image": {
"description": "Verify Edgegap can pull the image before accepting the version.",
"type": "boolean"
}
},
"required": [
"application",
"name",
"docker_repository",
"docker_image",
"docker_tag",
"cpu_units",
"memory_mb",
"ports"
],
"type": "object"
},
"name": "edgegap_create_app_version",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"timeout_seconds": {
"description": "Default 30.",
"maximum": 120,
"minimum": 5,
"type": "integer"
},
"user_ips": {
"description": "Public IP of each player, host first. Add late joiners with edgegap_authorize_relay_user.",
"items": {
"minLength": 3,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"wait_until_ready": {
"description": "Poll until the relay is assigned. Default true.",
"type": "boolean"
},
"webhook_url": {
"description": "Called when the session is ready.",
"format": "uri",
"type": "string"
}
},
"required": [
"user_ips"
],
"type": "object"
},
"name": "edgegap_create_relay_session",
"outputSchema": null
},
{
"description": "Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"session_id": {
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
},
"name": "edgegap_delete_relay_session",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"application": {
"description": "Application name.",
"type": "string"
},
"cpu_units": {
"description": "Override the version CPU.",
"maximum": 9007199254740991,
"minimum": 256,
"type": "integer"
},
"env": {
"description": "Environment variables for this deployment only.",
"items": {
"properties": {
"key": {
"type": "string"
},
"value": {
"type": "string"
}
},
"required": [
"key",
"value"
],
"type": "object"
},
"type": "array"
},
"memory_mb": {
"description": "Override the version memory.",
"maximum": 9007199254740991,
"minimum": 256,
"type": "integer"
},
"tags": {
"description": "Tags for filtering later, e.g. [\"agent-test\"]. Recommended.",
"items": {
"type": "string"
},
"type": "array"
},
"users": {
"description": "Where the players are. Exactly one of these two is required.",
"properties": {
"geo_coordinates": {
"description": "Latitude/longitude pairs, as an alternative to IP addresses.",
"items": {
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"type": "object"
},
"type": "array"
},
"ip_addresses": {
"description": "Public IPv4/IPv6 addresses of the players. Edgegap places the server near them.",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"version": {
"description": "Version name within the application.",
"type": "string"
}
},
"required": [
"application",
"version",
"users"
],
"type": "object"
},
"name": "edgegap_deploy",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"base_image": {
"description": "Default \"ubuntu:22.04\".",
"type": "string"
},
"build_path": {
"description": "Server build folder, relative to where docker build runs. Defaults: unity \"Builds/EdgegapServer\", unreal \".\" (run from inside the packaged LinuxServer folder), godot \"build\".",
"type": "string"
},
"engine": {
"description": "Game engine of the server build.",
"enum": [
"unity",
"unreal",
"godot",
"other"
],
"type": "string"
},
"executable": {
"description": "File name of the server binary or start script inside build_path. Defaults: unity \"ServerBuild\", unreal \"StartServer.sh\", godot \"server.x86_64\". Required for \"other\".",
"type": "string"
},
"launch_args": {
"description": "Extra server arguments, one per entry, e.g. [\"-log\", \"-port=7777\"].",
"items": {
"type": "string"
},
"type": "array"
},
"netcode": {
"description": "Networking 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.",
"type": "string"
},
"ports": {
"description": "Ports the server listens on. Default: 7777, with the protocol the netcode uses (UDP if unknown).",
"items": {
"properties": {
"name": {
"type": "string"
},
"port": {
"maximum": 59999,
"minimum": 1,
"type": "integer"
},
"protocol": {
"enum": [
"UDP",
"TCP",
"TCP/UDP",
"HTTP",
"HTTPS",
"WS",
"WSS"
],
"type": "string"
}
},
"required": [
"port",
"protocol"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"engine"
],
"type": "object"
},
"name": "edgegap_generate_dockerfile",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"request_id": {
"description": "The request_id returned by edgegap_deploy.",
"type": "string"
}
},
"required": [
"request_id"
],
"type": "object"
},
"name": "edgegap_get_deployment",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"max_characters": {
"description": "Truncate logs to this length, keeping the tail. Default 8000.",
"maximum": 50000,
"minimum": 500,
"type": "integer"
},
"request_id": {
"description": "The request_id of the deployment.",
"type": "string"
}
},
"required": [
"request_id"
],
"type": "object"
},
"name": "edgegap_get_deployment_logs",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"image_name": {
"description": "Image name without project or tag, e.g. \"my-game-server\". Used to build the commands.",
"pattern": "^[a-z0-9]+([._-][a-z0-9]+)*$",
"type": "string"
},
"tag": {
"description": "Unique build tag for the commands, e.g. a build ID. Never \"latest\".",
"type": "string"
}
},
"type": "object"
},
"name": "edgegap_get_registry_credentials",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"session_id": {
"description": "Returned by edgegap_create_relay_session.",
"type": "string"
}
},
"required": [
"session_id"
],
"type": "object"
},
"name": "edgegap_get_relay_session",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"application": {
"description": "Application name, as returned by edgegap_list_apps.",
"type": "string"
}
},
"required": [
"application"
],
"type": "object"
},
"name": "edgegap_list_app_versions",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"description": "Results per page. Default 50.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"page": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "edgegap_list_apps",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"filters": {
"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"
},
"limit": {
"description": "Default 50.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"order_by": {
"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"
}
},
"type": "object"
},
"name": "edgegap_list_deployments",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"image_name": {
"description": "\"<project>/<image>\", e.g. \"my-org-cv2l3w3vy6fg/my-game-server\". Project comes from edgegap_get_registry_credentials.",
"type": "string"
},
"limit": {
"description": "Default 20.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"page": {
"maximum": 9007199254740991,
"minimum": 1,
"type": "integer"
}
},
"required": [
"image_name"
],
"type": "object"
},
"name": "edgegap_list_registry_tags",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"request_id": {
"description": "The request_id of the deployment to stop.",
"type": "string"
}
},
"required": [
"request_id"
],
"type": "object"
},
"name": "edgegap_stop_deployment",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"cpu_units": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"docker_image": {
"type": "string"
},
"docker_repository": {
"type": "string"
},
"docker_tag": {
"type": "string"
},
"dockerfile": {
"description": "Full text of the Dockerfile.",
"type": "string"
},
"engine": {
"description": "Game engine. Detected from the Dockerfile when omitted.",
"enum": [
"unity",
"unreal",
"godot",
"other"
],
"type": "string"
},
"memory_mb": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"netcode": {
"description": "Networking 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.",
"type": "string"
},
"ports": {
"description": "Ports you plan to pass to edgegap_create_app_version.",
"items": {
"properties": {
"name": {
"type": "string"
},
"port": {
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"type": "integer"
},
"protocol": {
"type": "string"
}
},
"required": [
"port",
"protocol"
],
"type": "object"
},
"type": "array"
}
},
"type": "object"
},
"name": "edgegap_validate_server_config",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"request_id": {
"description": "The request_id returned by edgegap_deploy.",
"type": "string"
},
"timeout_seconds": {
"description": "How long to wait before giving up. Default 180.",
"maximum": 600,
"minimum": 5,
"type": "integer"
}
},
"required": [
"request_id"
],
"type": "object"
},
"name": "edgegap_wait_for_deployment",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:3edde641ff3130d665b9b153d7bb79d6fdd5dc10f882bf8e31170c0d0c0d4e67 | sha256sum