{
  "schemaVersion": "2025-11-25",
  "protocolVersion": "2025-11-25",
  "protocol_versions_supported": ["2025-11-25", "2025-06-18"],
  "primitives": ["tools", "resources", "prompts"],
  "name": "ensakidag",
  "version": "1.0.0",
  "mcp_manifest": "https://ensakidag.se/.well-known/mcp.json",
  "public_key": "https://ensakidag.se/.well-known/ensakidag-mcp-public-key.json",
  "description": "Joakim Jardenbergs #ensakidag - nio år av dagliga 5-minuters förklaringar om teknik, internet och AI, med AI-redaktionell kommentar och facit i efterhand.",
  "vendor": {
    "name": "Studio Jardenberg",
    "url": "https://ensakidag.se",
    "contact": "joakim@jardenberg.com"
  },
  "license": { "spdx": "CC-BY-4.0", "attribution": "#ensakidag av Joakim Jardenberg" },
  "endpoint": { "url": "https://ensakidag.se/api/mcp", "transport": "streamable-http", "auth": "none" },
  "rateLimit": { "requests": 60, "windowSeconds": 300, "scope": "per-ip" },
  "tools": [
    {
      "name": "search_episodes",
      "description": "Hybrid sökning över #ensakidag-avsnitt: semantisk (pgvector över transkript-chunks, openai/text-embedding-3-small @ 384d via Lovable AI Gateway) sammanslagen med svensk fulltext via reciprocal rank fusion. Korta frågor (<=2 ord) viktas mot lexikalisk match. Returnerar rankade avsnitt med snippet, facit-betyg och kanonisk URL på ensakidag.se.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Sökfras (svensk fulltext)." },
          "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 10 },
          "year": { "type": "integer", "description": "Filtrera på publiceringsår." },
          "topic": { "type": "string", "description": "Filtrera på temaslug (se list_topics)." }
        },
        "required": ["query"]
      }
    },
    {
      "name": "get_episode",
      "description": "Hämta ett helt avsnitt: JJ:s beskrivning och transkript, plus AI-lagret (faktaruta, 2026-uppdatering, bedömning, guldkorn, kopplingar), teman och kanonisk URL.",
      "inputSchema": {
        "type": "object",
        "properties": { "number": { "type": "integer", "description": "Avsnittsnummer." } },
        "required": ["number"]
      }
    },
    {
      "name": "list_topics",
      "description": "Lista alla teman med slug, etikett, antal avsnitt och kanonisk URL på ensakidag.se.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "get_topic",
      "description": "Hämta ett tema: etikett, AI-syntes, höjdpunkter och alla avsnitt kopplade till temat, med kanonisk URL.",
      "inputSchema": {
        "type": "object",
        "properties": { "slug": { "type": "string" } },
        "required": ["slug"]
      }
    },
    {
      "name": "find_related",
      "description": "Hitta avsnitt relaterade till ett givet avsnitt via uttryckliga kopplingar (edges) och delade teman.",
      "inputSchema": {
        "type": "object",
        "properties": { "number": { "type": "integer" } },
        "required": ["number"]
      }
    },
    {
      "name": "list_latest",
      "description": "Lista de senaste avsnitten efter publiceringsdatum, med kanonisk URL.",
      "inputSchema": {
        "type": "object",
        "properties": { "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 10 } }
      }
    }
  ],
  "documentation": "https://ensakidag.se/llms.txt"
}
