Groundhog
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CDP_URL | No | CDP endpoint of the stealth browser. | http://127.0.0.1:9222 |
| SEARXNG_URL | No | Your SearXNG instance for search, e.g. http://searxng:8080. Needs formats: [html, json]. Unset → SERP via the stealth browser. | |
| GROUNDHOG_MAX_TOKENS | No | Token budget before truncation. | 20000 |
| GROUNDHOG_COMPOSE_FILE | No | Use docker compose -f <file> up -d for auto-start instead of docker run (local repo). | |
| GROUNDHOG_MIN_DELAY_MS | No | Minimum delay between requests to the same domain. | 5000 |
| GROUNDHOG_BROWSER_IMAGE | No | Image used for auto-start. | ghcr.io/dmytrome/groundhog:latest |
| GROUNDHOG_SEARCH_BACKEND | No | auto (SearXNG when SEARXNG_URL is set, else SERP), or force searxng / serp. | auto |
| GROUNDHOG_BLOCK_PRIVATE_IPS | No | Enforce the SSRF guard (resolve + block private ranges). | true |
| GROUNDHOG_AUTO_START_BROWSER | No | Auto-pull-and-run the browser container when it isn't reachable. | true |
| GROUNDHOG_MAX_CONCURRENT_PAGES | No | Cap on concurrent open tabs. | 4 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| read_urlA | Fetch one web page through the stealth browser and return clean, grounded content with provenance. Hidden text injected for models but invisible to humans is stripped by default
and reported in Reads a URL you already have: use |
| researchA | Search the web and return ranked passages drawn from several sources. One call does what Prefer |
| searchA | Search the web and return ranked hits (title, url, snippet, engine). Not for reading: it returns links, never page content. Use Use this to find pages, then pass the URLs you want to |
| statusA | Check whether Groundhog can reach the stealth browser. Call this to
diagnose setup before fetching: if |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| audit_hidden_text | Show what a page hides from human readers, and what it would have fed a model. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 4 tools
Each tool has a distinct purpose: status checks browser connectivity, search returns links only, read_url fetches a known URL, and research combines search and reading into one call. The descriptions explicitly call out the boundaries between search, read_url, and research, so an agent should not confuse them.
The names are readable and all lowercase, but they follow mixed conventions: read_url uses a verb_noun pattern, status is a noun, and search/research are bare verbs. There is no consistent structural pattern across the set, though the names themselves are not misleading.
Four tools is well-scoped for the server's purpose: setup diagnostics, link-only search, single-page reading, and combined research. Each tool fills a necessary role without redundancy or bloat.
The tool surface covers the full workflow: check browser readiness, discover URLs via search, read a specific page via read_url, and get synthesized passages via research. There are no obvious dead ends or missing operations for the stated web-research purpose.