_ registry / mcp http-sse · checked 1h ago

edgegap

https://mcp.edgegap.dev

Registry code: ff916a7c753002fe

api record

Host multiplayer games on Edgegap. The recommended setup is an authoritative dedicated server per match; relays exist for games built host-client.

Dedicated server vs relay — recommend a dedicated server by default.

endpoint
https://mcp.edgegap.dev/mcp
protocol
http-sse ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is edgegap live?
Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
Is edgegap free to use?
Yes — the hub reached it with no key and no payment.
What tools does edgegap have?
19 tools: edgegap_delete_relay_session, edgegap_create_app, edgegap_create_app_version, edgegap_deploy, edgegap_wait_for_deployment, edgegap_list_deployments, edgegap_stop_deployment, edgegap_get_deployment_logs, ….
Is edgegap safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.7%

90 days 99.4%· all time 99.4%

latency
1,023ms

last good check

priced tools
0

of 19 tools

_ answered our checks, 90 days 497 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • degraded → live
  • live → degraded· timeout after 20000ms
_ what it is for
used for
  • deploy dedicated multiplayer game servers
  • create relay sessions for players
  • read game server logs
  • generate matchmaker config
takes → gives
code, data → data
tools
11 reads8 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 19 tools
1 open 18 never probed 1 of 19 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • edgegap_validate_server_config reads open 12h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "port",
              "protocol"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "port": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": -9007199254740991
              },
              "protocol": {
                "type": "string"
              },
              "tls_upgrade": {
                "type": "boolean",
                "description": "TLS Upgrade (wss/https) on a WS or HTTP port, for browser clients."
              }
            }
          },
          "description": "Ports you plan to pass to edgegap_create_app_version."
        },
        "engine": {
          "enum": [
            "unity",
            "unreal",
            "godot",
            "other"
          ],
          "type": "string",
          "description": "Game engine. Detected from the Dockerfile when omitted."
        },
        "netcode": {
          "type": "string",
          "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."
        },
        "cpu_units": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "memory_mb": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991
        },
        "docker_tag": {
          "type": "string"
        },
        "dockerfile": {
          "type": "string",
          "description": "Full text of the Dockerfile."
        },
        "docker_image": {
          "type": "string"
        },
        "docker_repository": {
          "type": "string"
        }
      }
    }
    arguments 71 lines
  • edgegap_delete_relay_session changes data unknown never probed

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

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "session_id"
      ],
      "properties": {
        "session_id": {
          "type": "string"
        }
      }
    }
    arguments 12 lines
  • edgegap_create_app changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 64,
          "minLength": 3,
          "description": "Application name, 3-64 chars. Usually the game or project name."
        },
        "is_active": {
          "type": "boolean",
          "description": "Whether deployments are allowed. Default true."
        }
      }
    }
    arguments 19 lines
  • edgegap_create_app_version changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "application",
        "name",
        "docker_repository",
        "docker_image",
        "docker_tag",
        "cpu_units",
        "memory_mb",
        "ports"
      ],
      "properties": {
        "env": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "key",
              "value"
            ],
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "description": "Environment variables injected into the container."
        },
        "name": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Version identifier, typically a build ID or timestamp."
        },
        "ports": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "port",
              "protocol"
            ],
            "properties": {
              "name": {
                "type": "string",
                "description": "Label, e.g. \"gameport\"."
              },
              "port": {
                "type": "integer",
                "maximum": 59999,
                "minimum": 1,
                "description": "Port the server listens on."
              },
              "protocol": {
                "type": "string",
                "description": "One of UDP, TCP, TCP/UDP, HTTP, HTTPS, WS, WSS. Most game servers use UDP."
              },
              "to_check": {
                "type": "boolean",
                "description": "Readiness check on this port. Default true."
              },
              "tls_upgrade": {
                "type": "boolean",
                "description": "Edgegap terminates TLS on this port, so clients connect with wss:// or https://. Required for browser (WebGL) clients, which cannot use plain ws:// from an https page. WS and HTTP ports only. Default false."
              }
            }
          },
          "minItems": 1,
          "description": "Ports to expose. At least one is required for players to connect."
        },
        "cpu_units": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 256,
          "description": "vCPU units. 1024 = 1 vCPU."
        },
        "memory_mb": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 256,
          "description": "Memory in MB. At most 2x cpu_units."
        },
        "docker_tag": {
          "type": "string",
          "description": "Image tag. Use a build ID, not \"latest\"."
        },
        "application": {
          "type": "string",
          "description": "Existing application name."
        },
        "docker_image": {
          "type": "string",
          "description": "Namespaced image, e.g. \"mystudio/game-server\"."
        },
        "verify_image": {
          "type": "boolean",
          "description": "Verify Edgegap can pull the image before accepting the version."
        },
        "registry_token": {
          "type": "string",
          "description": "Registry password or token."
        },
        "docker_repository": {
          "type": "string",
          "description": "Registry host, e.g. \"docker.io\" or \"registry.edgegap.com\"."
        },
        "registry_username": {
          "type": "string",
          "description": "Registry username. Needed for private images, including images in your own registry.edgegap.com project: Edgegap pulls with this login, not your API token."
        },
        "max_duration_minutes": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": -9007199254740991,
          "description": "Auto-stop after this many minutes. Keeps test deployments from running up cost."
        }
      }
    }
    arguments 123 lines
  • edgegap_deploy changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "application",
        "version",
        "users"
      ],
      "properties": {
        "env": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "key",
              "value"
            ],
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              }
            }
          },
          "description": "Environment variables for this deployment only."
        },
        "tags": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Tags for filtering later, e.g. [\"agent-test\"]. Recommended."
        },
        "users": {
          "type": "object",
          "properties": {
            "ip_addresses": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "description": "Public IPv4/IPv6 addresses of the players. Edgegap places the server near them."
            },
            "geo_coordinates": {
              "type": "array",
              "items": {
                "type": "object",
                "required": [
                  "latitude",
                  "longitude"
                ],
                "properties": {
                  "latitude": {
                    "type": "number"
                  },
                  "longitude": {
                    "type": "number"
                  }
                }
              },
              "description": "Latitude/longitude pairs, as an alternative to IP addresses."
            }
          },
          "description": "Where the players are. Exactly one of these two is required."
        },
        "version": {
          "type": "string",
          "description": "Version name within the application."
        },
        "cpu_units": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 256,
          "description": "Override the version CPU."
        },
        "memory_mb": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 256,
          "description": "Override the version memory."
        },
        "application": {
          "type": "string",
          "description": "Application name."
        }
      }
    }
    arguments 89 lines
  • edgegap_wait_for_deployment reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "request_id"
      ],
      "properties": {
        "request_id": {
          "type": "string",
          "description": "The request_id returned by edgegap_deploy."
        },
        "timeout_seconds": {
          "type": "integer",
          "maximum": 600,
          "minimum": 5,
          "description": "How long to wait before giving up. Default 180."
        }
      }
    }
    arguments 19 lines
  • edgegap_list_deployments reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Default 50."
        },
        "filters": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "field",
              "operator",
              "value"
            ],
            "properties": {
              "field": {
                "enum": [
                  "status",
                  "request_id",
                  "tags",
                  "created_at",
                  "application",
                  "version",
                  "fleet_name",
                  "host_name"
                ],
                "type": "string"
              },
              "value": {
                "anyOf": [
                  {
                    "type": "string"
                  },
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                ],
                "description": "A string, or an array of strings for in/nin. created_at is ISO 8601, e.g. \"2026-09-30T00:00:00Z\"."
              },
              "operator": {
                "enum": [
                  "eq",
                  "neq",
                  "in",
                  "nin",
                  "gte",
                  "lte",
                  "ilike"
                ],
                "type": "string"
              }
            }
          },
          "description": "Omit for all deployments."
        },
        "order_by": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "field",
              "order"
            ],
            "properties": {
              "field": {
                "enum": [
                  "created_at",
                  "available_session_sockets"
                ],
                "type": "string"
              },
              "order": {
                "enum": [
                  "asc",
                  "desc"
                ],
                "type": "string"
              }
            }
          },
          "description": "e.g. [{field:\"created_at\",order:\"asc\"}] for oldest first."
        }
      }
    }
    arguments 92 lines
  • edgegap_stop_deployment changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "request_id"
      ],
      "properties": {
        "request_id": {
          "type": "string",
          "description": "The request_id of the deployment to stop."
        }
      }
    }
    arguments 13 lines
  • edgegap_get_deployment_logs reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "request_id"
      ],
      "properties": {
        "request_id": {
          "type": "string",
          "description": "The request_id of the deployment."
        },
        "max_characters": {
          "type": "integer",
          "maximum": 50000,
          "minimum": 500,
          "description": "Truncate logs to this length, keeping the tail. Default 8000."
        }
      }
    }
    arguments 19 lines
  • edgegap_get_registry_credentials reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "tag": {
          "type": "string",
          "description": "Unique build tag for the commands, e.g. a build ID. Never \"latest\"."
        },
        "image_name": {
          "type": "string",
          "pattern": "^[a-z0-9]+([._-][a-z0-9]+)*$",
          "description": "Image name without project or tag, e.g. \"my-game-server\". Used to build the commands."
        }
      }
    }
    arguments 15 lines
  • edgegap_create_relay_session changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "user_ips"
      ],
      "properties": {
        "user_ips": {
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 3
          },
          "minItems": 1,
          "description": "Public IP of each player, host first. Add late joiners with edgegap_authorize_relay_user."
        },
        "webhook_url": {
          "type": "string",
          "format": "uri",
          "description": "Called when the session is ready."
        },
        "timeout_seconds": {
          "type": "integer",
          "maximum": 120,
          "minimum": 5,
          "description": "Default 30."
        },
        "wait_until_ready": {
          "type": "boolean",
          "description": "Poll until the relay is assigned. Default true."
        }
      }
    }
    arguments 33 lines
  • edgegap_list_apps reads unknown 12h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1
        },
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Results per page. Default 50."
        }
      }
    }
    arguments 17 lines
  • edgegap_generate_dockerfile changes data unknown 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "engine"
      ],
      "properties": {
        "ports": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "port",
              "protocol"
            ],
            "properties": {
              "name": {
                "type": "string"
              },
              "port": {
                "type": "integer",
                "maximum": 59999,
                "minimum": 1
              },
              "protocol": {
                "enum": [
                  "UDP",
                  "TCP",
                  "TCP/UDP",
                  "HTTP",
                  "HTTPS",
                  "WS",
                  "WSS"
                ],
                "type": "string"
              },
              "tls_upgrade": {
                "type": "boolean",
                "description": "TLS Upgrade (wss/https) on a WS or HTTP port, for browser clients."
              }
            }
          },
          "description": "Ports the server listens on. Default: 7777, with the protocol the netcode uses (UDP if unknown)."
        },
        "engine": {
          "enum": [
            "unity",
            "unreal",
            "godot",
            "other"
          ],
          "type": "string",
          "description": "Game engine of the server build."
        },
        "netcode": {
          "type": "string",
          "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."
        },
        "base_image": {
          "type": "string",
          "description": "Default \"ubuntu:22.04\"."
        },
        "build_path": {
          "type": "string",
          "description": "Server build folder, relative to where docker build runs. Defaults: unity \"Builds/EdgegapServer\", unreal \".\" (run from inside the packaged LinuxServer folder), godot \"build\"."
        },
        "executable": {
          "type": "string",
          "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\"."
        },
        "launch_args": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Extra server arguments, one per entry, e.g. [\"-log\", \"-port=7777\"]."
        }
      }
    }
    arguments 79 lines
  • edgegap_get_relay_session reads unknown 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "session_id"
      ],
      "properties": {
        "session_id": {
          "type": "string",
          "description": "Returned by edgegap_create_relay_session."
        }
      }
    }
    arguments 13 lines
  • edgegap_get_deployment reads unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "request_id"
      ],
      "properties": {
        "request_id": {
          "type": "string",
          "description": "The request_id returned by edgegap_deploy."
        }
      }
    }
    arguments 13 lines
  • edgegap_authorize_relay_user changes data unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "session_id",
        "user_ip"
      ],
      "properties": {
        "user_ip": {
          "type": "string",
          "minLength": 3,
          "description": "Public IP of the joining player."
        },
        "session_id": {
          "type": "string"
        }
      }
    }
    arguments 18 lines
  • edgegap_list_registry_tags reads unknown 12h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "image_name"
      ],
      "properties": {
        "page": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1
        },
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "Default 20."
        },
        "image_name": {
          "type": "string",
          "minLength": 1,
          "description": "The image name only, without the project, registry host or tag, e.g. \"my-game-server\". The API reads the project from your token; \"<project>/my-game-server\" is not found."
        }
      }
    }
    arguments 25 lines
  • edgegap_list_app_versions reads unknown 1h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "application"
      ],
      "properties": {
        "application": {
          "type": "string",
          "description": "Application name, as returned by edgegap_list_apps."
        }
      }
    }
    arguments 13 lines
  • edgegap_build_matchmaker_config reads unknown 15h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "required": [
        "profile_name",
        "application",
        "version",
        "team_count",
        "min_team_size",
        "max_team_size"
      ],
      "properties": {
        "inspect": {
          "type": "boolean",
          "description": "Expose the inspection API for debugging. Default true; turn off for production."
        },
        "version": {
          "type": "string",
          "description": "Version the matchmaker deploys."
        },
        "expansions": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "after_seconds"
            ],
            "properties": {
              "after_seconds": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": 1
              },
              "min_team_size": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": 1
              },
              "max_latency_ms": {
                "type": "integer",
                "maximum": 9007199254740991,
                "minimum": 1
              }
            }
          },
          "description": "Rule relaxations after a player has waited this long, e.g. [{after_seconds: 30, min_team_size: 1}]."
        },
        "team_count": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Teams per match. 1 for free-for-all or co-op."
        },
        "application": {
          "type": "string",
          "description": "Application the matchmaker deploys."
        },
        "profile_name": {
          "type": "string",
          "description": "Profile clients will queue into, e.g. \"casual-2v2\"."
        },
        "max_team_size": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1
        },
        "min_team_size": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1
        },
        "max_latency_ms": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 1,
          "description": "Adds a latency rule: drop players above this ping to the chosen region. Needs beacon pings from the client."
        },
        "verify_version": {
          "type": "boolean",
          "description": "Look up the application version first. Default true."
        },
        "ticket_expiration": {
          "type": "string",
          "description": "Default \"5m\"."
        },
        "allowed_cors_origins": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Origins of web pages allowed to call the matchmaker, e.g. [\"https://mygame.example.com\", \"http://localhost:8080\"]. Required when game clients run in a browser (WebGL): browsers block matchmaker calls from any origin not listed. Scheme and host only, no path."
        },
        "latency_difference_ms": {
          "type": "integer",
          "maximum": 9007199254740991,
          "minimum": 0,
          "description": "Max ping spread between matched players. Default 100."
        }
      }
    }
    arguments 100 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id ff916a7c753002fe.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/ff916a7c753002fe/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/ff916a7c753002fe/badge.svg)](https://brick.blue/agent/ff916a7c753002fe?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.