{
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "tool": {
    "category": "data-providers",
    "endpoint": "https://mcp.techsnif.com",
    "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/techsnif-mcp.json",
    "kind": "mcp",
    "listed": "indexed",
    "liveUrl": "https://www.anchorterminal.com/api/v1/live/techsnif-mcp.json",
    "markdownUrl": "https://www.anchorterminal.com/tools/techsnif-mcp.md",
    "mcpTools": {
      "check": {
        "checker": "anchor-check/1.0",
        "totalTokens": 2430,
        "counts": {
          "error": 0,
          "note": 1,
          "warn": 13
        },
        "findings": [
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_article",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_articles",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_changes",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_leaderboard",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_story",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_story_timeline",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_tech_events",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_top_stories",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_trending_articles",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "get_trending_stories",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "list_entities",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "search_articles",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC16",
            "severity": "warn",
            "tool": "search_stories",
            "message": "no readOnlyHint or destructiveHint",
            "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
          },
          {
            "rule": "TC24",
            "severity": "note",
            "message": "13 of 13 tools have no outputSchema",
            "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
          }
        ]
      },
      "checkedAt": "2026-10-04T22:24:05Z",
      "count": 13,
      "note": "answered without the initialize handshake",
      "schemaTokens": 2430,
      "status": "ok",
      "tools": [
        {
          "name": "get_top_stories",
          "title": "Top stories",
          "description": "Get tech story clusters from across the web. Each story aggregates coverage from multiple outlets (TechCrunch, The Verge, NYT, TechSnif, etc.) and includes links to social discussion (tweets, Reddit threads, LinkedIn posts). Sort by rank (prominence) or newest (most recently seen). Optionally filter by headline tier (1=standard, 2=major, 3=top story), publisher name, discussion platform, topic, or a \"since\" timestamp, and paginate with offset. Use get_story when you need full details or article body text.",
          "inputSchema": {
            "properties": {
              "entity": {
                "description": "Filter by entity slug: only stories mentioning this company, person, or product (e.g. \"openai\"). Use list_entities to discover slugs.",
                "type": "string"
              },
              "has_discussion": {
                "description": "Only return stories that have social discussion links",
                "type": "boolean"
              },
              "limit": {
                "default": 20,
                "description": "Number of stories to return (default 20, max 80)",
                "maximum": 80,
                "minimum": 1,
                "type": "number"
              },
              "offset": {
                "description": "Number of stories to skip (pagination)",
                "minimum": 0,
                "type": "number"
              },
              "platform": {
                "description": "Filter to stories discussed on this platform (e.g. \"x\", \"bluesky\", \"threads\", \"linkedin\", \"forums\", \"mastodon\")",
                "type": "string"
              },
              "publisher": {
                "description": "Filter by lead publisher name (e.g. \"TechCrunch\", \"The Verge\", \"TechSnif\")",
                "type": "string"
              },
              "since": {
                "description": "ISO 8601 date, only stories seen since this time (e.g. \"2026-07-01\")",
                "type": "string"
              },
              "sort": {
                "default": "rank",
                "description": "Sort order: \"rank\" (prominence, default) or \"newest\" (most recently seen)",
                "enum": [
                  "rank",
                  "newest"
                ],
                "type": "string"
              },
              "tier": {
                "description": "Filter by headline tier: 1=standard, 2=major, 3=top story",
                "maximum": 3,
                "minimum": 1,
                "type": "number"
              },
              "topic": {
                "description": "Filter by topic slug (e.g. \"ai\", \"security\")",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_story",
          "title": "Story detail",
          "description": "Get full details of a story cluster by slug, including all coverage links from every outlet (TechCrunch, NYT, TechSnif, etc.), direct URLs to social discussion posts (exact tweets, Reddit threads, LinkedIn posts, Bluesky posts), and the full TechSnif article text if available. Use this to answer \"show me the tweets about this story\" or \"what outlets covered this\". Filter discussion by platform, coverage by publisher, or use brief mode to skip the article body.",
          "inputSchema": {
            "properties": {
              "brief": {
                "description": "Show metadata and links only, skip the full TechSnif article body",
                "type": "boolean"
              },
              "platform": {
                "description": "Filter discussion links to this platform only (e.g. \"x\", \"bluesky\", \"threads\")",
                "type": "string"
              },
              "publisher": {
                "description": "Filter coverage links by publisher name (e.g. \"TechCrunch\"). Does not affect the lead article or discussion links.",
                "type": "string"
              },
              "slug": {
                "description": "The story cluster slug",
                "type": "string"
              }
            },
            "required": [
              "slug"
            ],
            "type": "object"
          }
        },
        {
          "name": "search_stories",
          "title": "Search stories",
          "description": "Full-text search over story cluster headlines and excerpts, ranked by relevance. Returns matching story clusters with coverage links, discussion link counts, and TechSnif article references when available. Use get_story for full detail and article body text. Optionally filter by publisher and paginate with offset.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 10,
                "description": "Max results to return (default 10, max 50)",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              },
              "offset": {
                "description": "Number of results to skip (pagination)",
                "minimum": 0,
                "type": "number"
              },
              "platform": {
                "description": "Narrow displayed discussion links to this platform (e.g. \"x\", \"bluesky\")",
                "type": "string"
              },
              "publisher": {
                "description": "Filter by lead publisher name (e.g. \"TechCrunch\", \"TechSnif\")",
                "type": "string"
              },
              "query": {
                "description": "Search query, matches story headlines and excerpts (min 2 characters)",
                "minLength": 2,
                "type": "string"
              }
            },
            "required": [
              "query"
            ],
            "type": "object"
          }
        },
        {
          "name": "get_tech_events",
          "title": "Tech events",
          "description": "Get upcoming tech industry events (conferences, summits, expos) with dates, locations, and URLs.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 10,
                "description": "Number of events to return (default 10, max 50)",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_articles",
          "title": "TechSnif articles",
          "description": "List TechSnif editorial articles (original coverage written by TechSnif). Filter by category (AI, Startups, Venture, Robotics) or tag, and paginate with offset. Use get_article for the full body text.",
          "inputSchema": {
            "properties": {
              "category": {
                "description": "Filter by category (e.g. \"AI\", \"Startups\", \"Venture\", \"Robotics\")",
                "type": "string"
              },
              "limit": {
                "default": 10,
                "description": "Number of articles to return (default 10, max 50)",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              },
              "offset": {
                "description": "Number of articles to skip (pagination)",
                "minimum": 0,
                "type": "number"
              },
              "tag": {
                "description": "Filter by tag (e.g. \"Security\", \"Fintech\", \"Open Source\")",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_article",
          "title": "Article detail",
          "description": "Get a full TechSnif editorial article by slug, including the complete body text.",
          "inputSchema": {
            "properties": {
              "brief": {
                "description": "Show metadata and excerpt only, skip the full body",
                "type": "boolean"
              },
              "slug": {
                "description": "The article slug",
                "type": "string"
              }
            },
            "required": [
              "slug"
            ],
            "type": "object"
          }
        },
        {
          "name": "search_articles",
          "title": "Search articles",
          "description": "Full-text search over TechSnif editorial article titles and excerpts, ranked by relevance. Returns article summaries with category, tags, and publish dates. Use get_article for the full body text, and paginate with offset.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 20,
                "description": "Max results to return (default 20, max 50)",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              },
              "offset": {
                "description": "Number of results to skip (pagination)",
                "minimum": 0,
                "type": "number"
              },
              "query": {
                "description": "Search query, matches article titles and excerpts (min 2 characters)",
                "minLength": 2,
                "type": "string"
              }
            },
            "required": [
              "query"
            ],
            "type": "object"
          }
        },
        {
          "name": "get_trending_articles",
          "title": "Trending articles",
          "description": "Get trending TechSnif editorial articles from the last 48 hours, ranked by coverage heat and recency. Use get_article for the full body text.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 5,
                "description": "Number of articles to return (default 5, max 20)",
                "maximum": 20,
                "minimum": 1,
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_story_timeline",
          "title": "Story timeline",
          "description": "Get the ranking history of a story cluster by slug: a time series of snapshots with rank, headline tier, commentary count, and coverage count at each point. Use this to see how a story rose, peaked, or faded across the news cycle.",
          "inputSchema": {
            "properties": {
              "slug": {
                "description": "The story cluster slug",
                "type": "string"
              }
            },
            "required": [
              "slug"
            ],
            "type": "object"
          }
        },
        {
          "name": "get_changes",
          "title": "Story changes",
          "description": "Get story cluster changes since a timestamp: newly appeared clusters and updates to existing ones, each with a change type, a change time, and a story summary. Poll this to stay in sync with the TechSnif feed without refetching everything; pass the returned nextCursor as the next \"since\" value.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 50,
                "description": "Max changes to return (default 50, max 100)",
                "maximum": 100,
                "minimum": 1,
                "type": "number"
              },
              "since": {
                "description": "ISO 8601 timestamp to read changes from (defaults to 24 hours ago)",
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_trending_stories",
          "title": "Trending stories",
          "description": "Get story clusters gaining momentum right now, ranked by velocity: how quickly coverage and discussion grew within a recent window. Each story includes its velocity score plus commentary and coverage deltas. Use get_story for full detail.",
          "inputSchema": {
            "properties": {
              "hours": {
                "default": 24,
                "description": "Look-back window in hours (default 24, max 48)",
                "maximum": 48,
                "minimum": 1,
                "type": "number"
              },
              "limit": {
                "default": 20,
                "description": "Number of stories to return (default 20, max 50)",
                "maximum": 50,
                "minimum": 1,
                "type": "number"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "get_leaderboard",
          "title": "Coverage leaderboard",
          "description": "Get TechSnif source or author leaderboards: which publications and journalists drive the most tech story coverage. Rank by story count over a 7-day, 30-day, or all-time window, optionally filtered by topic.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 50,
                "description": "Number of entries to return (default 50, max 100)",
                "maximum": 100,
                "minimum": 1,
                "type": "number"
              },
              "tab": {
                "default": "sources",
                "description": "Rank \"sources\" (publications) or \"authors\" (journalists)",
                "enum": [
                  "sources",
                  "authors"
                ],
                "type": "string"
              },
              "topic": {
                "description": "Filter by topic slug (e.g. \"ai\", \"security\")",
                "type": "string"
              },
              "window": {
                "default": "30d",
                "description": "Time window for rankings (default 30d)",
                "enum": [
                  "7d",
                  "30d",
                  "all"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        },
        {
          "name": "list_entities",
          "title": "Entities",
          "description": "List the companies, people, and products TechSnif tracks across story clusters, with story counts. Only entities linked to at least one story are returned, most-covered first. Pass a returned slug as the entity param of get_top_stories to pull every story about that entity.",
          "inputSchema": {
            "properties": {
              "limit": {
                "default": 100,
                "description": "Number of entities to return (default 100, max 500)",
                "maximum": 500,
                "minimum": 1,
                "type": "number"
              },
              "type": {
                "description": "Filter by entity type: company, person, or product",
                "enum": [
                  "company",
                  "person",
                  "product"
                ],
                "type": "string"
              }
            },
            "type": "object"
          }
        }
      ]
    },
    "name": "TechSnif",
    "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@techsnif/mcp-server",
        "version": "3.3.1",
        "transport": "stdio"
      }
    ],
    "pageJsonUrl": "https://www.anchorterminal.com/tools/techsnif-mcp.json",
    "popularity": {
      "npmWeekly": 36
    },
    "registryName": "com.techsnif/mcp",
    "remotes": [
      {
        "type": "streamable-http",
        "url": "https://mcp.techsnif.com"
      }
    ],
    "repository": "https://github.com/coffeefuelbump/techsnif.com",
    "reviewed": false,
    "slug": "techsnif-mcp",
    "source": "the official MCP registry",
    "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.techsnif/mcp",
    "summary": "Agent-first tech news: ranked story clusters, coverage and discussion links, trends, and events.",
    "updatedAt": "2026-08-18T19:19:00Z",
    "url": "https://www.anchorterminal.com/tools/techsnif-mcp",
    "vendor": "techsnif.com",
    "vendorUrl": "https://techsnif.com/mcp",
    "version": "3.3.1",
    "websiteUrl": "https://techsnif.com/mcp",
    "where": "both",
    "why": [
      "vendor"
    ]
  }
}
