{
  "markdown": "# BizIntel MCP — Local Business Intelligence for AI Agents\n\n> Real-time website audits, lead scoring, tech-stack detection, and local-business search — exposed as an MCP server. Built for AI agents doing sales outreach, competitor research, and prospecting at scale.\n\n---\n\n## MCPize Listing Copy\n\n**Title:** BizIntel MCP — Real-Time Local Business Intelligence\n\n**Subtitle:** Audit any website, score leads, find businesses with no booking system. Pay per call.\n\n**Description (2 paragraphs):**\n\nBizIntel is a paid MCP server that gives AI agents instant access to the kind of local-business intelligence sales teams used to pay analysts to gather. One call to `audit_website` returns a 0-100 score across SSL, mobile-readiness, page speed, contact form presence, and online booking — plus a tech-stack fingerprint (CMS, booking platform, email provider, analytics). Agents pointed at \"find dentists in Austin with no booking system\" get a ranked, contactable list in seconds, not hours.\n\nThe MCP exposes eight tools — `audit_website`, `bulk_audit`, `search_businesses`, `get_business_details`, `score_lead`, `find_no_website`, `find_no_booking`, `get_tech_stack` — backed by Yelp Fusion (or OSM/Overpass when no Yelp key is provided), an aiohttp scanner running 10 concurrent fetches, and a 24-hour SQLite cache so repeat calls don't burn quota. Drop it into Claude Desktop, Cursor, or any agent and your prospecting pipeline becomes one tool call wide.\n\n---\n\n## Pricing\n\n| Tier | Price | Limits |\n|------|-------|--------|\n| **Free / Dev** | $0 | 20 calls / 24h |\n| **Pro** | **$19/mo** | Unlimited |\n| **Pay-as-you-go** | **$0.05/call** | No floor |\n\nUpgrade: <https://mcpize.com/bizintel-mcp>\n\n---\n\n## Tools\n\n| Tool | Args | Returns |\n|------|------|---------|\n| `audit_website` | `url` | Score 0-100, SSL, HTTPS redirect, viewport, load_time_ms, contact form, booking, tech_stack |\n| `search_businesses` | `niche, city, state, limit` | List of normalized business records |\n| `get_business_details` | `business_name, city` | Full record: phone, address, website, hours, rating, lat/lon |\n| `bulk_audit` | `urls` (≤20) | Audit results sorted worst→best (best leads first) |\n| `score_lead` | `business_name, city, niche` | Composite 0-100 lead score with breakdown |\n| `find_no_website` | `niche, city, state, limit` | Hottest cold-outreach leads — ranked |\n| `find_no_booking` | `niche, city, state, limit` | Have a site, no online booking — SaaS-pitch ready |\n| `get_tech_stack` | `url` | CMS / booking / email / analytics fingerprint |\n\n---\n\n## Quickstart\n\n### Add to Claude Desktop / Claude Code\n\n```bash\nclaude mcp add bizintel-mcp --url https://mcp-bizintel.up.railway.app/mcp\n```\n\nSet your API key in the MCP config (header `X-API-Key`). The default dev key `bizintel-dev-key-001` is good for 20 calls per day.\n\n### Direct HTTP\n\n```bash\ncurl -X POST https://mcp-bizintel.up.railway.app/v1/find_no_booking \\\n  -H \"X-API-Key: bizintel-dev-key-001\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"niche\":\"dentist\",\"city\":\"Austin\",\"state\":\"TX\",\"limit\":10}'\n```\n\n### Example agent prompt\n\n> Find dentists in Austin with no booking system, audit the top 5, and write a one-line cold-email opener for each that references their actual tech stack.\n\n---\n\n## Local Dev\n\n```bash\npip install -r requirements.txt\ncp .env.example .env  # fill in YELP_API_KEY (optional)\npython -m uvicorn server:app --reload --port 8000\npytest -v\n```\n\nWithout a Yelp key, search/details fall back to OSM (Nominatim + Overpass). Coverage is sparser but free.\n\n---\n\n## Deploy\n\n`bash deploy.sh` from Brett's Mac — pulls secrets from the shared workspace `.deploy-secrets.env`, links/initializes the Railway project, sets env vars, and runs `railway up`. Pre-deploy pytest is part of the script so you can't ship a broken build.\n\n---\n\n## Architecture\n\n```\nserver.py                FastAPI + fastmcp; HTTP at /v1/* and MCP at /mcp\ntools/audit.py           Async aiohttp auditor (10 concurrent, 5s timeout)\ntools/techstack.py       CMS / booking / email / analytics fingerprints\ntools/search.py          Yelp Fusion primary, OSM Overpass fallback\ntools/scoring.py         Composite lead score (0-100)\ndb/cache.py              SQLite cache + per-key call ledger\ndb/keys.py               Tier classification + 24h sliding window\nnixpacks.toml            Railway build config\n```\n\nCaching: audits cached 6h, business details 24h, search results 12h. The cache is a single SQLite file with WAL mode — no Redis needed for the price point.\n\n---\n\n## Known Limitations\n\n1. **Yelp doesn't expose external website URL** in `/businesses/search`. We return `yelp_url` as a stable handle; for a real domain, agents should chain `get_business_details` (returns hours/photos) and follow the Yelp page or use `find_no_website` (where OSM-tagged sites are surfaced).\n2. **OSM coverage is uneven** — some niches map cleanly (`dentist`, `restaurant`); long-tail US small business categories (`pickleball coach`, `yacht detailer`) won't resolve.\n3. **No headless rendering** — JS-heavy sites that gate content behind hydration won't expose contact/booking signals to the audit. This is intentional; we trade completeness for 5-second batched audits.\n4. **Tech-stack detection is signature-based**, not Wappalyzer-grade. We catch the common 90% (WP, Wix, Shopify, Squarespace, Calendly, Mindbody, GA4, Klaviyo) — not obscure custom stacks.\n5. **Rate-limit window is sliding 24h**, stored per-API-key in SQLite. Restart the container and the ledger persists; clear the DB to reset all dev quotas.\n\n---\n\n## License\n\nProprietary — © 2026.\n",
  "bytes": 5590,
  "sha": "f30ae158d016bd13001820ffaaf71bc32f0866dd738b753f80029943b387e2d8",
  "repo_slug": "bch1212/mcp-bizintel",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_bch1212_bizintel_275921e3/readme"
}