Install
openclaw skills install @scorpiock/geekflareUse Geekflare for live web search (including full Google SERP results), scraping public webpages into Markdown or structured JSON, page metadata, brand identity (logos, colors, fonts), screenshots, URL-to-PDF, and website diagnostics such as uptime, DNS, DNSSEC, TLS/SSL, redirects, broken links, load time, and Lighthouse audits. Trigger when a user needs current public-web data, clean page content, a visual capture, or a health check of a website or domain, even if they do not mention Geekflare.
openclaw skills install @scorpiock/geekflareGeekflare turns public websites into agent-ready data: search results, clean page content, metadata, brand assets, screenshots, PDFs, and website diagnostics. This skill tells you which Geekflare tool fits each request and how to call it well.
Geekflare is a paid service with a free tier. Each call spends account credits (some options cost more, e.g. webScrape with aiPrompt). Do not spend credits on requests that a cheaper tool or no tool can answer.
Check in this order:
search, webScrape, screenshot, dnsRecord, …, often prefixed with the server name, e.g. geekflare or mcp__geekflare__). Use them. This is the preferred path.GEEKFLARE_API_KEY is set. Call the REST API with curl.Never print, log, echo, or repeat the API key, or the remote MCP URL (the key is part of its path). On a 401, ask the user to check that GEEKFLARE_API_KEY is set and valid.
Get an API key at https://dash.geekflare.com (free sign-up: https://auth.geekflare.com/register?service=geekflare_api) and store it in the environment as GEEKFLARE_API_KEY, for example in the shell profile or the agent's .env. Keep it out of files that are committed to git.
Geekflare's MCP server comes in two forms. Pick whichever the client supports:
| Form | Configuration |
|---|---|
| Remote (streamable HTTP) | URL https://mcp.geekflare.com/<API_KEY>/mcp |
| Local (stdio) | npx -y @geekflare/mcp with env API_KEY=<API_KEY> (Node.js 18+) |
Reference the environment variable instead of writing the key into config wherever the client supports it:
Gemini CLI. Install this repository as an extension. It registers the server and prompts for the key, storing it in the system keychain:
gemini extensions install https://github.com/geekflare/geekflare-skills
Claude Code. .mcp.json expands ${VAR}:
{
"mcpServers": {
"geekflare": {
"type": "http",
"url": "https://mcp.geekflare.com/${GEEKFLARE_API_KEY}/mcp"
}
}
}
Cursor. ~/.cursor/mcp.json or .cursor/mcp.json expands ${env:VAR}:
{
"mcpServers": {
"geekflare": {
"url": "https://mcp.geekflare.com/${env:GEEKFLARE_API_KEY}/mcp"
}
}
}
OpenClaw. openclaw.json expands ${VAR}. Single quotes keep the shell from expanding it, so the config stores the reference, not the key:
openclaw mcp set geekflare '{"url":"https://mcp.geekflare.com/${GEEKFLARE_API_KEY}/mcp","transport":"streamable-http","requestTimeoutMs":120000}'
Then verify with openclaw mcp probe geekflare.
Other clients (VS Code, Windsurf/Devin, Cline, Roo Code, Zed, Codex, n8n, …): see the per-client guides at https://docs.geekflare.com/mcp/overview. If a client cannot read environment variables in its MCP config, prefer the local npx form with API_KEY passed from the environment.
Some checks (lighthouse, full-page screenshots of heavy pages) can take a minute or more. Raise the client's MCP request timeout if calls time out.
| User intent | Tool | Notes |
|---|---|---|
| Find current information or relevant pages | search | Returns titles, URLs, snippets |
| See the actual Google results page (rankings, People Also Ask, AI Overview, related searches) | search with serp: true | First page only; set location/city for local results |
| News or image results | search with source: "news" / "images" | |
| Search and read the top results in one step | search with scrape: true | scrapeLimit 1–10 (default 3) |
| A short, cited answer to a question | search with groundedAnswer: true | Still return the source URLs |
| Read one page as clean text | webScrape | Default format: ["markdown"]; markdown-llm for compact LLM-ready text |
| Extract typed fields from a page | webScrape with aiPrompt (type: "schema") or extractionMode | template: "product" or "contact" for common shapes |
| Summarize, list items, sentiment, or keywords from a page | webScrape with aiPrompt (type: "summary", "listing", "sentiment", "keywords", "prompt") | Extra credits; prefer plain Markdown when you can summarize yourself |
| Title, description, canonical, Open Graph, Twitter Card only | metaScrape | Much cheaper than a full scrape |
| Logos, brand colors, fonts, social profiles | brand | mode: "enriched" adds company intelligence |
| Visual capture of a page or element | screenshot | fullPage, device, selector, theme, type |
| Save a page as a PDF | url2Pdf | format (a4, letter, …), orientation, margin |
| Is the site up? | siteStatus | |
| DNS records | dnsRecord | Pass types (e.g. ["MX","TXT"]) to limit output |
| DNSSEC configured? | dnsSec | |
| Certificate and TLS protocol support | tlsScan | |
| Redirect chain | redirectCheck | |
| Broken links on a page | brokenLink | |
| Page load time, optionally from other countries | loadTime | targetCountries up to 3 ISO codes |
| Time to first byte | ttfb | |
| Response headers / HTTP version support | httpHeader / httpProtocol | |
| HTTP resources on an HTTPS page | mixedContent | |
| Performance, SEO, accessibility, best-practices scores | lighthouse | Slow; device: "mobile" for mobile scores |
| Latency / network path | ping / mtr | |
| Open ports on a host | openPorts | Only for hosts the user owns or is authorized to test |
Full parameter notes: references/tools.md. Always read the live tool input schema before building arguments; it is the source of truth if it differs from this file.
metaScrape over webScrape when only title/description/OG data is needed, and plain Markdown over aiPrompt when you can do the analysis yourself.https://example.com/page) for page tools. Diagnostic tools accept a domain or URL.search and the URL you scraped. Distinguish what the tool returned from your own inference; never invent results, scores, or links.screenshot and url2Pdf return a hosted file URL by default; share the link (or show the image) rather than describing it.Research a topic with sources
search with a focused query, limit 5–10, and time (e.g. "m") when recency matters.webScrape the 1–3 most relevant URLs (or use scrape: true on the search).Check where a page ranks on Google
search with serp: true, the user's keyword, and location (country code) or city.Website health check
Run the relevant subset, in parallel when possible: siteStatus, tlsScan, dnsRecord, redirectCheck, mixedContent, brokenLink, loadTime. Add lighthouse when the user asks about performance or SEO scores. Summarize as a short list of passed checks and issues ranked by severity, each with the evidence the tool returned.
Brand or competitor snapshot
brand for logos/colors/fonts/socials, metaScrape for positioning copy, screenshot of the homepage for a visual.
| Response | What to do |
|---|---|
| 401 / invalid key | Ask the user to set or fix GEEKFLARE_API_KEY. Do not retry. |
| 402 / 403 / quota or credit message | Tell the user their plan or credits are the limit. Do not retry. |
| 400 / 422 | Fix the arguments (URL format, enum value) once; otherwise report the input problem. |
| 429 | Back off and retry once or twice. |
| Timeout / 5xx | Retry once; for lighthouse or heavy pages, increase requestTimeoutMs in the server config. Then report the failure. |
| Target site unreachable | Report it; siteStatus can confirm whether the site is down. |
Do not repeat an unchanged failing request; each attempt spends credits.
When MCP tools are not available, the same features are served at https://api.geekflare.com. Every endpoint is a POST with a JSON body. The key goes in the x-api-key header, never in the URL or query string:
curl -sS -X POST https://api.geekflare.com/dnsrecord \
-H "x-api-key: $GEEKFLARE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com","types":["A","MX"]}'
| MCP tool | REST path | MCP tool | REST path |
|---|---|---|---|
search | /search | siteStatus | /up |
webScrape | /webscraping | dnsRecord | /dnsrecord |
metaScrape | /metascraping | dnsSec | /dnssec |
brand | /brand | tlsScan | /tlsscan |
screenshot | /screenshot | redirectCheck | /redirectcheck |
url2Pdf | /url2pdf | brokenLink | /brokenlink |
lighthouse | /lighthouse | mixedContent | /mixedcontent |
loadTime | /loadtime | openPorts | /openport |
ping | /ping | mtr | /mtr |
Body fields mostly match the MCP parameters in references/tools.md. Before guessing a field, check the endpoint's page, listed in https://docs.geekflare.com/llms.txt. Pass the key via the environment variable ($GEEKFLARE_API_KEY), never as a literal in the command.