{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-11-25",
  "serverInfo": {
    "name": "com.rotomal/catalog",
    "title": "Rotomal product catalog",
    "version": "1.0.0"
  },
  "description": "Search and read Rotomal's product catalog: products, plans and prices, FAQs and guides. Read-only, no authentication.",
  "iconUrl": "https://rotomal.com/assets/logo.png",
  "documentationUrl": "https://rotomal.com/agents.md",
  "websiteUrl": "https://rotomal.com/",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://rotomal.com/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required": false
  },
  "tools": [
    {
      "name": "search_catalog",
      "title": "Search products",
      "description": "Search Rotomal's product catalog by keywords, category or language. Returns matching products with tagline, category, starting price and page URL. Call with no query to list everything.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Words to search for, e.g. 'e-invoicing germany', 'roof report', 'MCP'. Prefix match per word."
          },
          "category": {
            "type": "string",
            "description": "Exact category name, as returned by list_categories."
          },
          "language": {
            "type": "string",
            "enum": [
              "en",
              "de",
              "fr",
              "pl",
              "el",
              "he"
            ],
            "description": "Only pages written in this language."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "default": 10
          }
        }
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "lookup_catalog",
      "title": "Get product details",
      "description": "Full details for one product by slug: what it does, how it works, features, audience, plans and prices, FAQ, guides and the URL where a person can request it.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Product slug, e.g. 'smtp-switch' (from search_catalog)."
          },
          "locale": {
            "type": "string",
            "description": "Optional language variant, e.g. 'de' for /de/shelf-signal/. Omit for the main page."
          }
        },
        "required": [
          "slug"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_categories",
      "title": "List categories",
      "description": "All product categories with the number of products in each.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_guide",
      "title": "Read a guide",
      "description": "The full text (Markdown) of one guide: an answer-first article with sources, attached to a product. Guide slugs come from lookup_catalog.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "description": "Product slug."
          },
          "guide": {
            "type": "string",
            "description": "Guide slug."
          },
          "locale": {
            "type": "string",
            "description": "Optional language variant of the product."
          }
        },
        "required": [
          "slug",
          "guide"
        ]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ]
}
