{"server":"dev.edgegap/mcp","count":37,"changes":[{"tool":"edgegap_get_skill","kind":"changed","observed_at":"2026-10-16T01:33:21.564Z","fields":["description","inputSchema"],"description_before":"Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the matching skill before acting on a game project — edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap otherwise — and fetch the references and templates it points to as you reach them. No API call.","description_after":"Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the matching skill before acting on a game project — edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap-manus for a browser game built with Manus, edgegap otherwise — and fetch the references and templates it points to as you reach them. No API call.","description_similarity":0.941,"before_hash":"f77d20772c0f4d6e8eafc3c7a6c3d3da","after_hash":"f88caf5c0edad8476c4a83f3dedb9e93"},{"tool":"edgegap_list_skills","kind":"changed","observed_at":"2026-10-16T01:33:21.564Z","fields":["description"],"description_before":"List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Before working on a game project, load the matching skill with edgegap_get_skill: edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap for any other engine or platform questions; it routes to the rest. No API call.","description_after":"List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Before working on a game project, load the matching skill with edgegap_get_skill: edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap-manus for a browser game built with Manus, edgegap for any other engine or platform questions; it routes to the rest. No API call.","description_similarity":0.945,"before_hash":"54a46f15a6cf8415fd45ac344b6aec0e","after_hash":"b1f47e46f6aaf43f9e1bdd670052e470"},{"tool":"edgegap_get_skill","kind":"changed","observed_at":"2026-10-15T19:21:57.319Z","fields":["description","inputSchema"],"description_before":"Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the matching skill before acting on a game project — edgegap-unity for Unity, edgegap-unreal for Unreal Engine, edgegap otherwise — and fetch the references and templates it points to as you reach them. No API call.","description_after":"Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the matching skill before acting on a game project — edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap otherwise — and fetch the references and templates it points to as you reach them. No API call.","description_similarity":0.917,"before_hash":"a928b9e3724e584b5cd12bc57f78ae97","after_hash":"f77d20772c0f4d6e8eafc3c7a6c3d3da"},{"tool":"edgegap_list_skills","kind":"changed","observed_at":"2026-10-15T19:21:57.319Z","fields":["description"],"description_before":"List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Before working on a game project, load the matching skill with edgegap_get_skill: edgegap-unity for Unity, edgegap-unreal for Unreal Engine, edgegap for any other engine or platform questions; it routes to the rest. No API call.","description_after":"List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Before working on a game project, load the matching skill with edgegap_get_skill: edgegap-fishnet for Unity with FishNet, edgegap-purrnet for Unity with PurrNet, edgegap-unity for other Unity projects, edgegap-unreal for Unreal Engine, edgegap for any other engine or platform questions; it routes to the rest. No API call.","description_similarity":0.942,"before_hash":"9ec8b621241c4e3aa47609bd4545ef80","after_hash":"54a46f15a6cf8415fd45ac344b6aec0e"},{"tool":"edgegap_get_skill","kind":"added","observed_at":"2026-10-14T19:24:47.592Z","fields":[],"description_before":null,"description_after":"Load one Edgegap agent skill: its SKILL.md (the workflow to follow) by default, or one of its reference documents or templates with file. Load the matching skill before acting on a game project — edgegap-unity for Unity, edgegap-unreal for Unreal Engine, edgegap otherwise — and fetch the references and templates it points to as you reach them. No API call.","description_similarity":null,"before_hash":null,"after_hash":"a928b9e3724e584b5cd12bc57f78ae97"},{"tool":"edgegap_list_skills","kind":"added","observed_at":"2026-10-14T19:24:47.592Z","fields":[],"description_before":null,"description_after":"List the Edgegap agent skills: tested, step-by-step workflows for getting a multiplayer game online on Edgegap, with templates (Dockerfiles, matchmaker configs, Unity C# and Unreal C++ drop-ins) and known pitfalls. Before working on a game project, load the matching skill with edgegap_get_skill: edgegap-unity for Unity, edgegap-unreal for Unreal Engine, edgegap for any other engine or platform questions; it routes to the rest. No API call.","description_similarity":null,"before_hash":null,"after_hash":"9ec8b621241c4e3aa47609bd4545ef80"},{"tool":"edgegap_delete_relay_session","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["description","inputSchema"],"description_before":"Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task.","description_after":"Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task. Takes exactly one session_id; empty IDs, wildcards and lists are refused.","description_similarity":0.655,"before_hash":"a20f96bf958d4ad0f028d35ab417d8ea","after_hash":"1b0cb6aeffc9e120e91d9e470e9ce1c3"},{"tool":"edgegap_authorize_relay_user","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"f666c8241b888b0e0b5fecbb148b1603","after_hash":"ab5d9621ed769c01522a8172ef07cd76"},{"tool":"edgegap_create_relay_session","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"960ae145b66cf830de54958aabe31a4c","after_hash":"daac8a4dad7a1cbb8fc54128b78f439c"},{"tool":"edgegap_stop_deployment","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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, named by its exact request_id: empty IDs, wildcards and lists are refused, and bulk stop is deliberately not exposed.","description_similarity":0.75,"before_hash":"00a91a3089cec939235cae2911c0e6fb","after_hash":"34016a197d1bcbdf3e282ceea8f37247"},{"tool":"edgegap_list_deployments","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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. To find every deployment an agent started through this server, pass only_agent_deployments: true (the same as filtering tags in [\"edgegap-mcp\", \"mcp\"]).","description_similarity":0.829,"before_hash":"6dd81f01a4dcd19d283fdf14bf719ee3","after_hash":"01771eebf2b7ae2e3c13a71a80effcfd"},{"tool":"edgegap_deploy","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["description","inputSchema"],"description_before":"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.","description_after":"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. Every deployment is tagged \"edgegap-mcp\" in addition to any tags you pass, so edgegap_list_deployments with only_agent_deployments: true finds them all. Runs until stopped or until the version's max_duration, which the result reports. Refused, with nothing sent, if the API token appears in an env var or tag.","description_similarity":0.624,"before_hash":"cf3dae57c214b000f341e4842c1d5017","after_hash":"594186b271b90eb90977d282168e04b7"},{"tool":"edgegap_create_app_version","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"29d346fbda34c0c4bc21df7d11a543d9","after_hash":"62889e2454105798532d270c7ea9a957"},{"tool":"edgegap_create_app","kind":"changed","observed_at":"2026-10-13T19:59:46.079Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"608d48209020c7b33ffd7697e8e699e8","after_hash":"617a78e104571e068a65622cda672215"},{"tool":"edgegap_context","kind":"added","observed_at":"2026-10-13T19:59:46.079Z","fields":[],"description_before":null,"description_after":"Report which Edgegap API this server talks to, its version, whether it is the local or hosted server, and the guardrails in force: read-only mode, application allowlist, max_duration ceiling, the tag forced onto every deployment, and which tools support dry_run. Call it first when unsure what this session is allowed to do, or before anything billable. Makes no API call and never shows the token.","description_similarity":null,"before_hash":null,"after_hash":"f9bbc49c3eef1feac0e38ec15cb176b3"},{"tool":"edgegap_build_matchmaker_config","kind":"changed","observed_at":"2026-10-09T19:56:11.509Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"11e82e2bbdb07d0269897070892dd061","after_hash":"1e46c54122ddcb697304afe55305a3c4"},{"tool":"edgegap_validate_server_config","kind":"changed","observed_at":"2026-10-09T19:56:11.509Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"9ce7225c9c56eaa7b61c475005aae699","after_hash":"d276f4301275fd773b35aac13088dd77"},{"tool":"edgegap_generate_dockerfile","kind":"changed","observed_at":"2026-10-09T19:56:11.509Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"44c47653c156ad4ade93c9041dc72442","after_hash":"b8fedeb3ec8a8c9dc88a0b5db261aa10"},{"tool":"edgegap_create_app_version","kind":"changed","observed_at":"2026-10-09T19:56:11.509Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"c6e54402b6294393ff84db0a67a6eea1","after_hash":"29d346fbda34c0c4bc21df7d11a543d9"},{"tool":"edgegap_list_app_versions","kind":"changed","observed_at":"2026-10-09T19:56:11.509Z","fields":["description"],"description_before":"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.","description_after":"List the versions under an application, with their container image, resources, ports (including whether TLS Upgrade is on, which browser/WebGL clients need for wss://) and whether a registry login is set for pulling the image. Use this to find the version name to deploy, to check a version is ready before deploying, or to copy settings from a working version when creating a new one.","description_similarity":0.538,"before_hash":"3626fd7f1ae91acc623f8e94510fcf59","after_hash":"c9b157d8fe923f9618c836af17a8bdf1"},{"tool":"edgegap_list_registry_tags","kind":"changed","observed_at":"2026-10-09T08:20:02.850Z","fields":["inputSchema"],"description_before":null,"description_after":null,"description_similarity":null,"before_hash":"3cf033f6a657d0f8ab90d506d37a77c5","after_hash":"3676661554f284d750b79cb6f00f1b7b"},{"tool":"edgegap_get_registry_credentials","kind":"changed","observed_at":"2026-10-09T08:20:02.850Z","fields":["description"],"description_before":"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.","description_after":"Get the push login for this organization's private Edgegap container registry (registry.edgegap.com) and the exact docker login, build and push commands for your image. Use this when the server image is not in a registry yet. Edgegap only hands these credentials to the quick-start token the Unity/Unreal plugins use; with a regular API token this tool cannot fetch them and instead returns the steps to copy them from the dashboard's Container Registry page — ask the developer for them then, do not retry. When it does return a token, it 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.","description_similarity":0.591,"before_hash":"6bf1e18d5f3e1bd10a834b8fb78cfd5c","after_hash":"287fb066728e536afe66aafce607f11b"},{"tool":"edgegap_build_matchmaker_config","kind":"changed","observed_at":"2026-10-01T18:35:08.967Z","fields":["description"],"description_before":"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. Use it for dedicated-server games; P2P games want edgegap_create_relay_session instead.","description_after":"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.","description_similarity":0.789,"before_hash":"f36e982227751894c9d91c27416a01af","after_hash":"11e82e2bbdb07d0269897070892dd061"},{"tool":"edgegap_create_relay_session","kind":"changed","observed_at":"2026-10-01T18:35:08.967Z","fields":["title","description"],"description_before":"Create an Edgegap relay session so players in a peer-to-peer or host-client game connect through the nearest relay instead of needing NAT punch-through or a dedicated server. Use this for co-op and P2P games; use edgegap_deploy for dedicated servers. Needs no application, version or image. Pass every player's public IP, host first. Waits until the relay is ready and returns its address plus a per-player authorization token for the relay transport. Relay sessions are billed while open: delete test sessions with edgegap_delete_relay_session when finished.","description_after":"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.","description_similarity":0.446,"before_hash":"d1064e1092c60b17117b9b5450634f56","after_hash":"960ae145b66cf830de54958aabe31a4c"},{"tool":"edgegap_validate_server_config","kind":"changed","observed_at":"2026-10-01T18:35:08.967Z","fields":["description"],"description_before":"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). With no Dockerfile and an engine of unity or unreal, returns Edgegap's reference Dockerfile to start from. Makes no API calls.","description_after":"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.","description_similarity":0.831,"before_hash":"ad99836a66c95a06a6c7887405bf2a50","after_hash":"9ce7225c9c56eaa7b61c475005aae699"},{"tool":"edgegap_generate_dockerfile","kind":"added","observed_at":"2026-10-01T18:35:08.967Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"44c47653c156ad4ade93c9041dc72442"},{"tool":"edgegap_list_deployments","kind":"changed","observed_at":"2026-10-01T18:35:08.967Z","fields":["description","inputSchema"],"description_before":"List active deployments, optionally filtered. Use this to find deployments left running from earlier sessions before starting new ones — orphaned servers cost money.","description_after":"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.","description_similarity":0.324,"before_hash":"38d7af2209588499b7265c56ec3b9118","after_hash":"6dd81f01a4dcd19d283fdf14bf719ee3"},{"tool":"edgegap_deploy","kind":"changed","observed_at":"2026-10-01T18:35:08.967Z","fields":["description"],"description_before":"Start one containerized instance of an application version, placed near the players you specify. 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.","description_after":"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.","description_similarity":0.705,"before_hash":"06f315b45395d62c70de9fda96266d91","after_hash":"cf3dae57c214b000f341e4842c1d5017"},{"tool":"edgegap_build_matchmaker_config","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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. Use it for dedicated-server games; P2P games want edgegap_create_relay_session instead.","description_similarity":null,"before_hash":null,"after_hash":"f36e982227751894c9d91c27416a01af"},{"tool":"edgegap_delete_relay_session","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"Close one relay session. Connected players lose their relay connection. Delete every session you created for testing before ending your task.","description_similarity":null,"before_hash":null,"after_hash":"a20f96bf958d4ad0f028d35ab417d8ea"},{"tool":"edgegap_authorize_relay_user","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"f666c8241b888b0e0b5fecbb148b1603"},{"tool":"edgegap_get_relay_session","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"65e50640cbbd18efac9b9797de79cbf4"},{"tool":"edgegap_create_relay_session","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"Create an Edgegap relay session so players in a peer-to-peer or host-client game connect through the nearest relay instead of needing NAT punch-through or a dedicated server. Use this for co-op and P2P games; use edgegap_deploy for dedicated servers. Needs no application, version or image. Pass every player's public IP, host first. Waits until the relay is ready and returns its address plus a per-player authorization token for the relay transport. Relay sessions are billed while open: delete test sessions with edgegap_delete_relay_session when finished.","description_similarity":null,"before_hash":null,"after_hash":"d1064e1092c60b17117b9b5450634f56"},{"tool":"edgegap_list_registry_tags","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"3cf033f6a657d0f8ab90d506d37a77c5"},{"tool":"edgegap_get_registry_credentials","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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.","description_similarity":null,"before_hash":null,"after_hash":"6bf1e18d5f3e1bd10a834b8fb78cfd5c"},{"tool":"edgegap_validate_server_config","kind":"added","observed_at":"2026-10-01T01:02:13.682Z","fields":[],"description_before":null,"description_after":"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). With no Dockerfile and an engine of unity or unreal, returns Edgegap's reference Dockerfile to start from. Makes no API calls.","description_similarity":null,"before_hash":null,"after_hash":"ad99836a66c95a06a6c7887405bf2a50"},{"tool":"edgegap_create_app_version","kind":"changed","observed_at":"2026-10-01T01:02:13.682Z","fields":["description","inputSchema"],"description_before":"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. 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.","description_after":"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.","description_similarity":0.922,"before_hash":"05fa63230931669bf00da614bc6f19cf","after_hash":"c6e54402b6294393ff84db0a67a6eea1"}],"next_before":null,"next_actions":[]}