{
  "name": "hausfold.co",
  "title": "hausfold",
  "description": "Install commands, release metadata and full-text docs search for hausfold's Mac software, as MCP tools. Public and unauthenticated; every tool reads data a plain GET could also fetch.",
  "version": "1.0.0",
  "websiteUrl": "https://hausfold.co/developers/",
  "url": "https://hausfold.co/mcp",
  "transport": "streamable-http",
  "authentication": "none",
  "capabilities": {
    "tools": true,
    "resources": false,
    "prompts": false
  },
  "servers": [
    {
      "name": "hausfold",
      "url": "https://hausfold.co/mcp",
      "transport": "streamable-http",
      "authentication": "none",
      "description": "Install commands, release metadata and docs search for hausfold's Mac software."
    },
    {
      "name": "hausfold-docs",
      "url": "https://hausfold.co/mcp/docs",
      "transport": "streamable-http",
      "authentication": "none",
      "description": "Full-text search of the hausfold documentation alone."
    }
  ],
  "tools": [
    {
      "name": "get_install_command",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "description": "Get the one-line install command for a hausfold desktop, with the card the gallery shows for it: who wrote it, what it is for, and the rooms it turns on. Answers with a `desktops` list either way: one row for the desktop you name, every row when you omit it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "desktop": {
            "type": "string",
            "enum": [
              "haus",
              "hacker",
              "producer"
            ],
            "description": "The desktop to install. Omit to list the whole gallery."
          }
        },
        "required": []
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "desktops": {
            "type": "array",
            "description": "One row per desktop asked for: the named one alone, or all of them. Always a list, so a caller reads the same shape either way.",
            "items": {
              "type": "object",
              "properties": {
                "desktop": {
                  "type": "string",
                  "enum": [
                    "haus",
                    "hacker",
                    "producer"
                  ]
                },
                "author": {
                  "type": "string",
                  "description": "Who publishes this desktop."
                },
                "blurb": {
                  "type": "string",
                  "description": "One sentence on what it is for."
                },
                "rooms": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "The rooms it switches on, by the name in haus's registry. Empty for the foundation, which switches none on."
                },
                "image": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "A screenshot URL, or null when there is none."
                },
                "flakeref": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "For a desktop in its own repo, the flakeref `--desktop=` takes. Null for one hausfold serves from its own URL."
                },
                "command": {
                  "type": "string",
                  "description": "The one-line installer to run."
                },
                "pins": {
                  "type": [
                    "string",
                    "null"
                  ],
                  "description": "The desktop this URL pins. Null for /haus.sh, which installs the foundation with no desktop, and null on a flakeref row, which has no URL here at all."
                },
                "note": {
                  "type": "string",
                  "description": "What running that line does."
                }
              },
              "required": [
                "desktop",
                "author",
                "blurb",
                "rooms",
                "image",
                "flakeref",
                "command",
                "pins",
                "note"
              ]
            }
          },
          "error": {
            "type": "object",
            "description": "Returned instead of the payload when the call failed. `isError` is set with it.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Machine-readable failure code, e.g. unknown_desktop, release_unavailable."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": false
          }
        },
        "anyOf": [
          {
            "required": [
              "desktops"
            ]
          },
          {
            "required": [
              "error"
            ]
          }
        ]
      }
    },
    {
      "name": "get_latest_release",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": true
      },
      "description": "Latest signed and notarized macOS release of a hausfold app: version tag, asset name, size, direct download URL, publish date.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "app": {
            "type": "string",
            "enum": [
              "pounce",
              "perch"
            ],
            "description": "A Mac app published by hausfold."
          }
        },
        "required": [
          "app"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tag": {
            "type": "string",
            "description": "The release tag, e.g. v2026.08.14."
          },
          "asset": {
            "type": "string",
            "description": "File name of the macOS artifact."
          },
          "size": {
            "type": "integer",
            "description": "Artifact size in bytes."
          },
          "url": {
            "type": "string",
            "format": "uri",
            "description": "Direct download URL for that artifact on GitHub."
          },
          "publishedAt": {
            "type": "string",
            "format": "date-time"
          },
          "error": {
            "type": "object",
            "description": "Returned instead of the payload when the call failed. `isError` is set with it.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Machine-readable failure code, e.g. unknown_desktop, release_unavailable."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": false
          }
        },
        "anyOf": [
          {
            "required": [
              "tag",
              "asset",
              "size",
              "url",
              "publishedAt"
            ]
          },
          {
            "required": [
              "error"
            ]
          }
        ]
      }
    },
    {
      "name": "search_docs",
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      },
      "description": "Full-text search of the hausfold documentation (haus, pounce, perch, trill, scruff). Returns page URLs, breadcrumbs and an excerpt per match.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "What to look for, e.g. notifications, keybindings, do not disturb."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 20,
            "default": 8,
            "description": "Maximum number of results."
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "The query as searched, echoed back."
          },
          "results": {
            "type": "array",
            "description": "Highest scoring first, at most `limit` of them.",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string",
                  "description": "Site-relative docs URL, e.g. /docs/haus/reference/options."
                },
                "breadcrumbs": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "description": "Where the section sits, outermost first."
                },
                "excerpt": {
                  "type": "string",
                  "description": "Text around the first match."
                },
                "score": {
                  "type": "number",
                  "description": "Relative rank within this result set only."
                }
              },
              "required": [
                "url",
                "breadcrumbs",
                "excerpt",
                "score"
              ]
            }
          },
          "error": {
            "type": "object",
            "description": "Returned instead of the payload when the call failed. `isError` is set with it.",
            "properties": {
              "code": {
                "type": "string",
                "description": "Machine-readable failure code, e.g. unknown_desktop, release_unavailable."
              },
              "message": {
                "type": "string",
                "description": "Human-readable explanation."
              }
            },
            "required": [
              "code",
              "message"
            ],
            "additionalProperties": false
          }
        },
        "anyOf": [
          {
            "required": [
              "query",
              "results"
            ]
          },
          {
            "required": [
              "error"
            ]
          }
        ]
      }
    }
  ]
}