{
  "data": {
    "tool": {
      "category": "web-scrapers",
      "endpoint": "https://glim.sh/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/glim.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/glim.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/glim.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 7334,
          "counts": {
            "error": 0,
            "note": 1,
            "warn": 1
          },
          "findings": [
            {
              "rule": "TC14",
              "severity": "warn",
              "tool": "glim_github_search",
              "message": "allowed values are in the description, not an enum: repo",
              "fix": "Move them into enum."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "14 of 14 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:25:54Z",
        "count": 14,
        "schemaTokens": 7334,
        "status": "ok",
        "tools": [
          {
            "name": "glim_twitter_search",
            "title": "Twitter Search",
            "description": "Search Twitter/X. Returns a compact human-readable list by default; pass format='json' for full structured data. Use glim_twitter_get(ref) for full thread context. Use docs://search-operators for reference.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "cursor": {
                  "description": "Pagination cursor from previous search. Ranking is strongest on page 1 - paged results under sort:'top' trend toward recency (upstream behavior).",
                  "type": "string"
                },
                "end_date": {
                  "description": "Only tweets before this time. YYYY-MM-DD (inclusive through end of day UTC) or ISO 8601 datetime with Z/offset (e.g. 2026-04-13T14:30:00Z)",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
                  "type": "string"
                },
                "expand_urls": {
                  "default": false,
                  "description": "When true, auto-crawl entity URLs and attach crawled_content to tweets. Off by default: responses can grow by up to 4KB per expanded URL. Use glim_web_fetch(url) for targeted crawls instead.",
                  "type": "boolean"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "query": {
                  "description": "Search query with operators (e.g. 'from:elonmusk AI min_faves:100 within_time:7d')",
                  "type": "string"
                },
                "sort": {
                  "description": "Sort by relevance or recency: \"top\" (most engaged tweets matching the query - best for \"what's the conversation about X\") or \"latest\" (newest first - best for monitoring/recency). Default: \"top\".",
                  "enum": [
                    "latest",
                    "top"
                  ],
                  "type": "string"
                },
                "start_date": {
                  "description": "Only tweets on or after this time. YYYY-MM-DD (UTC midnight) or ISO 8601 datetime with Z/offset (e.g. 2026-04-13T14:30:00Z)",
                  "pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d+)?)?(Z|[+-]\\d{2}:?\\d{2}))?$",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_twitter_get",
            "title": "Fetch Tweet or User",
            "description": "Fetch a tweet or a user from one reference. A tweet URL (incl. handle-less /i/status/\u003cid\u003e) returns the tweet with full thread context, parent, and optional replies/quotes; a profile URL (https://x.com/\u003chandle\u003e) returns the user with recent tweets. Prefer full URLs - if you only have a numeric id, pass it as a quoted string. Returns a compact human-readable view by default; pass format='json' for full structured data.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "cursor": {
                  "description": "Profile refs only: pagination cursor from next_cursor",
                  "type": "string"
                },
                "expand_urls": {
                  "default": false,
                  "description": "When true, auto-crawl entity URLs and attach crawled_content to tweets. Off by default: responses can grow by up to 4KB per expanded URL. Use glim_web_fetch(url) for targeted crawls instead.",
                  "type": "boolean"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "include": {
                  "description": "Tweet refs only: also fetch 'replies' and/or 'quotes'",
                  "items": {
                    "enum": [
                      "replies",
                      "quotes"
                    ],
                    "type": "string"
                  },
                  "type": "array"
                },
                "include_mentions": {
                  "default": false,
                  "description": "Profile refs only: include the mentions timeline",
                  "type": "boolean"
                },
                "include_replies": {
                  "default": false,
                  "description": "Profile refs only: include replies in the timeline",
                  "type": "boolean"
                },
                "ref": {
                  "description": "Tweet URL or profile URL. A tweet URL (incl. /i/status/\u003cid\u003e) returns the tweet + thread; a profile URL (https://x.com/\u003chandle\u003e) returns the user + recent tweets. Prefer full URLs - if you only have a numeric id, pass it as a quoted string.",
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_reddit_search",
            "title": "Reddit Search",
            "description": "Search Reddit posts. Each result comes with full post content and its top comments, so a single search usually answers the question without follow-up. Compact human-readable text by default; pass format='json' for full structured data. Use glim_reddit_get(ref) for a single post's complete comment tree. Page with cursor (response gives next_cursor when more exist). See docs://reddit-search.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "cursor": {
                  "description": "Pagination cursor from a prior response's next_cursor",
                  "maxLength": 64,
                  "pattern": "^\\s*(?:[tT]\\d_)?[a-zA-Z0-9]+\\s*$",
                  "type": "string"
                },
                "end_date": {
                  "description": "Only posts before this date (YYYY-MM-DD)",
                  "type": "string"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "limit": {
                  "default": 10,
                  "description": "Max posts (1-10), each with full content + top comments",
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "query": {
                  "description": "Search query (e.g. 'subreddit:programming machine learning')",
                  "type": "string"
                },
                "sort": {
                  "default": "relevance",
                  "description": "Sort order. Keep 'relevance' (default) for question or topic queries - it ranks by how well posts match your query. 'top'/'hot' rank by score/recency and largely ignore the query text, so use them only to browse what's popular in a subreddit.",
                  "enum": [
                    "relevance",
                    "hot",
                    "top",
                    "new",
                    "comments"
                  ],
                  "type": "string"
                },
                "start_date": {
                  "description": "Only posts on or after this date (YYYY-MM-DD)",
                  "type": "string"
                },
                "time": {
                  "default": "all",
                  "description": "Time range",
                  "enum": [
                    "hour",
                    "day",
                    "week",
                    "month",
                    "year",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_reddit_get",
            "title": "Reddit Get",
            "description": "Fetch a Reddit post, subreddit, or user by ref. Posts return comments; subreddits and users return profile metadata plus recent activity.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "comment_depth": {
                  "default": 5,
                  "description": "Max nesting depth (post refs only)",
                  "maximum": 10,
                  "minimum": 0,
                  "type": "integer"
                },
                "comment_limit": {
                  "default": 50,
                  "description": "Max comments (post refs only)",
                  "maximum": 200,
                  "minimum": 0,
                  "type": "integer"
                },
                "comment_sort": {
                  "default": "confidence",
                  "description": "Comment sort. Post refs only: subreddit/user listings always hydrate a fixed 2 top-level comments sorted by top.",
                  "enum": [
                    "confidence",
                    "top",
                    "new",
                    "controversial",
                    "old",
                    "qa"
                  ],
                  "type": "string"
                },
                "cursor": {
                  "description": "Pagination cursor from a prior subreddit response's next_cursor",
                  "maxLength": 64,
                  "pattern": "^\\s*(?:[tT]\\d_)?[a-zA-Z0-9]+\\s*$",
                  "type": "string"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "include_comments": {
                  "default": false,
                  "description": "Include recent comments for user refs",
                  "type": "boolean"
                },
                "include_posts": {
                  "default": true,
                  "description": "Include recent posts for user refs",
                  "type": "boolean"
                },
                "limit": {
                  "default": 10,
                  "description": "Max subreddit posts (1-10), each with full content + top comments",
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "ref": {
                  "description": "Post ID or URL, subreddit ref (r/programming or reddit.com/r/programming), or user ref (u/spez or reddit.com/user/spez)",
                  "type": "string"
                },
                "sort": {
                  "default": "hot",
                  "description": "Listing post sort",
                  "enum": [
                    "hot",
                    "new",
                    "top",
                    "rising"
                  ],
                  "type": "string"
                },
                "time": {
                  "default": "day",
                  "description": "Listing time range",
                  "enum": [
                    "hour",
                    "day",
                    "week",
                    "month",
                    "year",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_web_search",
            "title": "Web Search",
            "description": "Semantic web search powered by Exa. Returns titles, URLs, and the top query-relevant excerpt per result. Compact text by default; pass format='json' for full structured data incl. all excerpts per result. Use glim_web_fetch(url) for full page content. Matching is semantic, so a query with no real match still returns ten nearest-neighbour results rather than zero - judge relevance from the excerpts, not from the result count.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "exclude_domains": {
                  "description": "Exclude results from these domains. Useful for filtering noisy aggregators or SEO farms when you've seen them dominate results (e.g. ['pinterest.com', 'quora.com']).",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable list, fewer tokens. 'json': the same results as structured data (title, url, snippet, score, published_date, author).",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "include_domains": {
                  "description": "Restrict results to these domains (e.g. ['arxiv.org'])",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "published_within_days": {
                  "description": "Restrict to results published within the last N days. Skip this for broad queries - it excludes pages without publish-date metadata. Common values: 1, 7, 30, 365.",
                  "maximum": 3650,
                  "minimum": 1,
                  "type": "integer"
                },
                "query": {
                  "description": "Search query",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_web_fetch",
            "title": "Web Fetch",
            "description": "Fetch a single web page and extract clean content. Auto-tier server-side: handles SSR (Next.js, Nuxt, TikTok, Pinterest, YouTube), SPA shells, PDFs, paywall detection, residential-proxy escalation, and stealth profiles for TikTok / Instagram / Pinterest / YouTube. Returns clean markdown (default) with a YAML frontmatter header (url, outcome, total_chars). Read 'outcome' to classify the result (success | teaser | thin_content | paywall | bot_challenge | consent_wall | login_wall | rate_limited | timeout | transient_upstream | unsupported_target | not_found | error). Large pages (\u003e80k chars) are truncated inline with truncated_chars + a download_full_url to the complete extraction (expires ~1h). Permanently unsupported (outcome=unsupported_target, cost=0 upstream): Bluesky search, Instagram post/reel and tag/explore pages (profiles work), Pinterest search, g2.com, Truth Social, Xiaohongshu. Threads and Instagram profile pages ARE supported.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "markdown",
                  "description": "Output format. 'markdown' (default) clean article text; 'html' raw cleaned HTML; 'json' the structured SSR blob (TikTok / Pinterest / YouTube) instead of article text.",
                  "enum": [
                    "markdown",
                    "html",
                    "json"
                  ],
                  "type": "string"
                },
                "selector": {
                  "description": "CSS selector to scope the result. An anchor-id selector (e.g. a docs anchor like '#usage') that lands on a heading expands to its whole section; other selectors return the matched elements themselves.",
                  "type": "string"
                },
                "url": {
                  "description": "URL to fetch",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_github_search",
            "title": "GitHub Search",
            "description": "Search GitHub repositories, conversations (issues+PRs), discussions, or code, with full GitHub search syntax in the query: qualifiers (repo:, org:/user:, language:, path:, symbol:, content:, is:, stars:, label:, sort:stars), boolean AND/OR/NOT with parentheses, \"exact strings\", and /regex/. kind='repos': MINIMAL distinctive keywords - the project/library name only ('rtk', 'react query'); every extra word must ALL match and buries the canonical repo - filter with qualifiers, not prose. kind='code': ONE literal code pattern as it appears in files ('useState('), an \"exact string\", a /regex/, or symbol:name to find definitions, across 2.8M+ public repos; narrow with repo:/language:/path:. Not supported in code search: license:, enterprise:, is:vendored, is:generated. kind='conversations': returns compact previews - use glim_github_get for full content; sort: REPLACES relevance ranking (words match anywhere incl. comments), omit it for best matches. kind='discussions': GitHub Discussions, a SEPARATE index from issues/PRs - a question answered there never appears under conversations, so reach for it when a repo does its Q\u0026A in Discussions; supports repo:/org:/author:/is:answered plus category: (the repo's own category name, needs a repo: scope), up to 10 results per page, no sort:. Set repo='owner/name' to scope to one repository (works with any kind; with repos it routes to conversations). kind is optional - inferred from the query (is:answered/category: -\u003e discussions, is:/label: -\u003e conversations, path:/symbol://regex/ -\u003e code, stars:/topic: -\u003e repos, else repos); a conversations search with no matches is retried as discussions and says so. Returns compact text by default; pass format='json' for full structured data.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable previews, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "kind": {
                  "description": "What to search: 'repos', 'conversations' (issues+PRs), 'discussions' (GitHub Discussions - a separate index from issues/PRs), or 'code' (literal/regex/symbol search across 2.8M+ public GitHub repos). Optional - inferred from the query: is:answered/category: implies discussions, is:/label:/author: implies conversations, path:/symbol:/content://regex/ implies code, stars:/topic:/in:readme implies repos, otherwise repos. type:code / type:repos / type:discussions in the query also works. A conversations search that matches nothing is retried as discussions, so an answer that lives in Discussions is not silently missed.",
                  "enum": [
                    "repos",
                    "conversations",
                    "code",
                    "discussions"
                  ],
                  "type": "string"
                },
                "page": {
                  "default": 1,
                  "description": "Page number",
                  "maximum": 10,
                  "minimum": 1,
                  "type": "integer"
                },
                "per_page": {
                  "default": 20,
                  "description": "Results per page",
                  "maximum": 30,
                  "minimum": 1,
                  "type": "integer"
                },
                "query": {
                  "description": "Search query in full GitHub search syntax: qualifiers (repo:owner/name, org:/user:, language:, path: with globs, symbol:, content:, is:, stars:\u003eN, label:, sort:stars), boolean AND/OR/NOT with parentheses, \"exact strings\", and /regex/. kind=repos: minimal distinctive keywords - the project/library name (GOOD: 'rtk', 'react query'; BAD: 'rtk rust token killer' - every extra word must ALL match and buries the real repo; filter with qualifiers, not prose). kind=code: ONE literal code pattern as it appears in files ('useState('), an \"exact string\", a /regex/, or symbol:name for definitions; narrow with repo:/language:/path:, not extra words. kind=conversations: keywords plus filters (is:issue, label:bug). kind=discussions: keywords plus repo:/org:/author:/is:answered/category: - a separate GitHub index from issues/PRs, so a thread that lives in Discussions is invisible to kind=conversations (and vice versa). category: matches the repo's own category name (Ideas, Q\u0026A) and needs a repo: scope; sort: does not apply. Caution: sort: REPLACES relevance ranking (sort:reactions = most-popular thread mentioning the words anywhere, incl. comments) - omit sort: for best-match. Not supported in code search: license:, enterprise:, is:vendored, is:generated.",
                  "type": "string"
                },
                "repo": {
                  "description": "Scope to one repository. Accepts 'owner/name', a github.com URL, or a partial 'owner/' (code). Works with any kind; setting it with kind=repos routes the search to conversations, since repo-name search can't scope to one repo. Equivalent to a repo: qualifier in the query (if both are given they must match).",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_github_get",
            "title": "GitHub Get",
            "description": "Fetch GitHub data from a single ref. GitHub URL or 'owner/repo' shorthand. A repo URL or owner/repo returns metadata + README; /pull/N -\u003e PR (with comments + changed files), /issues/N -\u003e issue, /discussions/N -\u003e discussion (with threaded replies), /blob/\u003cref\u003e/\u003cpath\u003e -\u003e file (raw.githubusercontent.com URLs work too), /tree/\u003cref\u003e[/\u003cpath\u003e] -\u003e file tree (optionally scoped to a subdirectory), /commit/\u003csha\u003e -\u003e one commit with diff, /commits[/\u003cref\u003e/\u003cpath\u003e] -\u003e history (optionally for one file), /branches, /releases (or /releases/tag/\u003ctag\u003e | /releases/latest -\u003e one release), /topics/\u003cname\u003e -\u003e top repos with that topic (by stars).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "Output encoding. 'text' (default): compact human-readable text, fewer tokens (file returns raw content). 'json': machine-readable JSON.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "page": {
                  "default": 1,
                  "description": "Page number",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "per_page": {
                  "default": 30,
                  "description": "Results per page",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "ref": {
                  "description": "GitHub URL or 'owner/repo' shorthand. A repo URL or owner/repo returns metadata + README; /pull/N -\u003e PR (with comments + changed files), /issues/N -\u003e issue, /discussions/N -\u003e discussion (with threaded replies), /blob/\u003cref\u003e/\u003cpath\u003e -\u003e file (raw.githubusercontent.com URLs work too), /tree/\u003cref\u003e[/\u003cpath\u003e] -\u003e file tree (optionally scoped to a subdirectory), /commit/\u003csha\u003e -\u003e one commit with diff, /commits[/\u003cref\u003e/\u003cpath\u003e] -\u003e history (optionally for one file), /branches, /releases (or /releases/tag/\u003ctag\u003e | /releases/latest -\u003e one release), /topics/\u003cname\u003e -\u003e top repos with that topic (by stars).",
                  "maxLength": 2048,
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_amazon_search",
            "title": "Amazon Search",
            "description": "Pass exactly ONE of {query} or {category_slug}. Searches Amazon (com|co.uk|de|fr|es|it) and returns ranked hits with buybox price (gross + VAT-excluded net), ratings, review counts, and ASINs. Drill down with glim_amazon_get(ref). Set sort_by='most_reviewed' (with min_reviews to filter junk) for a trust-weighted re-rank within the current page. Compact text by default; pass format='json' for full structured data.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "category_slug": {
                  "description": "Amazon bestsellers category slug, e.g. 'electronics' (.com), 'elektronik' (.de), 'electronique' (.fr). Invalid slugs return 'not_found' - retry with a correct slug.",
                  "type": "string"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': the same hits as machine-readable JSON. Text already carries every field except `image_url`, which only json returns.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "include_paid": {
                  "default": false,
                  "description": "Include sponsored ad results (default: dropped)",
                  "type": "boolean"
                },
                "include_suggested": {
                  "default": false,
                  "description": "Include 'people also searched for' suggestions (default: dropped)",
                  "type": "boolean"
                },
                "min_reviews": {
                  "description": "Drop hits with fewer than N reviews. Pair with sort_by='most_reviewed' for a trust-weighted result. Applied client-side to organic/paid/suggested.",
                  "maximum": 9007199254740991,
                  "minimum": 0,
                  "type": "integer"
                },
                "page": {
                  "default": 1,
                  "description": "Page number (1-20)",
                  "maximum": 20,
                  "minimum": 1,
                  "type": "integer"
                },
                "query": {
                  "description": "Free-text keyword query (mutually exclusive with category_slug)",
                  "type": "string"
                },
                "sort_by": {
                  "description": "Server-side sort, except 'most_reviewed' which re-ranks the current page client-side by review count desc (rating tiebreaker). Pair 'most_reviewed' with min_reviews to skip thinly-reviewed items.",
                  "enum": [
                    "most_recent",
                    "price_low_to_high",
                    "price_high_to_low",
                    "featured",
                    "average_review",
                    "bestsellers",
                    "most_reviewed"
                  ],
                  "type": "string"
                },
                "tld": {
                  "default": "com",
                  "description": "Amazon marketplace: com | co.uk | de | fr | es | it",
                  "enum": [
                    "com",
                    "co.uk",
                    "de",
                    "fr",
                    "es",
                    "it"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_amazon_get",
            "title": "Amazon Product",
            "description": "Fetch Amazon product detail from a full product URL (the marketplace - com|co.uk|de|fr|es|it - is read from the URL host; pass the url field from a glim_amazon_search result, or any /dp/\u003cASIN\u003e page URL). Returns title, buybox price (gross + VAT-excluded net), stock, delivery estimate, rating, top reviews, and an 'other sellers' summary (count + floor price). Text mode (default) returns a compact view with offers_summary {buybox, lowest_new, lowest_used} - pass format='json' for full structured data incl. the offers[] listing and images.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': the same product as machine-readable JSON, plus the fields text omits: the full `offers[]` list (text summarizes it), `images[]`, and variation/other-seller detail.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "ref": {
                  "description": "Full Amazon product URL - pass the `url` from a glim_amazon_search result, or any /dp/\u003cASIN\u003e product page URL. The URL carries the marketplace (amazon.de, amazon.co.uk, ...), so no separate region is needed; tracking junk in the URL is ignored. A bare ASIN is rejected: it is ambiguous across marketplaces.",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_youtube_get",
            "title": "YouTube Transcript",
            "description": "Fetch a YouTube video transcript from a video URL or 11-char id. The transcript is cleaned server-side: deduplicated, tags/HTML stripped, with coarse [m:ss] timestamps - roughly a tenth the size of the raw captions. Default format='text' returns it inline (when it fits ~40K chars / ~10K tokens) so a single call gives you the text directly; long-form videos fall back to a download_url note. Pass format='json' for the same transcript plus transcript metadata (video_id, canonical url, language, origin, size) and a presigned download_url - for batch/programmatic use. Default origin='uploader_provided' (human captions); falls back to 'auto_generated' automatically if missing (counts as 2 upstream calls). Cached 7 days server-side.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): the cleaned transcript inline as plain text (omitted with a download_url note when it exceeds the ~40K-char inline cap). 'json': the same cleaned transcript plus transcript metadata (video_id, canonical url, language, origin, size) and a presigned download_url - for batch/programmatic use. Both formats return the identical cleaned, deduplicated transcript.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "language_code": {
                  "default": "en",
                  "description": "ISO 639-1 language code (e.g. 'en', 'de', 'fr')",
                  "maxLength": 10,
                  "minLength": 2,
                  "type": "string"
                },
                "origin": {
                  "default": "uploader_provided",
                  "description": "'uploader_provided' for human captions (default), 'auto_generated' for YouTube auto-captions.",
                  "enum": [
                    "uploader_provided",
                    "auto_generated"
                  ],
                  "type": "string"
                },
                "ref": {
                  "description": "YouTube video URL or 11-char video id (e.g. https://youtu.be/dQw4w9WgXcQ, https://www.youtube.com/watch?v=dQw4w9WgXcQ, or dQw4w9WgXcQ)",
                  "minLength": 1,
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_detect_ai",
            "title": "AI Detection",
            "description": "Detect AI-generated text. Scores any text for AI-authorship likelihood and returns an overall verdict (AI / human / mixed) with confidence, the AI/human/AI-assisted fractions, and a segment-by-segment breakdown showing exactly which parts read as AI-written - including per-segment humanizer flags (AI output run through paraphrasing/'humanizer' tools). Use it to verify whether content (comments, articles, profiles) is AI-generated, or to check text before publishing to see which segments would trip AI detectors - revise the flagged segments and re-check. Cost scales with text length: $0.06 per 100 words, rounded up, minimum $0.06. Max input 20,000 characters.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "'text' (default): compact human-readable report. 'json': structured data incl. per-segment text, scores, and humanizer flags.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "text": {
                  "description": "Text to analyze, plain text, 50+ characters, max 20,000. Detection reliability improves with length; very short texts return lower-confidence verdicts.",
                  "minLength": 50,
                  "type": "string"
                }
              },
              "required": [
                "text"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_telegram_search",
            "title": "Telegram Search",
            "description": "Search Telegram: discovers public channels by name/topic (directory lookup) and finds indexed public post/channel pages (semantic web index scoped to t.me). Telegram has no global full-text search, so treat results as discovery: find the right channel here, then use glim_telegram_get(ref=\u003chandle\u003e) for its live posts or glim_telegram_get(ref, query=...) to search within that channel's full history.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "kind": {
                  "default": "all",
                  "description": "'channels': channel directory lookup. 'posts': indexed t.me post pages. 'all' (default): both.",
                  "enum": [
                    "all",
                    "channels",
                    "posts"
                  ],
                  "type": "string"
                },
                "query": {
                  "description": "Search query (topic, channel name, keyword)",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          },
          {
            "name": "glim_telegram_get",
            "title": "Telegram Get",
            "description": "Fetch a public Telegram channel or post - no account or API key involved. Channel refs (@handle, handle, t.me URL) return channel info + recent posts newest-first with views, reactions, media, polls, and link previews; pass query to search within the channel's full history, and page older posts with before=\u003cnext_cursor\u003e. Post refs (t.me/\u003cchannel\u003e/\u003cid\u003e) return that post plus its most recent discussion comments. Media URLs are Telegram CDN links that expire within hours - fetch promptly, never store. Only channels with a public web preview work (most public channels); private channels and groups are not accessible.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "properties": {
                "after": {
                  "description": "Return posts newer than this message id",
                  "type": "string"
                },
                "before": {
                  "description": "Return posts older than this message id (from next_cursor)",
                  "type": "string"
                },
                "comment": {
                  "description": "Post refs: center the comment window on this comment id",
                  "type": "string"
                },
                "format": {
                  "default": "text",
                  "description": "Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing.",
                  "enum": [
                    "text",
                    "json"
                  ],
                  "type": "string"
                },
                "include_comments": {
                  "default": true,
                  "description": "Post refs: include discussion comments (Telegram serves a small window of the most recent; walk older ones via comment=\u003coldest returned id\u003e)",
                  "type": "boolean"
                },
                "limit": {
                  "default": 20,
                  "description": "Max posts for channel refs (1-100)",
                  "maximum": 100,
                  "minimum": 1,
                  "type": "integer"
                },
                "query": {
                  "description": "Search within the channel's full history (channel refs only)",
                  "type": "string"
                },
                "ref": {
                  "description": "Public channel (@handle, handle, or t.me/\u003cchannel\u003e URL) or post (t.me/\u003cchannel\u003e/\u003cid\u003e or '\u003cchannel\u003e/\u003cid\u003e')",
                  "type": "string"
                }
              },
              "required": [
                "ref"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true
            }
          }
        ]
      },
      "name": "glim.sh",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": null,
      "pageJsonUrl": "https://www.anchorterminal.com/tools/glim.json",
      "popularity": {
        "githubStars": 4
      },
      "registryName": "sh.glim/glim",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://glim.sh/mcp"
        }
      ],
      "repository": "https://github.com/glim-sh/glim-mcp",
      "reviewed": false,
      "slug": "glim",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=sh.glim/glim",
      "summary": "Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.",
      "updatedAt": "2026-06-10T15:53:45Z",
      "url": "https://www.anchorterminal.com/tools/glim",
      "vendor": "glim.sh",
      "vendorUrl": "https://glim.sh",
      "version": "1.0.0",
      "websiteUrl": "https://glim.sh",
      "where": "hosted",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/glim",
    "json": "https://www.anchorterminal.com/tools/glim.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/glim.md",
    "slim": "https://www.anchorterminal.com/tools/glim.min.md"
  },
  "markdown": "# glim.sh\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by glim.sh (https://glim.sh)\n- Category: Web scraping \u0026 crawling (https://www.anchorterminal.com/categories/web-scrapers.md)\n- Listed because: It's published in the registry under glim.sh, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.\n\n## Facts\n\n- MCP registry: `sh.glim/glim` 1.0.0\n- Endpoint: https://glim.sh/mcp (streamable HTTP)\n- Source: https://github.com/glim-sh/glim-mcp\n- Website: https://glim.sh\n- GitHub stars: 4\n- Registry entry updated: 2026-06-10\n\n## Tools\n\n- Tools it lists (14, about 7,334 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:25 UTC):\n  - `glim_twitter_search` (read-only): Search Twitter/X. Returns a compact human-readable list by default; pass format='json' for full structured data. Use glim_twitter_get(ref) for full thread…\n  - `glim_twitter_get` (read-only): Fetch a tweet or a user from one reference. A tweet URL (incl. handle-less /i/status/\u003cid\u003e) returns the tweet with full thread context, parent, and optional…\n  - `glim_reddit_search` (read-only): Search Reddit posts. Each result comes with full post content and its top comments, so a single search usually answers the question without follow-up. Compact…\n  - `glim_reddit_get` (read-only): Fetch a Reddit post, subreddit, or user by ref. Posts return comments; subreddits and users return profile metadata plus recent activity.\n  - `glim_web_search` (read-only): Semantic web search powered by Exa. Returns titles, URLs, and the top query-relevant excerpt per result. Compact text by default; pass format='json' for full…\n  - `glim_web_fetch` (read-only): Fetch a single web page and extract clean content. Auto-tier server-side: handles SSR (Next.js, Nuxt, TikTok, Pinterest, YouTube), SPA shells, PDFs, paywall…\n  - `glim_github_search` (read-only): Search GitHub repositories, conversations (issues+PRs), discussions, or code, with full GitHub search syntax in the query: qualifiers (repo:, org:/user:,…\n  - `glim_github_get` (read-only): Fetch GitHub data from a single ref. GitHub URL or 'owner/repo' shorthand. A repo URL or owner/repo returns metadata + README; /pull/N -\u003e PR (with comments +…\n  - `glim_amazon_search` (read-only): Pass exactly ONE of {query} or {category_slug}. Searches Amazon (com|co.uk|de|fr|es|it) and returns ranked hits with buybox price (gross + VAT-excluded net),…\n  - `glim_amazon_get` (read-only): Fetch Amazon product detail from a full product URL (the marketplace - com|co.uk|de|fr|es|it - is read from the URL host; pass the url field from a…\n  - `glim_youtube_get` (read-only): Fetch a YouTube video transcript from a video URL or 11-char id. The transcript is cleaned server-side: deduplicated, tags/HTML stripped, with coarse [m:ss]…\n  - `glim_detect_ai` (read-only): Detect AI-generated text. Scores any text for AI-authorship likelihood and returns an overall verdict (AI / human / mixed) with confidence, the…\n  - `glim_telegram_search` (read-only): Search Telegram: discovers public channels by name/topic (directory lookup) and finds indexed public post/channel pages (semantic web index scoped to t.me).…\n  - `glim_telegram_get` (read-only): Fetch a public Telegram channel or post - no account or API key involved. Channel refs (@handle, handle, t.me URL) return channel info + recent posts…\n- How its tools read to an agent (0 errors, 1 warning, 1 note, about 7,334 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC14 glim_github_search: allowed values are in the description, not an enum: repo\n  - note TC24 server: 14 of 14 tools have no outputSchema\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/glim.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "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"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "glim.sh",
        "url": ""
      }
    ],
    "description": "glim.sh, an MCP server by glim.sh, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "glim.sh",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/glim",
    "published": "",
    "section": "indexed",
    "title": "glim.sh: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/tools/glim"
  },
  "tokens": {
    "markdown": 1250,
    "slim": 1180
  },
  "version": 1
}
