HelloGrowth CRM MCP

by MeruLocal

293 downloads
Not rated
GitHub

About

HelloGrowth CRM MCP is an AI-powered CRM integration platform that enables secure AI access to CRM data, lead and customer management, deal tracking, task automation, and business workflow orchestration through a standardized MCP interface.

Details

Author
MeruLocal
Downloads
293
Categories
Search, AI, Automation, Productivity

- Eight bot governance tools for full lifecycle management
- 55+ known bot signatures with risk scoring
- Behavioural risk scoring from 0 to 100
- PTR + forward DNS identity verification
- robots.txt and sitemap.xml parser with proper semantics
- 73 additional website data tools (blog, pricing, features, etc.)

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name HelloGrowth CRM MCP
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Clone the repository, copy .env.example to .env, run npm install && npm run build, then start with node dist/index.js (or npm run dev for development). The server communicates over stdio; configure it as an MCP server in your client using the path to dist/index.js and environment variables such as DEFAULT_TARGET_URL.

scan_website_bots

Politely scan a website's robots.txt and sitemap, sample a few pages, and (optionally) correlate with access-log activity. Always honours robots.txt for our own User-Agent.

analyze_access_logs

Parse a Combined/Common-format access log file (or raw text) and return per-bot summaries with risk scores, allow status, and recommended actions.

verify_bot_identity

Reverse-DNS verify a bot's claimed identity. Returns `verified`, `spoofed`, or `unknown` along with an audit trail of the steps taken.

list_allowed_bots

List bots that should be allowed. If a robots.txt is given, the answer reflects what that file actually permits.

list_blocked_bots

List bots that should be blocked. If a robots.txt is given, the answer is the set actually Disallowed there; otherwise we return high-risk bots by baseline.

generate_robots_txt

Generate a production-ready robots.txt that explicitly allows trusted bots, blocks chosen categories (AI, SEO, scrapers), and declares sitemaps.

suggest_bot_policy

Recommend a per-bot policy based on observed access-log behaviour. Returns rationale and ready-to-paste robots.txt + firewall snippets.

export_bot_report

Generate a bot-activity report (markdown / json / csv) and optionally save it under REPORT_OUTPUT_DIR.

fetch_page_content

Fetch a single web page and return its title, meta description, canonical, robots directive, headings, in-page links, word count, and readable text. Respects robots.txt for the crawler's own User-Agent. Output is bounded so it is safe to feed to a model.

crawl_pages

Discover pages from the sitemap and return a compact content summary (title, meta description, top headings, and a short text excerpt) for each. Respects robots.txt. Returns one small object per page so many pages fit in a model's context.

generate_llms_txt

Generate llms.txt or llms-full.txt from this server's website mirror (integrations, features, tools, glossary, alternatives, templates, guides, agents, pricing, industries, comparisons, FAQs). Replaces hand-maintained corpus files that drift out of date — the live llms-full.txt is currently smaller than llms.txt. Returns the rendered text plus section and entry counts.

check_llms_txt

Fetch the live /llms.txt and /llms-full.txt and report regressions: missing files, and the case where the 'full' corpus is no larger than its own index. Also compares both against what generate_llms_txt would produce from the current mirror, so corpus drift is visible.

check_ai_extractability

For each URL, report how much readable text lives in <main> versus <body> versus the whole document, and flag pages where <main> is an empty shell while the real content sits elsewhere (the streaming/PPR pattern). Catches the failure mode where a page returns HTTP 200 with perfect metadata but reads as blank to any AI extractor that prefers <main>. Respects robots.txt; does not spoof a User-Agent.

validate_sitemaps

Expand a sitemap index and fetch every child sitemap, reporting status, elapsed time, byte size and <loc> count for each. Flags children that time out or reset — the failure mode where the index itself returns 200 (so monitoring looks green) while individual sitemaps are entirely unreachable to crawlers. Use a timeoutMs above the platform timeout you suspect.

blog_list

List blog posts with pagination and optional category filter. Returns slug, title, author, category, published_at, excerpt.

blog_get

Fetch a single blog post by its slug, including full content.

blog_search

Full-text search across blog post titles, content, and excerpts.

blog_create

Insert a new blog post into the database.

blog_update

Update fields on an existing blog post by slug.

blog_revalidate

Trigger ISR cache revalidation for a blog post or the blog index on hellogrowthcrm.com.

blog_get_categories

List all distinct blog categories present in the database.

help_list_categories

List all help center categories from the database.

help_list_articles

List help articles, optionally filtered by category slug.

help_get_article

Fetch a single help article by slug including steps and FAQs.

help_search

Full-text search across help article titles and intro text.

help_create_article

Create a new help center article.

help_update_article

Update fields on an existing help article by slug.

newsletter_subscribe

Add a new newsletter subscriber (sets status to 'pending' until email confirmed).

newsletter_unsubscribe

Remove a newsletter subscriber by email address or unsubscribe token.

newsletter_get_subscribers

List newsletter subscribers with status filter and pagination.

newsletter_get_stats

Get total newsletter subscriber counts broken down by status (confirmed, pending, unsubscribed).

forms_list_submissions

List contact form submissions with optional date range filter and pagination.

forms_get_submission

Fetch a single contact form submission by ID.

forms_submit

Submit a contact form entry directly into the database (bypasses CAPTCHA — use for internal/automation submissions only).

forms_export_csv

Export contact form submissions as CSV text for the given date range.

content_list_case_studies

List case studies by industry. Returns all industries if no filter given.

content_get_comparison

Get metadata for a competitor comparison page by slug.

content_list_comparisons

List all competitor comparison pages available on hellogrowthcrm.com.

content_list_industries

List all industry vertical pages available on hellogrowthcrm.com.

content_list_tools

List all 119 free tools and calculators on hellogrowthcrm.com. Filterable by keyword and category (ai, communication, ops, free).

content_get_seo_rules

Return the SEO rules and guardrails for hellogrowthcrm.com content.

pricing_get_plans

Get HelloGrowthCRM CRM plans. The ladder is Free Forever → Growth → Enterprise in every market. Use region='global' for USD or region='india' for INR. Managed RevOps retainers are a separate service — call pricing_get_managed_revops for those.

pricing_get_addons

Get HelloGrowthCRM add-on pricing: dialer tiers (USD/INR) and India AI credit top-up bundles.

pricing_get_faq

Get pricing FAQs for HelloGrowthCRM — trials, refunds, billing, discounts, payment methods.

pricing_compare_plans

Compare two HelloGrowthCRM plans side by side — shows price difference and feature delta.

pricing_get_country_plans

Get HelloGrowthCRM country-localized pricing for the 8 market hubs: currency, the Growth plan's annual and monthly per-user price, the full plan-ladder summary line, accepted payment methods, compliance posture, and the country pricing page URL.

pricing_get_managed_revops

Get HelloGrowthCRM Managed RevOps service pricing — the Growth Engine and RevOps Partner tiers, as a flat monthly retainer in local currency. This is a done-for-you service where HelloGrowthCRM specialists run the customer's pipeline; it is NOT a per-seat CRM plan. Available as an add-on on Growth and included with Enterprise.

features_list

List all HelloGrowthCRM product features. Supports filtering by category, plan tier, and keyword search.

features_get

Get full details for a specific HelloGrowthCRM feature by slug — summary, plan availability, key benefits, and learn-more URL.

features_list_products

List all HelloGrowthCRM product pages with their status (active or coming soon), descriptions, and URLs.

analytics_social_proof

Fetch recent signup and testimonial data used for social proof widgets on hellogrowthcrm.com.

countries_list

List the 8 country-specific markets HelloGrowthCRM ships localized hubs for (India, USA, UK, Canada, Australia, UAE, Singapore, New Zealand) with currency, BCP-47 locale, route prefix, and tax/compliance references.

country_get

Full country market profile for a HelloGrowthCRM localized hub: currency, locale, target cities, channels, compliance, regional contact, pricing summary, hreflang cluster, and canonical URL.

company_get_profile

HelloGrowthCRM company / brand profile: legal entities (Soor LLC US, Meru Technosoft Pvt. Ltd. India), founding date, registered address, social/review profiles (Organization.sameAs), brand colors and logos.

company_get_contacts

HelloGrowthCRM regional contact / location data: support phone (E.164 + display), office address, and business hours per region. Pass a country code to resolve the right office.

seo_get_site_config

Site-wide SEO constants for hellogrowthcrm.com: canonical host, default title/description, Twitter handle, alternate brand names, and Organization entity basics (mirror of lib/seo/site.ts).

seo_get_hreflang

Return the exact hreflang alternate tag set hellogrowthcrm.com emits for a given path (faithful port of lib/hreflang.ts). Use to verify country/language targeting and bidirectional mesh.

seo_get_canonical

Resolve a site-relative path to its canonical absolute URL on the apex host (no www, no trailing slash).

seo_get_sitemaps

Return the sitemap index and all child sitemaps for hellogrowthcrm.com (core, blog, help, tools, industries, alternatives, agentic-ai, image, video).

seo_get_schema

List the structured-data (JSON-LD) types hellogrowthcrm.com emits and their scope, plus the live Organization schema object. Note: FAQPage JSON-LD is permanently retired site-wide.

products_list

List HelloGrowthCRM product / feature pages served at /product/[slug] (AI Pipeline, Built-in Dialer, HelloMail, Predictive Analytics, etc.).

product_get

Get a single HelloGrowthCRM product/feature page by slug with its canonical URL.

integrations_list

List the HelloGrowthCRM integrations catalog mirrored from hellogrowthcrm.com/integrations (630 documented entries across 116 categories; 630+ total apps reachable incl. Zapier). Filterable by category and keyword.

integrations_get

Get one HelloGrowthCRM integration by slug with its name, category, description, status, and page URL on hellogrowthcrm.com.

integrations_list_categories

List all integration categories on hellogrowthcrm.com/integrations with the number of documented integrations in each.

agents_list

List all 12 HelloGrowthCRM Agentic AI agents from hellogrowthcrm.com/agentic-ai (Voice Agent, Journey Agent, Post-Call Agent, MCP Connector, etc.) with slug, route, tagline, summary, and autonomy level.

agents_get

Get full mirrored detail for one HelloGrowthCRM AI agent by slug: tagline, summary, autonomy level, capabilities, how-it-works steps, risk signals, and FAQs where the page provides them.

agents_get_autonomy_levels

Return HelloGrowthCRM's publicly documented AI agent autonomy framework from hellogrowthcrm.com/agentic-ai/autonomy-levels: the three levels (Fully Autonomous, Supervised, Assistive), the capability matrix, and the safety rails built into every agent.

agents_list_comparisons

List HelloGrowthCRM's four Agentic AI competitor comparison pages (vs Salesforce Agentforce, HubSpot Breeze, Zoho Zia, Microsoft Copilot for Sales) with the positioning summary mirrored from each page.

glossary_list_terms

List all CRM/sales glossary terms published at hellogrowthcrm.com/glossary. Each entry has a slug, term name, and one-line definition. Optionally filter by a search keyword. (The website glossary has no categories.)

glossary_get_term

Get a single glossary entry by slug (or exact term name, case-insensitive) with its definition, related links, and canonical URL.

templates_list

List the free CRM templates published at hellogrowthcrm.com/templates (pipelines, email sequences, lead scoring models, sales workflows, onboarding checklists, RevOps audits, GTM playbooks). Filterable by category and keyword.

templates_get

Get a single CRM template summary by slug — title, category, description, audience, download formats, last-updated date, and canonical URL.

guides_list

List the HelloGrowthCRM feature guides published at hellogrowthcrm.com/feature-guide — task-oriented guides grouped into 7 job categories (Capture & Organise, Communicate & Engage, Automate & Scale, Coach & Manage, Analyse & Forecast, Close Deals, AI-Powered Selling). Optionally filter by keyword.

guides_get

Get a single feature guide summary by slug — name, tagline, job category, audience, plan availability, problem description, capability section headings, deep-dive page path, and canonical URL.

alternatives_list

List all competitor alternative pages and curated alternatives shortlists on hellogrowthcrm.com — competitor name, slug, website route, and a one-line HelloGrowthCRM positioning where available.

alternatives_get

Get the full mirrored alternatives entry for a competitor: curated alternatives shortlist (HelloGrowthCRM + other picks with positioning blurbs) and, for WhatsApp-CRM competitors, the detailed page content (reasons, feature comparison, verdict).

switch_list_competitors

List all /switch-from-* CRM migration pages on hellogrowthcrm.com — competitor, slug, website route, and one-line summary. Use switch_get_guide for the full migration guide.

switch_get_guide

Get the mirrored migration guide for a /switch-from-* page: reasons to switch (pain points), feature comparison rows, key migration steps (data mapped), verdict, and FAQ topics.

changelog_list_releases

List HelloGrowthCRM changelog releases (shown at /changelog and /whats-new), newest first. Each release has a version, date, and tagged items (feature / improvement / fix / infra). Optionally filter by item tag and limit the count.

changelog_get_release

Get a single HelloGrowthCRM changelog release by version (e.g. 1.5.0) with its full list of tagged items.

faqs_get_site

Site-level FAQs for hellogrowthcrm.com (homepage FAQ block + standalone /faq page): 17 Q&A pairs covering product, AI, setup, imports, integrations, security, pricing, competitor comparisons, dialer, WhatsApp/SMS, and mobile — each with the contextual links shown on the website. Also returns the programmatic FAQ directory categories (currently empty in source). Optionally filter by keyword.

media_list_videos

List HelloGrowthCRM product / YouTube videos featured on hellogrowthcrm.com (home page video section + /videos page): 28 videos covering product demos & walkthroughs, feature explainers (AI lead scoring, dialer, task boards), competitor comparisons, and CRM education. Returns video id, watch URL, title, description, upload date, and badge.

media_list_testimonials

Customer testimonials for HelloGrowthCRM. Text testimonials (6 customer quotes shared by the homepage and /reviews, with author, role/company, rating, and outcome metric) are mirrored statically. Video testimonials are database-backed; this tool returns their record shape and where to browse them (/testimonials).

partners_get_program

HelloGrowthCRM Partner Program details (route: /partners): commission structure (50% revenue share in Year 1, 15% recurring from Year 2 on paid referrals), approval and agreement process, partner tracking code, certification requirement, who can apply, and the 8 official program FAQs.

partners_get_application_schema

Partner program application form schema — every field (name, group, type, required flag, allowed options, validation) mirrored from the website's partner-apply-schema.ts. Documents HOW to apply: the form is submitted on the /partners page; this MCP server does not submit partner applications directly.

solutions_list_whatsapp_use_cases

List the WhatsApp CRM message use cases built into HelloGrowthCRM's WhatsApp composer: general message, follow-up, meeting reminder, document request/share, and notification with link — each with its message template pattern. Messages are sent via wa.me deep links with prefilled, personalized text.

solutions_get_managed_revops

HelloGrowthCRM Managed RevOps service (done-for-you revenue operations). Without arguments: full service overview — what's included, weekly SOPs, KPIs, who it's for, pricing tiers across all 9 market pages (global, India, USA, UK, Australia, Canada, UAE, Singapore, New Zealand), all 25 US city landing pages, and related offerings (managed-crm-service, fractional-revops, free-revops-audit). With a `city` slug: that city page's summary and offer.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "hellogrowth crm mcp": {
            "hellogrowthcrm": {
                "url": "https://mcp.hellogrowthcrm.com/sse"
            }
        }
    }
}

McpServers

{
    "hellogrowthcrm": {
        "url": "https://mcp.hellogrowthcrm.com/sse"
    }
}

mcp-bot-crawler

An MCP (Model Context Protocol) server that helps you discover, identify, and govern every bot interacting with your website — search engines, AI crawlers, SEO tools, social-preview fetchers, security scanners, and the long tail of suspicious scripts. Plug it into any MCP-capable client (Claude Desktop, Cursor, Claude Code, custom Agent SDK app, etc.) and ask natural-language questions about your traffic. It is polite by design: it respects robots.txt, rate-limits its own fetches, advertises an honest User-Agent, and never tries to bypass any control.

Features

- Eight MCP tools covering the full bot-governance lifecycle (scan, analyze, verify, list, generate, suggest, export). - Curated database of 55+ well-known bots — Googlebot, Bingbot, GPTBot, ChatGPT-User, ClaudeBot, PerplexityBot, Amazonbot, Google-Extended, Applebot-Extended, FacebookBot, LinkedInBot, AhrefsBot, SemrushBot, Bytespider, and more — each tagged with category, operator, baseline risk, and reverse-DNS verification suffixes. - Behavioural risk scoring: combines UA matching, robots.txt compliance, error rate, request rate, and unique-path fan-out into a 0–100 score and a recommended action (allow / monitor / rate-limit / block / verify-identity). - Cryptographic-grade identity verification via PTR + forward DNS (same method documented by Google, Microsoft, OpenAI). - robots.txt + sitemap.xml parser with proper longest-match Allow/Disallow semantics. - Reports in Markdown, JSON, and CSV. - TypeScript-first, modular file layout, zero unsafe parsing.

Repository layout

`` mcp-bot-crawler/ ├─ src/ │ ├─ index.ts # entrypoint: loads .env, starts the MCP server │ ├─ server.ts # wires tools into ListTools / CallTool │ ├─ tools/ # one file per MCP tool │ │ ├─ scan-website-bots.ts │ │ ├─ analyze-access-logs.ts │ │ ├─ verify-bot-identity.ts │ │ ├─ list-allowed-bots.ts │ │ ├─ list-blocked-bots.ts │ │ ├─ generate-robots-txt.ts │ │ ├─ suggest-bot-policy.ts │ │ ├─ export-bot-report.ts │ │ ├─ tool-types.ts │ │ └─ index.ts │ ├─ core/ # detection engine │ │ ├─ bot-detector.ts │ │ ├─ aggregator.ts │ │ ├─ log-parser.ts │ │ ├─ robots-parser.ts │ │ ├─ reverse-dns.ts │ │ └─ crawler.ts # polite HTTP client │ ├─ data/known-bots.ts # signature database │ ├─ reports/report-generator.ts │ └─ utils/ # types, logger, rate limiter ├─ samples/ │ ├─ access.log # realistic mixed-bot traffic │ ├─ robots.txt │ └─ sitemap.xml ├─ examples/usage.md ├─ reports/ # generated reports land here ├─ .env.example ├─ package.json ├─ tsconfig.json └─ README.md `

Quick start

`bash

From the hellocrmwebsite repo root:

cd mcp-bot-crawler cp .env.example .env # already pre-configured for hellogrowthcrm.com npm install npm run build
` Run it on stdio: `bash node dist/index.js ` Or dev-mode (no build step, uses tsx): `bash npm run dev ` The server speaks MCP over stdio. Any MCP-capable client can launch it.

Claude Desktop / Claude Code

Add the following to your
claude_desktop_config.json (or the equivalent mcpServers block in your client): `json { "mcpServers": { "bot-crawler": { "command": "node", "args": ["/absolute/path/to/hellocrmwebsite/mcp-bot-crawler/dist/index.js"], "env": { "DEFAULT_TARGET_URL": "https://hellogrowthcrm.com", "DEFAULT_ACCESS_LOG": "/var/log/nginx/access.log", "CRAWLER_USER_AGENT": "mcp-bot-crawler/1.0 (+https://hellogrowthcrm.com/bot-info)" } } } } `

The eight MCP tools

| Tool | What it does | |------|--------------| |
scan_website_bots | Polite live scan: robots.txt + sitemap + sample pages, correlated with your access log. | | analyze_access_logs | Parses Apache/Nginx Combined-format logs and returns per-bot summaries with risk scores. | | verify_bot_identity | PTR + forward DNS verification of a specific (ip, userAgent) pair. | | list_allowed_bots | Bots permitted under the current policy (default curated, or live robots.txt). | | list_blocked_bots | Bots blocked under the current policy (default high-risk, or live robots.txt). | | generate_robots_txt | Policy-driven robots.txt generator (block AI / SEO / scrapers / security scanners, declare sitemaps, set Crawl-delay). | | suggest_bot_policy | For each bot observed in a log, recommends allow / monitor / rate-limit / block with rationale and ready-to-paste nginx snippet. | | export_bot_report | Writes a Markdown / JSON / CSV report under REPORT_OUTPUT_DIR. | Full payload examples live in examples/usage.md.

Full MCP tool catalog (81 tools)

Beyond the original eight bot-governance tools, this server exposes the entire hellogrowthcrm.com website — every module, feature, product, pricing table, AI agent, and integration — as MCP tools. Live content (blog, help, newsletter, forms, social proof) is served from Supabase; everything else is a read-mirror of the website source files (see
WEBSITE_DATA_TOOLS.md). | Category | Tools | |----------|-------| | Bot governance (8) | scan_website_bots, analyze_access_logs, verify_bot_identity, list_allowed_bots, list_blocked_bots, generate_robots_txt, suggest_bot_policy, export_bot_report | | Blog (7) | blog_list, blog_get, blog_search, blog_create, blog_update, blog_revalidate, blog_get_categories | | Help center (6) | help_list_categories, help_list_articles, help_get_article, help_search, help_create_article, help_update_article | | Newsletter (4) | newsletter_subscribe, newsletter_unsubscribe, newsletter_get_subscribers, newsletter_get_stats | | Contact forms (4) | forms_submit, forms_list_submissions, forms_get_submission, forms_export_csv | | Static content (6) | content_list_case_studies, content_list_comparisons, content_get_comparison, content_list_industries, content_list_tools, content_get_seo_rules | | Pricing (5) | pricing_get_plans, pricing_get_addons, pricing_get_faq, pricing_compare_plans, pricing_get_country_plans | | Features (3) | features_list, features_get, features_list_products | | Analytics (1) | analytics_social_proof | | Countries (2) | countries_list, country_get | | Company (2) | company_get_profile, company_get_contacts | | SEO (5) | seo_get_site_config, seo_get_hreflang, seo_get_canonical, seo_get_sitemaps, seo_get_schema | | Products (2) | products_list, product_get | | Integrations (3) | integrations_list, integrations_get, integrations_list_categories — 397-entry catalog, 55 categories | | AI Agents / Agentic AI (4) | agents_list, agents_get, agents_get_autonomy_levels, agents_list_comparisons — 12 agents, autonomy matrix, 4 vs-competitor pages | | Glossary (2) | glossary_list_terms, glossary_get_term — 44 terms | | Templates (2) | templates_list, templates_get — 42 templates in 7 categories | | Feature guides (2) | guides_list, guides_get — 32 guides | | Alternatives & migration (4) | alternatives_list, alternatives_get, switch_list_competitors, switch_get_guide — 42 alternatives pages, 26 switch-from guides | | Changelog (2) | changelog_list_releases, changelog_get_release — 6 releases | | Site FAQs (1) | faqs_get_site | | Media (2) | media_list_videos, media_list_testimonials | | Partner program (2) | partners_get_program, partners_get_application_schema | | Solutions (2) | solutions_list_whatsapp_use_cases, solutions_get_managed_revops — incl. 9 market variants + 25 US city pages | All mirror tools carry synced_at provenance (last sync: 2026-06-11) and validate inputs with zod; unknown slugs return a clear error listing valid values. Run npm run build && node test-tools.mjs for 62 smoke assertions across the catalog.

How detection works

1. User-Agent matching. The signature database in
src/data/known-bots.ts defines each known bot with one or more case-insensitive UA patterns. The first match wins, so more specific signatures come first (e.g. Googlebot-Image before generic Googlebot). 2. Generic heuristics. If no signature hits, we look for automation hints (bot, crawler, spider, python-requests, headless, …) and classify the source as unknown — flagged for verification. 3. Behavioural enrichment. When access logs are available, the aggregator (src/core/aggregator.ts) computes hit count, unique IPs, error rate, request rate, unique paths, and how many requests hit paths Disallowed in robots.txt for that UA. These signals nudge the risk score and emit human-readable notes. 4. Identity verification. For high-trust signatures we keep documented PTR suffixes (.googlebot.com, .search.msn.com, etc.). verify_bot_identity runs reverse DNS, checks the suffix, then forward-resolves to ensure the IP matches. Spoofed Googlebots show up as spoofed.

Risk scoring

Baseline risk per bot lives in the signature DB (
0 = trusted search engine, 100 = hostile scraper). The aggregator adds bonuses for: - Bot ignoring robots.txt (+20) - Very high request rate (>1000 req/hr, +25; >300 req/hr, +10) - Error rate >50% — probing behaviour (+15) - Touching >5000 unique paths (+10) The recommended action is derived from the final score plus the category: - search/social ≤ 25 → allow - ai ≤ 40 → monitor - Score ≥ 70 → block - Score ≥ 45 → rate-limit - unknownverify-identity Tune these thresholds in src/core/bot-detector.ts if your environment is more or less permissive.

Security & politeness

- Respects robots.txt for outbound fetches.
scan_website_bots will not retrieve paths Disallowed for its own UA. - Per-host rate limiter (CRAWL_DELAY_MS, default 1 s). - Hard cap on sitemap pages (MAX_SITEMAP_PAGES, default 25). - HTTP timeout (HTTP_TIMEOUT_MS, default 10 s). - No content storage: only URL + HTTP status is recorded from sampled fetches. - Honest User-Agent with a contact URL — change it via CRAWLER_USER_AGENT. - stdout reserved for MCP: all logs go to stderr. The tools never attempt to bypass authentication, CAPTCHAs, paywalls, WAFs, or any other access control. They also never accept arbitrary code from inputs.

Configuration

All knobs live in
.env (see .env.example): | Variable | Default | Purpose | |----------|---------|---------| | DEFAULT_ACCESS_LOG | ./samples/access.log | Fallback log path. | | DEFAULT_TARGET_URL | https://example.com | Fallback site for scans. | | MAX_SITEMAP_PAGES | 25 | Hard cap per scan. | | CRAWL_DELAY_MS | 1000 | Per-host delay. | | HTTP_TIMEOUT_MS | 10000 | Per-request timeout. | | CRAWLER_USER_AGENT | mcp-bot-crawler/1.0 (+...) | Outbound UA. | | REPORT_OUTPUT_DIR | ./reports | Where exports land. | | LOG_LEVEL | info | error / warn / info / debug. | | ENABLE_MCP_ANALYTICS | false | Master switch for MCP/SSE analytics — must be true to send. | | GA4_MEASUREMENT_ID | — | GA4 stream id for MCP/SSE analytics (optional). | | GA4_API_SECRET | — | GA4 Measurement Protocol API secret (optional). | Privacy-first MCP/SSE usage analytics (connections, requests, tools, bots) are emitted to GA4 only when ENABLE_MCP_ANALYTICS=true and the GA4_* vars are set — and silently no-op otherwise. No raw IP, User-Agent, request body, or tool arguments are ever tracked. See docs/MCP_ANALYTICS.md.

Extending

Add a new bot:
`ts // src/data/known-bots.ts { name: "MyCorpBot", category: "search", operator: "MyCorp", userAgentPatterns: [/MyCorpBot/i], verifiedHostnameSuffixes: [".mycorp.com"], respectsRobotsTxt: true, baselineRisk: 10, description: "MyCorp search index crawler.", } ` Add a new tool: 1. Create src/tools/<name>.ts exporting { definition, schema, handle }. 2. Drop it into the tools array in src/tools/index.ts. Everything else (registration, schema validation, error handling) is automatic.

Development

`bash npm run dev # run with tsx, no build needed npm run typecheck # strict TS check npm run build # compile to dist/ npm test # (add your own tests under src/__tests__/) `

License

MIT — see
LICENSE.

Disclaimer

This project helps you observe and govern bots interacting with your own website. Do not use it to crawl, scrape, or analyze third-party sites without permission. Always respect
robots.txt`, terms of service, and applicable law.
No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.