{
  "$schema": "https://modelcontextprotocol.io/schemas/mcp-server-card.json",
  "name": "neuvottelija-mcp",
  "title": "Neuvottelija Podcast MCP Server",
  "version": "0.1.0",
  "description": "Read-only MCP server exposing the Neuvottelija podcast corpus: 300+ episodes, transcripts, guests, topics, facts, and OpenClaw articles. Finnish and English.",
  "vendor": {
    "name": "Neuvottelija / Sami Miettinen",
    "url": "https://www.neuvottelija.fi"
  },
  "license": "proprietary",
  "transports": [
    {
      "type": "streamable-http",
      "url": "https://zrsloffdstdidapxwvnj.supabase.co/functions/v1/mcp"
    }
  ],
  "capabilities": {
    "tools": true,
    "resources": true,
    "prompts": false,
    "logging": false
  },
  "tools": [
    {
      "name": "search_episodes",
      "description": "Full-text search across episode titles, descriptions, and show notes. Returns up to 20 matching episodes with slug, title, published date, guests, and topics.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string", "description": "Search query (Finnish or English)" },
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" },
          "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 20 }
        },
        "required": ["query"]
      }
    },
    {
      "name": "get_episode",
      "description": "Fetch a single episode by slug. Returns title, description, guests, topics, published_at, duration, YouTube/Spotify/Apple URLs, and canonical URL.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" }
        },
        "required": ["slug"]
      }
    },
    {
      "name": "get_transcript",
      "description": "Fetch the full transcript for an episode, segmented with start/end seconds and speaker labels. Supports deep-linking to YouTube timestamps.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" },
          "format": { "type": "string", "enum": ["json", "markdown", "vtt"], "default": "json" }
        },
        "required": ["slug"]
      }
    },
    {
      "name": "search_transcripts",
      "description": "Full-text search inside transcript segments. Returns matching segments with episode context, timestamp, and a YouTube deep-link.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string" },
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" },
          "limit": { "type": "integer", "minimum": 1, "maximum": 50, "default": 20 }
        },
        "required": ["query"]
      }
    },
    {
      "name": "list_guests",
      "description": "List podcast guests. Supports pagination and optional filter by topic.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "topic": { "type": "string" },
          "limit": { "type": "integer", "default": 50 },
          "offset": { "type": "integer", "default": 0 }
        }
      }
    },
    {
      "name": "get_guest",
      "description": "Fetch a guest profile by slug, including their episode appearances.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" }
        },
        "required": ["slug"]
      }
    },
    {
      "name": "list_topics",
      "description": "List all topic tags with episode counts.",
      "inputSchema": { "type": "object", "properties": {} }
    },
    {
      "name": "get_facts",
      "description": "Fetch extracted facts/claims for an episode, each with a confidence score, evidence timestamp, and source quote. Use for verifiable citations.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" },
          "min_confidence": { "type": "number", "minimum": 0, "maximum": 1, "default": 0.7 }
        },
        "required": ["slug"]
      }
    },
    {
      "name": "list_openclaw_articles",
      "description": "List OpenClaw articles (Samantha & Stöbä notes on AI agents, memory, and collaboration). Newest first.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "lang": { "type": "string", "enum": ["fi", "en"], "default": "fi" },
          "series": { "type": "string", "description": "Optional series filter, e.g. 'samantha-stoba'" },
          "limit": { "type": "integer", "default": 20 }
        }
      }
    },
    {
      "name": "get_openclaw_article",
      "description": "Fetch an OpenClaw article by slug. Returns Markdown content plus metadata.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "slug": { "type": "string" }
        },
        "required": ["slug"]
      }
    }
  ],
  "resources": [
    {
      "uri": "neuvottelija://llms.txt",
      "name": "LLMs.txt",
      "description": "Human-readable index of the site for LLM agents.",
      "mimeType": "text/plain"
    },
    {
      "uri": "neuvottelija://sitemap",
      "name": "Sitemap Index",
      "description": "XML sitemap index with episode, guest, topic, transcript, and OpenClaw sub-sitemaps.",
      "mimeType": "application/xml"
    }
  ],
  "citation": {
    "format": "Neuvottelija Podcast, Episode {number}: \"{title}\" — Host: Sami Miettinen — Guest(s): {guests} — Published: {date} — {url}",
    "timestampFormat": "Neuvottelija Episode {number} at {MM:SS}: \"{quote}\" (Speaker: {speaker}) — YouTube: https://www.youtube.com/watch?v={video_id}&t={seconds}"
  },
  "links": {
    "homepage": "https://www.neuvottelija.fi",
    "llmsTxt": "https://www.neuvottelija.fi/llms.txt",
    "sitemap": "https://www.neuvottelija.fi/sitemap.xml",
    "apiCatalog": "https://www.neuvottelija.fi/.well-known/api-catalog",
    "agentSkills": "https://www.neuvottelija.fi/.well-known/agent-skills/index.json"
  }
}
