{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "fluids-digital",
    "title": "FLUIDS Digital",
    "version": "1.0.0"
  },
  "description": "Search and read the FLUIDS Digital website, list services, projects and FAQs, see open intro-call slots and create a one-time booking link.",
  "iconUrl": "https://fluids.digital/icon-512.png",
  "documentationUrl": "https://fluids.digital/auth.md",
  "url": "https://digital.fluids.sa/mcp",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://digital.fluids.sa/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "instructions": "FLUIDS Digital is a Saudi software studio that builds apps, web platforms and MVPs. Use search_site or get_page to answer from the published site; list_services, list_projects and search_faqs for structured answers; check_availability then book_intro_call to schedule the 30-minute intro call (the person confirms the time). Never invent prices, timelines or clients.",
  "tools": [
    {
      "name": "search_site",
      "title": "Search the FLUIDS Digital website",
      "description": "Search every published page of fluids.digital (services, MVP development and guides, booking/marketplace/SaaS/private-app pages, industries, use cases, comparisons, projects, FAQ) in English or Arabic. Returns the best-matching passages with their page URLs.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "What to look for, in natural language. English or Arabic."
          },
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "ar"
            ],
            "description": "Restrict results to one language."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 10,
            "description": "Maximum results (default 5)."
          }
        },
        "required": [
          "query"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_page",
      "title": "Read a page as Markdown",
      "description": "Return the full content of one fluids.digital page as Markdown. Accepts a path such as /mvp-development/cost or /ar/booking-apps, or a full fluids.digital URL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "description": "Page path or URL on fluids.studio."
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_pages",
      "title": "List published pages",
      "description": "List every published fluids.digital page with its title, description and URL, optionally for one language.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": {
            "type": "string",
            "enum": [
              "en",
              "ar"
            ],
            "description": "Only pages in this language."
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_company_facts",
      "title": "Company facts",
      "description": "Verified facts about FLUIDS Digital: legal name, commercial registration, location, services, languages, contact channels, how engagements are priced, and the related FLUIDS websites.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_booking_link",
      "title": "Get the intro-call booking link",
      "description": "Return the public link where a person can choose a time for a 30-minute introductory call with FLUIDS Digital. For live open slots or a one-time link use check_availability and book_intro_call.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_services",
      "title": "List services",
      "description": "List the services Fluids Digital offers, with what's included, who it's for, and the process, in English or Arabic.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "lang": {
            "description": "Language of the returned text (default en).",
            "type": "string",
            "enum": [
              "en",
              "ar"
            ]
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "list_projects",
      "title": "List projects",
      "description": "List Fluids Digital portfolio projects, optionally filtered by kind (product, site, mobile).",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "kind": {
            "description": "Filter by project kind.",
            "type": "string",
            "enum": [
              "product",
              "site",
              "mobile"
            ]
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_faqs",
      "title": "Search FAQs",
      "description": "Search Fluids Digital's frequently asked questions by keyword (English or Arabic); returns all if no query.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "query": {
            "description": "Keyword to match in questions or answers.",
            "type": "string"
          },
          "lang": {
            "description": "Language of the returned text (default en).",
            "type": "string",
            "enum": [
              "en",
              "ar"
            ]
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "check_availability",
      "title": "Check intro call availability",
      "description": "Show the real open time slots for a 30-minute intro call with Fluids Digital. Times are returned in ISO with the studio's timezone noted (Asia/Riyadh, UTC+3). Range is capped at 7 days.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "start_date": {
            "description": "First day to look at, YYYY-MM-DD (default: today, UTC).",
            "type": "string",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
          },
          "days": {
            "description": "How many days ahead to look, 1-7 (default 7).",
            "type": "integer",
            "minimum": 1,
            "maximum": 7
          }
        },
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": true,
        "idempotentHint": true,
        "openWorldHint": true
      }
    },
    {
      "name": "book_intro_call",
      "title": "Book intro call",
      "description": "Create a one-time booking link for the 30-minute intro call with Fluids Digital (Calendly, account hello@fluids.studio). Give the returned link to the person who wants the call — they pick a time and confirm. Use `check_availability` first to show open slots. Each link works exactly once.",
      "inputSchema": {
        "type": "object",
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {},
        "additionalProperties": false
      },
      "annotations": {
        "readOnlyHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    }
  ]
}
