You're viewing a demo portfolio

Join the waitlist
PRSM

select_surface

Active

Tool of cloud.redu/mcp

declared in 2.0.0

For a repo with SEVERAL runnable parts, call this BEFORE plan_deploy. You enumerate the candidate surfaces (find every Dockerfile/Containerfile, OPEN each, classify by its EXPOSE + CMD — never by directory name) and pass them in; redu RANKS them with fixed rules (a standalone browser desktop/noVNC > a self-contained web app > a keys-required playground > an API > a headless worker > docs/examples). GUIDED: returns the ranked list to present to the user, who picks. YOLO: auto-selects the TOP-ranked surface. Then run plan_deploy on the chosen surface's path + http_port. (A single-surface repo doesn't need this.)

Parameters schema

{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "surfaces"
  ],
  "properties": {
    "mode": {
      "enum": [
        "guided",
        "yolo"
      ],
      "type": "string",
      "description": "Drive mode; omit to use the session's sticky mode."
    },
    "surfaces": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "path",
          "kind"
        ],
        "properties": {
          "kind": {
            "enum": [
              "browser-desktop",
              "web-app",
              "static-site",
              "api",
              "headless-worker",
              "docs",
              "example",
              "library",
              "unknown"
            ],
            "type": "string",
            "description": "What this surface IS, judged by OPENING its Dockerfile (EXPOSE + CMD/start script) — NOT by the directory name. 'browser-desktop' = a GUI/desktop streamed over noVNC/VNC/KasmVNC/Xvfb (a dir named xfce/kasm/sandbox whose Dockerfile runs noVNC IS this). 'web-app' = a browser app/UI a user uses. 'static-site' = static/marketing. 'api' = backend, no UI. 'headless-worker' = no HTTP UI. 'docs' = documentation. 'example'/'library' = not the product."
          },
          "path": {
            "type": "string",
            "description": "Directory of this surface, e.g. 'libs/xfce' or '.' for the repo root."
          },
          "exposes": {
            "type": "array",
            "items": {
              "type": "integer"
            },
            "description": "All ports the Dockerfile EXPOSEs (e.g. [5901,6901]) — pass them so the deploy publishes http_port, not the lowest."
          },
          "summary": {
            "type": "string",
            "description": "One line: what a user does at this surface."
          },
          "http_port": {
            "type": "integer",
            "maximum": 65535,
            "minimum": 1,
            "description": "The port a user opens in the browser for this surface (the web/noVNC port, e.g. 6901 for an xfce noVNC desktop — NOT a raw VNC/debug port)."
          },
          "needs_external_keys": {
            "type": "boolean",
            "default": false,
            "description": "TRUE if this surface is INERT until the VISITOR supplies their own API key or an external backend/sandbox (e.g. an agent 'playground' that needs an LLM key + a cloud sandbox). Such a surface is heavily demoted vs one that works standalone."
          }
        },
        "additionalProperties": false
      },
      "minItems": 1,
      "description": "EVERY runnable surface you found (run `find . -name Dockerfile -o -name Containerfile`, open each). Be exhaustive — a missed browser-desktop subdir is the #1 cause of a wrong pick."
    }
  },
  "additionalProperties": false
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.50.

Parent server

cloud.redu/mcp

1/7 registries
View full server →
select_surface — cloud.redu/mcp — PRSM MCP