glim.sh
REMOTE · GLIM.SH · SCANNED AUG 3
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security80
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability75
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 4323 tokens (~254/item across 17 items; 11 tools + 6 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · glim.sh
claude mcp add --transport http sh-glim-glim https://glim.sh/mcp
[mcp_servers.sh-glim-glim] url = "https://glim.sh/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sh-glim-glim": {
"type": "remote",
"url": "https://glim.sh/mcp",
"enabled": true
}
}
} openclaw mcp add sh-glim-glim --url https://glim.sh/mcp --transport streamable-http
mcp_servers:
sh-glim-glim:
url: "https://glim.sh/mcp" {
"mcpServers": {
"sh-glim-glim": {
"type": "http",
"url": "https://glim.sh/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 +4
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 69
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://glim.sh/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_256_GCM_SHA384 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=glim.sh | CN=YR1,O=Let's Encrypt,C=US | 27 Jul 2026 | 25 Oct 2026 | RSA 2048 | SHA256-RSA | 531f1b62fe2bc5cc5d33b66de1092f37bb4 |
| SANs: glim.sh | ||||||
| CN=YR1,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | a20253f15f2691c05dc1ce13b9bcca4e |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
DNSSEC insecure
Validation of glim.sh. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| sh. | present | 55297 | 8 | Verified |
| glim.sh. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://glim.sh/mcp | Verified | 200 | |
| http (plaintext) | http://glim.sh/mcp | HTTPS enforced | 308 | https://glim.sh/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
glim_amazon_get Amazon Product ~288
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/<ASIN> 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | 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… |
| ref | string | yes | Full Amazon product URL - pass the `url` from a glim_amazon_search result, or any /dp/<ASIN> product page URL. The URL carries the marketplace (amazon.de, amazon.co.uk, ...), so no separate region is… |
No output schema declared.
No examples provided.
glim_amazon_search Amazon Search ~406
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category_slug | string | — | Amazon bestsellers category slug, e.g. 'electronics' (.com), 'elektronik' (.de), 'electronique' (.fr). Invalid slugs return 'not_found' - retry with a correct slug. |
| format | string | — | 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 return… |
| include_paid | boolean | — | Include sponsored ad results (default: dropped) |
| include_suggested | boolean | — | Include 'people also searched for' suggestions (default: dropped) |
| min_reviews | integer | — | 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. |
| page | integer | — | Page number (1-20) |
| query | string | — | Free-text keyword query (mutually exclusive with category_slug) |
| sort_by | string | — | 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. |
| tld | string | — | Amazon marketplace: com | co.uk | de | fr | es | it |
No output schema declared.
No examples provided.
glim_github_get GitHub Get ~374
Fetch GitHub data from a single ref. GitHub URL or 'owner/repo' shorthand. A repo URL or owner/repo returns metadata + README; /pull/N -> PR (with comments + changed files), /issues/N -> issue, /blob/<ref>/<path> -> file (raw.githubusercontent.com URLs work too), /tree/<ref>[/<path>] -> file tree (optionally scoped to a subdirectory), /commit/<sha> -> one commit with diff, /commits[/<ref>/<path>] -> history (optionally for one file), /branches, /releases (or /releases/tag/<tag> | /releases/latest -> one release), /topics/<name> -> top repos with that topic (by stars).
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | Output encoding. 'text' (default): compact human-readable text, fewer tokens (file returns raw content). 'json': machine-readable JSON. |
| page | integer | — | Page number |
| per_page | integer | — | Results per page |
| ref | string | yes | GitHub URL or 'owner/repo' shorthand. A repo URL or owner/repo returns metadata + README; /pull/N -> PR (with comments + changed files), /issues/N -> issue, /blob/<ref>/<path> -> file (raw.githubuser… |
No output schema declared.
No examples provided.
glim_github_search GitHub Search ~773
Search GitHub repositories, conversations (issues+PRs), 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. 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:/label: -> conversations, path:/symbol://regex/ -> code, stars:/topic: -> repos, else repos). Returns compact text by default; pass format='json' for full structured data.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | Output format. 'text' (default): compact human-readable previews, fewer tokens. 'json': full structured data for machine parsing. |
| kind | string | — | What to search: 'repos', 'conversations' (issues+PRs), or 'code' (literal/regex/symbol search across 2.8M+ public GitHub repos). Optional - inferred from the query: is:/label:/author: implies convers… |
| page | integer | — | Page number |
| per_page | integer | — | Results per page |
| query | string | yes | Search query in full GitHub search syntax: qualifiers (repo:owner/name, org:/user:, language:, path: with globs, symbol:, content:, is:, stars:>N, label:, sort:stars), boolean AND/OR/NOT with parenth… |
| repo | string | — | 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 sear… |
No output schema declared.
No examples provided.
glim_reddit_get Reddit Get ~255
Fetch a Reddit post, subreddit, or user by ref. Posts return comments; subreddits and users return profile metadata plus recent activity.
| Name | Type | Req | Description |
|---|---|---|---|
| comment_depth | integer | — | Max nesting depth (post refs only) |
| comment_limit | integer | — | Max comments (post refs only) |
| comment_sort | string | — | Comment sort. Post refs only: subreddit/user listings always hydrate a fixed 2 top-level comments sorted by top. |
| cursor | string | — | Pagination cursor from a prior subreddit response's next_cursor |
| format | string | — | Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing. |
| include_comments | boolean | — | Include recent comments for user refs |
| include_posts | boolean | — | Include recent posts for user refs |
| limit | integer | — | Max subreddit posts (1-10), each with full content + top comments |
| ref | string | yes | Post ID or URL, subreddit ref (r/programming or reddit.com/r/programming), or user ref (u/spez or reddit.com/user/spez) |
| sort | string | — | Listing post sort |
| time | string | — | Listing time range |
No output schema declared.
No examples provided.
glim_reddit_search Reddit Search ~289
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor from a prior response's next_cursor |
| end_date | string | — | Only posts before this date (YYYY-MM-DD) |
| format | string | — | Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing. |
| limit | integer | — | Max posts (1-10), each with full content + top comments |
| query | string | yes | Search query (e.g. 'subreddit:programming machine learning') |
| sort | string | — | 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 on… |
| start_date | string | — | Only posts on or after this date (YYYY-MM-DD) |
| time | string | — | Time range |
No output schema declared.
No examples provided.
glim_twitter_get Fetch Tweet or User ~329
Fetch a tweet or a user from one reference. A tweet URL (incl. handle-less /i/status/<id>) returns the tweet with full thread context, parent, and optional replies/quotes; a profile URL (https://x.com/<handle>) 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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Profile refs only: pagination cursor from next_cursor |
| expand_urls | boolean | — | 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. |
| format | string | — | Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing. |
| include | array | — | Tweet refs only: also fetch 'replies' and/or 'quotes' |
| include_mentions | boolean | — | Profile refs only: include the mentions timeline |
| include_replies | boolean | — | Profile refs only: include replies in the timeline |
| ref | string | yes | Tweet URL or profile URL. A tweet URL (incl. /i/status/<id>) returns the tweet + thread; a profile URL (https://x.com/<handle>) returns the user + recent tweets. Prefer full URLs - if you only have a… |
No output schema declared.
No examples provided.
glim_twitter_search Twitter Search ~367
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | — | Pagination cursor from previous search. Ranking is strongest on page 1 - paged results under sort:'top' trend toward recency (upstream behavior). |
| end_date | string | — | 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) |
| expand_urls | boolean | — | 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. |
| format | string | — | Output format. 'text' (default): compact human-readable view, fewer tokens. 'json': full structured data for machine parsing. |
| query | string | yes | Search query with operators (e.g. 'from:elonmusk AI min_faves:100 within_time:7d') |
| sort | string | — | 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". |
| start_date | string | — | 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) |
No output schema declared.
No examples provided.
glim_web_fetch Web Fetch ~289
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 (>80k 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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | Output format. 'markdown' (default) clean article text; 'html' raw cleaned HTML; 'json' the structured SSR blob (TikTok / Pinterest / YouTube) instead of article text. |
| selector | string | — | CSS selector to scope extraction |
| url | string | yes | URL to fetch |
No output schema declared.
No examples provided.
glim_web_search Web Search ~268
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.
| Name | Type | Req | Description |
|---|---|---|---|
| exclude_domains | array | — | 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']). |
| format | string | — | Output format. 'text' (default): compact human-readable list, fewer tokens. 'json': the same results as structured data (title, url, snippet, score, published_date, author). |
| include_domains | array | — | Restrict results to these domains (e.g. ['arxiv.org']) |
| published_within_days | integer | — | 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. |
| query | string | yes | Search query |
No output schema declared.
No examples provided.
glim_youtube_get YouTube Transcript ~392
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.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | — | 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 tran… |
| language_code | string | — | ISO 639-1 language code (e.g. 'en', 'de', 'fr') |
| origin | string | — | 'uploader_provided' for human captions (default), 'auto_generated' for YouTube auto-captions. |
| ref | string | yes | YouTube video URL or 11-char video id (e.g. https://youtu.be/dQw4w9WgXcQ, https://www.youtube.com/watch?v=dQw4w9WgXcQ, or dQw4w9WgXcQ) |
No output schema declared.
No examples provided.