Every free tool is also an MCP tool and an HTTP endpoint. One URL, no account, no API key.
13 tools. Nothing stored beyond a 24 hour cache. Markdown copy for agents.
One URL, Streamable HTTP transport, no authentication. In Claude Code that is a single command; every other client takes the same URL in its own config.
claude mcp add --transport http superflow https://usesuperflow.ai/api/mcp{
"mcpServers": {
"superflow": {
"type": "http",
"url": "https://usesuperflow.ai/api/mcp"
}
}
}Settings → Developer → Edit Config, then restart the app.
{
"mcpServers": {
"superflow": {
"url": "https://usesuperflow.ai/api/mcp"
}
}
}code --add-mcp '{"name":"superflow","type":"http","url":"https://usesuperflow.ai/api/mcp"}'{
"mcpServers": {
"superflow": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://usesuperflow.ai/api/mcp"]
}
}
}Only needed for clients that predate the Streamable HTTP transport.
What your agent sees after connecting. Every tool takes a URL, except the two that take text.
| MCP tool | What it does | Arguments |
|---|---|---|
| check_ai_visibility | AI Visibility Checker. Check whether AI assistants (ChatGPT, Claude, Perplexity, Google AI) can reach, read, and cite a web page. | url, refresh? |
| check_robots_txt_for_ai | robots.txt AI Checker. Test a site's robots.txt against every AI crawler that matters (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, Googlebot, Bingbot and the rest) and report which are allowed, which are blocked, and which rule decided it. | url, refresh? |
| generate_llms_txt | llms.txt Generator. Generate llms.txt and llms-full.txt for a site, following the llmstxt.org convention. | url, refresh? |
| page_to_markdown | Markdown for Agents. Fetch one web page and convert it to clean CommonMark, with the navigation, cookie banners, and boilerplate stripped out. | url, refresh? |
| generate_json_ld | JSON-LD Generator. Read a page and write a schema.org JSON-LD block for it, then validate that block against the same checks a validator would run. | url, refresh? |
| validate_json_ld | JSON-LD Validator. Read the structured data already on a page and check it against Schema.org and what search engines actually accept. | url, refresh? |
| check_social_preview | Social Preview Checker. Read a page's Open Graph and Twitter card tags and report how the link will render on X, LinkedIn, Facebook, Slack, Discord, and Google. | url, refresh? |
| detect_tech_stack | Tech Stack Detector. Identify the platform, framework, CMS, ecommerce apps, analytics, CDN, and hosting behind a site by fingerprinting one page's HTML and response headers. | url, refresh? |
| check_favicon | Favicon Checker. Check whether a site's favicon actually works. | url, refresh? |
| capture_full_page_screenshot | Full Page Screenshot. Capture a full-height PNG of a page in a real headless browser, scrolling first so lazy-loaded content renders. | url, refresh? |
| generate_alt_text | Alt Text Generator. Find every image on a page and draft alt text for the ones that need it, using a vision model that actually looks at the image. | url, refresh? |
| build_utm_url | UTM Builder. Build a campaign URL with utm parameters, normalised to one tagging convention, and report which GA4 default channel group the link will land in. | url, source?, medium?, campaign?, id?, term?, content?, caseRule?, spaceRule?, stripPunctuation? |
| hash_md5 | MD5 Hash Generator. Hash text to an MD5 hex digest. | text |
The same tools without MCP. Every endpoint takes a JSON body with a URL and answers with JSON. Add "refresh": true to skip the 24 hour cache and run again.
curl -sS https://usesuperflow.ai/api/tools/ai-visibility \
-H 'Content-Type: application/json' \
-d '{"url":"example.com"}'| Endpoint | Returns | Limit | Allow |
|---|---|---|---|
| POST /api/tools/ai-visibility | { ok, report: { score, grade, scoredOutOf, categories[], findings[] with why and fix, detection }, cached, ageSeconds } | 10 runs per hour per IP | 75s |
| POST /api/tools/robots-txt-ai-checker | { ok, report: { accessScore, crawlers[] with the rule that decided each verdict, firewall, findings[] }, cached, ageSeconds } | 10 runs per hour per IP | 75s |
| POST /api/tools/llms-txt-generator | { ok, report: { siteName, llmsTxt, llmsFullTxt, pagesDiscovered, pagesIncluded, truncated }, cached, ageSeconds } | 10 runs per hour per IP | 75s |
| POST /api/tools/markdown-for-agents | { ok, report: { markdown, title, description, wordCount, bytes, truncated, httpStatus }, cached, ageSeconds } | 10 runs per hour per IP | 75s |
| POST /api/tools/json-ld-generator | { ok, report: { detectedType, jsonLd, jsonLdString, validation: { findings[], passed }, model } } | 10 runs per hour per IP | 75s |
| POST /api/tools/json-ld-validator | { ok, report: { blockCount, invalidBlockCount, declaredTypes[], eligibility[], categories[], findings[] } } | 10 runs per hour per IP | 75s |
| POST /api/tools/social-preview | { ok, report: { previews[] per platform, tags, summary, findings[] }, cached, ageSeconds } | 10 runs per hour per IP | 75s |
| POST /api/tools/tech-stack | { platformName, theme, apps[], fonts[], analytics[], hosting[], renderMode, url, status, fetchedAt } | 60 runs per hour per IP | 30s |
| POST /api/tools/favicon-checker | { hasWorkingFavicon, tabIcon, icons[] with format, dimensions, bytes and problem, manifest, themeColor, checks[] with id, status and fix, counts } | 60 runs per hour per IP | 30s |
| POST /api/tools/full-page-screenshot | { imageUrl, expiresAt, bytes, width, height, deviceType } | 10 runs per hour per IP | 90s |
| POST /api/tools/alt-text-generator | { images[] with src, hadAlt, currentAlt, suggestedAlt, isDecorative, skippedReason; counts; model } | 10 runs per hour per IP | 90s |
| POST /api/tools/utm-builder | { url, normalized, channel, issues[] with level, field and message } | None. The work is local and costs nothing. | 10s |
| POST /api/tools/md5 | { md5, algorithm, bytes } | None. The work is local and costs nothing. | 10s |
A failed run is still JSON. Depending on the endpoint it comes back either as { ok: false, code, message } with a 4xx, or as HTTP 200 carrying an error field and an errorCode. Both carry a message written for a human to read as-is. There is never a stack trace and never an empty 500. Over MCP both shapes surface as a tool error, so an agent does not have to know which endpoint uses which.
The codes worth branching on are invalid-url (including anything private, local, or not on the public internet), rate-limited (carries retryAfterSeconds), blocked (bot protection answered instead of the site), and budget-exhausted (the monthly model spend on the two AI-backed tools, which fails closed rather than inventing an answer).
No. There is no signup, no key, and no OAuth step. The endpoint is open and the tools are free. What limits use is a per-IP rate limit, not a credential.