{
  "$schema": "https://modelcontextprotocol.io/schemas/draft/server-card.json",
  "name": "hotfix",
  "displayName": "Hotfix — Engineering Reality by Imagen AI",
  "description": "The Hotfix catalog: a Hebrew-language engineering podcast by Imagen AI, its internal meetup talks, and the speakers who appear on them. The primary programmatic interface to hotfix.co.il, with an inline view for rendering results. No authentication.",
  "version": "1.0.0",
  "serverUrl": "https://hotfix.co.il/mcp",
  "transport": "streamable-http",
  "protocolVersions": [
    "2025-06-18",
    "2025-03-26",
    "2024-11-05"
  ],
  "authentication": {
    "type": "none"
  },
  "icons": [
    {
      "src": "https://hotfix.co.il/android-chrome-512x512.png",
      "sizes": "512x512",
      "mimeType": "image/png"
    },
    {
      "src": "https://hotfix.co.il/android-chrome-192x192.png",
      "sizes": "192x192",
      "mimeType": "image/png"
    }
  ],
  "logo": "https://hotfix.co.il/hotfix_logo_large.webp",
  "websiteUrl": "https://hotfix.co.il/developers/",
  "documentationUrl": "https://hotfix.co.il/developers/",
  "privacyPolicyUrl": "https://hotfix.co.il/privacy-policy/",
  "termsOfServiceUrl": "https://hotfix.co.il/terms/",
  "provider": {
    "name": "Imagen AI",
    "url": "https://imagen-ai.com",
    "email": "support@imagen-ai.com"
  },
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": false,
    "sampling": false
  },
  "tools": [
    {
      "name": "search_catalog",
      "title": "Search the Hotfix catalog",
      "description": "Search everything Hotfix publishes - podcast episodes, internal Imagen AI meetup talks, and speaker profiles - by free text and optional topic tag. Matches Hebrew titles, descriptions and biographies plus English tags. Returns citable canonical URLs. This is the entry point: use it first, then fetch detail with get_episode, get_meetup_talk or get_speaker.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Free-text search over titles, descriptions, biographies and tags. Hebrew or English. Omit to list everything of the requested kind.",
            "maxLength": 200
          },
          "kind": {
            "type": "string",
            "description": "Which part of the catalog to search. \"episodes\" for podcast conversations, \"meetup_talks\" for deeper internal tech talks, \"speakers\" for people, \"all\" for every kind. Defaults to \"all\".",
            "enum": [
              "all",
              "episodes",
              "meetup_talks",
              "speakers"
            ]
          },
          "tag": {
            "type": "string",
            "description": "Restrict episodes and talks to one topic tag, e.g. \"production\", \"ai\", \"hiring\", \"culture\". Ignored when searching speakers. Omit for all tags.",
            "maxLength": 64
          },
          "limit": {
            "type": "integer",
            "description": "Maximum items to return per kind. Defaults to 10.",
            "minimum": 1,
            "maximum": 50
          }
        },
        "required": [],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Search the Hotfix catalog",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_episode",
      "title": "Get one Hotfix episode",
      "description": "Fetch a single Hotfix podcast episode by slug, returning the full Hebrew show notes, topic tags, guest speaker slugs, key takeaways, FAQ pairs, and the audio and YouTube links. Call search_episodes first to find the slug.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "maxLength": 128,
            "description": "Episode slug as returned by search_episodes, e.g. \"ep09-deleted-production-survived\"."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get one Hotfix episode",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_meetup_talk",
      "title": "Get one meetup talk",
      "description": "Fetch a single Imagen AI meetup talk by slug, returning its Hebrew title and abstract, intended audience, topic tags, speaker slugs and the YouTube recording id.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "maxLength": 128,
            "description": "Talk slug as returned by search_meetup_talks, e.g. \"generative-observability\"."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get one meetup talk",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_speaker",
      "title": "Get one speaker profile",
      "description": "Fetch a single speaker profile by slug, returning name, role, Hebrew biography, tech stack, LinkedIn URL, and the episodes and meetup talks they appear in.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": {
            "type": "string",
            "pattern": "^[a-z0-9-]+$",
            "maxLength": 128,
            "description": "Speaker slug as returned by search_speakers, e.g. \"ofek-azulay\"."
          }
        },
        "required": [
          "slug"
        ],
        "additionalProperties": false
      },
      "annotations": {
        "title": "Get one speaker profile",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "resources": [
    {
      "uri": "ui://hotfix/episode-browser",
      "name": "episode-browser",
      "title": "Hotfix episode browser",
      "description": "Inline MCP App view that renders Hotfix episodes returned by search_episodes as a readable, linkable list. Falls back to the public API when the host passes no tool output.",
      "mimeType": "text/html;profile=mcp-app"
    },
    {
      "uri": "hotfix://catalog/episodes",
      "name": "episodes",
      "title": "Hotfix podcast episodes",
      "description": "Every published Hotfix podcast episode with Hebrew title and show notes, publish date, tags, guest slugs, takeaways, FAQ pairs, and audio and YouTube links.",
      "mimeType": "application/json"
    },
    {
      "uri": "hotfix://catalog/meetup-talks",
      "name": "meetup-talks",
      "title": "Imagen AI meetup talks",
      "description": "Every published internal Imagen AI meetup talk with Hebrew title and abstract, tags, intended audience, speaker slugs and the YouTube recording id.",
      "mimeType": "application/json"
    },
    {
      "uri": "hotfix://catalog/speakers",
      "name": "speakers",
      "title": "Hotfix speaker profiles",
      "description": "Every speaker featured on Hotfix: name, role, Hebrew biography, tech stack, LinkedIn URL and canonical profile URL.",
      "mimeType": "application/json"
    },
    {
      "uri": "hotfix://catalog/listen-links",
      "name": "listen-links",
      "title": "Where to listen to Hotfix",
      "description": "Every place Hotfix can be heard or watched - YouTube channel, Spotify, Apple Podcasts and the canonical RSS feed - plus the publish cadence and current catalog counts. Static reference data, so it is a resource rather than a tool.",
      "mimeType": "application/json"
    }
  ]
}
