{
  "version": "1",
  "name": "Fréscopa Coffee",
  "description": "Fréscopa is a premium single-origin coffee brand. This manifest lists all pages on frescopa.aem-screens.net that expose WebMCP tools for AI agents.",
  "contact": "https://frescopa.aem-screens.net/contact",
  "pages": [
    {
      "url": "https://frescopa.aem-screens.net/recipes",
      "name": "Recipes",
      "description": "Fréscopa brewing and drink recipe catalogue. Filter, sort, and read step-by-step guides for coffee recipes including staff-exclusive content.",
      "tools": [
        {
          "name": "filterRecipes",
          "description": "Filter the recipe grid by category and/or difficulty level. Omit a parameter to leave that dimension unrestricted.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "category": {
                "type": "string",
                "description": "Recipe category",
                "enum": ["all", "Brewing Method", "Cold Coffee", "Specialty Drink", "Cultural Recipe"]
              },
              "difficulty": {
                "type": "string",
                "description": "Difficulty level",
                "enum": ["Easy", "Intermediate", "Advanced"]
              }
            }
          }
        },
        {
          "name": "sortRecipes",
          "description": "Change the sort order of the recipe grid.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "order": {
                "type": "string",
                "enum": ["default", "rating", "time-asc", "difficulty"]
              }
            },
            "required": ["order"]
          }
        },
        {
          "name": "getRecipeById",
          "description": "Return the complete data for a single recipe by its id, including ingredients, steps, tips, and recommended coffee. Also exposes staff-exclusive recipes not shown on the public page.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Recipe id. Call listRecipeSummaries to enumerate all available ids including staff-exclusive ones."
              }
            },
            "required": ["id"]
          }
        },
        {
          "name": "expandRecipe",
          "description": "Open the inline step-by-step detail panel for a specific recipe on the page.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "Recipe id to expand"
              }
            },
            "required": ["id"]
          }
        },
        {
          "name": "listRecipeSummaries",
          "description": "Return a lightweight list of all available recipes — including staff-exclusive ones not shown on the public page — with id, title, category, difficulty, total time, and rating.",
          "inputSchema": {
            "type": "object",
            "properties": {}
          }
        }
      ]
    },
    {
      "url": "https://frescopa.aem-screens.net/blog",
      "name": "Coffee Journal",
      "description": "Fréscopa's editorial blog covering coffee science, brewing technique, origins, and culture. Includes staff-exclusive unpublished articles.",
      "tools": [
        {
          "name": "filterArticlesByCategory",
          "description": "Filter the article grid to show only posts in a specific category.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "category": {
                "type": "string",
                "enum": ["all", "Science", "Brewing", "Origins", "Culture"]
              }
            },
            "required": ["category"]
          }
        },
        {
          "name": "searchArticles",
          "description": "Search Coffee Journal articles by keyword. Matches against title, excerpt, and tags.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "query": {
                "type": "string",
                "description": "Search term to match against article title, excerpt, and tags"
              }
            },
            "required": ["query"]
          }
        },
        {
          "name": "getArticleBySlug",
          "description": "Return full metadata for a single article by its slug. Also exposes staff-exclusive unpublished articles not shown on the public page.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "slug": {
                "type": "string",
                "description": "Article slug/id. Call listCategories to enumerate all available slugs including staff-exclusive ones."
              }
            },
            "required": ["slug"]
          }
        },
        {
          "name": "listCategories",
          "description": "Return all article categories with post counts. The Staff Exclusive category (count: 1) contains an unpublished article only accessible via getArticleBySlug.",
          "inputSchema": {
            "type": "object",
            "properties": {}
          }
        }
      ]
    }
  ]
}
