{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "frzxw-portfolio",
    "title": "Fariz Wibisono, portfolio",
    "version": "1.0.0"
  },
  "description": "Read-only MCP server for Fariz Wibisono's portfolio: profile, experience, projects, posts, and any page as Markdown.",
  "documentationUrl": "https://frzxw.me/llms.txt",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://frzxw.me/mcp"
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "tools": [
    {
      "name": "get_profile",
      "title": "Profile",
      "description": "Who Fariz Wibisono is: title, summary, contact links, education, and skills.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_experience",
      "title": "Experience",
      "description": "Work experience: role, organization, dates, what was done, and the stack used.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_projects",
      "title": "Projects",
      "description": "Products with case studies, and websites. Returns ids to pass to get_page.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_posts",
      "title": "Posts",
      "description": "Blog posts with title, date, summary, and path.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "get_page",
      "title": "Page as Markdown",
      "description": "Any page of the site as Markdown, by path, for example /, /about, /projects/invictus, or /blog/<slug>.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "path": {
            "type": "string",
            "enum": [
              "/",
              "/projects",
              "/blog",
              "/about",
              "/contact",
              "/developers",
              "/privacy",
              "/projects/invictus",
              "/projects/content-pipeline",
              "/projects/sakola",
              "/projects/rasain",
              "/blog/a-portfolio-for-agents",
              "/blog/a-shared-brain-with-obsidian",
              "/blog/ai-as-leverage",
              "/blog/context-engineering",
              "/blog/designing-for-what-you-cant-know",
              "/blog/harness-engineering",
              "/blog/ledgers-not-balances",
              "/blog/measure-before-you-choose",
              "/blog/rebuild-or-refactor",
              "/blog/rust-strictness-and-agents"
            ],
            "description": "Site path of the page."
          }
        },
        "required": [
          "path"
        ],
        "additionalProperties": false
      }
    }
  ]
}