{
  "server": {
    "name": "signals-subtractions",
    "version": "0.3.0",
    "description": "Read-only MCP server over the Signals & Subtractions archive: episodes, transcripts, every published signal and subtraction pair, and every takeaway with its schema and copy-paste prompt.",
    "transport": "stdio",
    "tools": [
      {
        "name": "list_episodes",
        "description": "List every shipped episode of Signals & Subtractions: number, title, date, duration, cast, and platform URLs.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      {
        "name": "get_episode",
        "description": "Get the full record for one episode by number: cast, lede, signals, subtractions, and every platform URL.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "episode": {
              "type": "number",
              "description": "Episode number (e.g. 1, 6)"
            }
          },
          "required": [
            "episode"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "get_transcript",
        "description": "Get the full transcript of an episode as plain text, one timestamped speaker turn per line.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "episode": {
              "type": "number",
              "description": "Episode number (e.g. 1, 6)"
            }
          },
          "required": [
            "episode"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "search_pairs",
        "description": "Search every signal + subtraction pair the newsletter has published (one continuous issue counter from 001) by keyword. An empty query lists all pairs.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Keyword to match against issue title, signal, and subtraction. Empty string returns every pair."
            }
          },
          "required": [
            "query"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "search_transcripts",
        "description": "Search every timestamped speaker turn of every published episode transcript by keyword. Each match carries the episode, speaker, timestamp, transcript URL, and a video URL that jumps to the moment.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "query": {
              "type": "string",
              "description": "Keyword to match against transcript text (case-insensitive substring)."
            },
            "episode": {
              "type": "number",
              "description": "Optional: restrict the search to one episode number."
            }
          },
          "required": [
            "query"
          ],
          "additionalProperties": false
        }
      },
      {
        "name": "list_takeaways",
        "description": "List every published takeaway of Signals & Subtractions: a one-page method with a JSON schema and a copy-paste prompt. Returns slug, title, method, shape, stage, page URL, and the episode it shipped with.",
        "inputSchema": {
          "type": "object",
          "properties": {},
          "additionalProperties": false
        }
      },
      {
        "name": "get_takeaway",
        "description": "Get one takeaway by slug: its page fields plus the parsed JSON schema and the copy-paste prompt, verbatim, ready to run with any model.",
        "inputSchema": {
          "type": "object",
          "properties": {
            "slug": {
              "type": "string",
              "description": "Takeaway slug, the last path segment of its page URL (e.g. pilot-kill-card). list_takeaways gives every slug."
            }
          },
          "required": [
            "slug"
          ],
          "additionalProperties": false
        }
      }
    ]
  },
  "install": {
    "download": "https://sigsub.show/mcp-server.mjs",
    "run": "node mcp-server.mjs",
    "register": "claude mcp add sigsub -- node /path/to/mcp-server.mjs",
    "requires": "Node 18 or later, no dependencies. Run outside a repository clone it reads the live API."
  },
  "data": {
    "api_index": "https://sigsub.show/api/v1/index.json",
    "takeaways": "https://sigsub.show/api/v1/takeaways.json",
    "episodes": "https://sigsub.show/api/v1/episodes.json"
  },
  "documentation": "https://sigsub.show/machine-readable/",
  "assistant_guide": "https://sigsub.show/.well-known/assistant-guide.txt",
  "rights": "https://sigsub.show/rights/",
  "publisher": {
    "name": "Snap Synapse LLC",
    "url": "https://snapsynapse.com/"
  }
}
