leadintel 0.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- leadintel-0.3.0/LICENSE +21 -0
- leadintel-0.3.0/PKG-INFO +351 -0
- leadintel-0.3.0/README.md +317 -0
- leadintel-0.3.0/pyproject.toml +94 -0
- leadintel-0.3.0/pyproject.toml.orig +90 -0
- leadintel-0.3.0/src/leadintel/__init__.py +6 -0
- leadintel-0.3.0/src/leadintel/__main__.py +6 -0
- leadintel-0.3.0/src/leadintel/config.py +165 -0
- leadintel-0.3.0/src/leadintel/data/__init__.py +1 -0
- leadintel-0.3.0/src/leadintel/data/demo.py +315 -0
- leadintel-0.3.0/src/leadintel/exporters/__init__.py +6 -0
- leadintel-0.3.0/src/leadintel/exporters/csv_exporter.py +113 -0
- leadintel-0.3.0/src/leadintel/exporters/excel_exporter.py +123 -0
- leadintel-0.3.0/src/leadintel/models/__init__.py +6 -0
- leadintel-0.3.0/src/leadintel/models/business.py +203 -0
- leadintel-0.3.0/src/leadintel/models/report.py +31 -0
- leadintel-0.3.0/src/leadintel/providers/__init__.py +51 -0
- leadintel-0.3.0/src/leadintel/providers/base.py +54 -0
- leadintel-0.3.0/src/leadintel/providers/demo_provider.py +65 -0
- leadintel-0.3.0/src/leadintel/providers/overpass_provider.py +1040 -0
- leadintel-0.3.0/src/leadintel/providers/registry.py +151 -0
- leadintel-0.3.0/src/leadintel/server.py +61 -0
- leadintel-0.3.0/src/leadintel/services/__init__.py +48 -0
- leadintel-0.3.0/src/leadintel/services/ai_business_insights.py +310 -0
- leadintel-0.3.0/src/leadintel/services/business_comparison.py +220 -0
- leadintel-0.3.0/src/leadintel/services/business_report.py +294 -0
- leadintel-0.3.0/src/leadintel/services/competitor_research.py +293 -0
- leadintel-0.3.0/src/leadintel/services/lead_scoring.py +385 -0
- leadintel-0.3.0/src/leadintel/services/local_ai.py +186 -0
- leadintel-0.3.0/src/leadintel/services/robots_checker.py +81 -0
- leadintel-0.3.0/src/leadintel/services/seo_auditor.py +281 -0
- leadintel-0.3.0/src/leadintel/services/social_finder.py +119 -0
- leadintel-0.3.0/src/leadintel/services/url_validator.py +295 -0
- leadintel-0.3.0/src/leadintel/services/website_analyzer.py +213 -0
- leadintel-0.3.0/src/leadintel/services/website_opportunity.py +523 -0
- leadintel-0.3.0/src/leadintel/storage/__init__.py +12 -0
- leadintel-0.3.0/src/leadintel/storage/db.py +189 -0
- leadintel-0.3.0/src/leadintel/storage/path_validator.py +118 -0
- leadintel-0.3.0/src/leadintel/tools/__init__.py +38 -0
- leadintel-0.3.0/src/leadintel/tools/analyze_website.py +57 -0
- leadintel-0.3.0/src/leadintel/tools/check_seo.py +64 -0
- leadintel-0.3.0/src/leadintel/tools/compare_businesses.py +65 -0
- leadintel-0.3.0/src/leadintel/tools/export_leads.py +112 -0
- leadintel-0.3.0/src/leadintel/tools/find_business_website.py +66 -0
- leadintel-0.3.0/src/leadintel/tools/find_competitors.py +75 -0
- leadintel-0.3.0/src/leadintel/tools/find_social_profiles.py +85 -0
- leadintel-0.3.0/src/leadintel/tools/generate_business_insights.py +93 -0
- leadintel-0.3.0/src/leadintel/tools/generate_business_report.py +92 -0
- leadintel-0.3.0/src/leadintel/tools/generate_outreach.py +153 -0
- leadintel-0.3.0/src/leadintel/tools/get_business_details.py +96 -0
- leadintel-0.3.0/src/leadintel/tools/get_saved_leads.py +58 -0
- leadintel-0.3.0/src/leadintel/tools/score_lead.py +88 -0
- leadintel-0.3.0/src/leadintel/tools/search_businesses.py +305 -0
- leadintel-0.3.0/src/leadintel/tools/website_finder.py +147 -0
leadintel-0.3.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Rushikesh Suradkar
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
leadintel-0.3.0/PKG-INFO
ADDED
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: leadintel
|
|
3
|
+
Version: 0.3.0
|
|
4
|
+
Summary: Free, open-source MCP server for AI-powered B2B lead generation and business intelligence.
|
|
5
|
+
Keywords: mcp,model-context-protocol,lead-generation,business-intelligence,b2b,seo-audit,competitor-analysis,ollama,local-first
|
|
6
|
+
Author: Rushikesh Suradkar
|
|
7
|
+
Author-email: Rushikesh Suradkar <rushikesheleven@gmail.com>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Office/Business
|
|
16
|
+
Classifier: Topic :: Internet :: WWW/HTTP :: Indexing/Search
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
18
|
+
Requires-Dist: aiofiles>=25.1.0
|
|
19
|
+
Requires-Dist: beautifulsoup4>=4.15.0
|
|
20
|
+
Requires-Dist: httpx>=0.28.1
|
|
21
|
+
Requires-Dist: mcp[cli]>=2.3.0
|
|
22
|
+
Requires-Dist: openpyxl>=3.1.5
|
|
23
|
+
Requires-Dist: pydantic>=2.14.2
|
|
24
|
+
Requires-Dist: python-dotenv>=1.2.4
|
|
25
|
+
Requires-Dist: google-generativeai>=0.8 ; extra == 'gemini'
|
|
26
|
+
Requires-Python: >=3.11
|
|
27
|
+
Project-URL: Homepage, https://github.com/example/leadintel
|
|
28
|
+
Project-URL: Repository, https://github.com/example/leadintel
|
|
29
|
+
Project-URL: Bug Tracker, https://github.com/example/leadintel/issues
|
|
30
|
+
Project-URL: Documentation, https://github.com/example/leadintel#readme
|
|
31
|
+
Provides-Extra: gemini
|
|
32
|
+
Provides-Extra: ollama
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# LeadIntel
|
|
36
|
+
|
|
37
|
+
> **Free, open-source, local-first Model Context Protocol (MCP) server and Python library for AI-powered business intelligence and B2B lead generation.**
|
|
38
|
+
|
|
39
|
+
[](https://opensource.org/licenses/MIT)
|
|
40
|
+
[](https://www.python.org/downloads/)
|
|
41
|
+
[](https://modelcontextprotocol.io/)
|
|
42
|
+
[](https://docs.astral.sh/uv/)
|
|
43
|
+
|
|
44
|
+
LeadIntel empowers AI assistants — such as Claude Desktop, Google Antigravity, and other MCP-compatible clients — to discover businesses, audit websites, benchmark competitors, evaluate deterministic lead scores, run local AI strategic insights via Ollama, export publication-grade multi-sheet Excel spreadsheets, and generate executive business intelligence reports.
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Core Principles
|
|
49
|
+
|
|
50
|
+
- **100% Free & Open-Source**: Licensed under the permissive MIT License.
|
|
51
|
+
- **Local-First Architecture**: No mandatory paid APIs, no mandatory API keys, no billing accounts, and no subscriptions.
|
|
52
|
+
- **Deterministic Lead Scoring**: Transparent, evidence-based scoring models (0–100) that distinguish verified gaps from unavailable information without arbitrary penalties.
|
|
53
|
+
- **Strict Privacy**: Zero telemetry, zero cloud AI exfiltration. Optional AI uses local Ollama instances (`http://localhost:11434`).
|
|
54
|
+
- **Ethical & Compliant**: Adheres to OpenStreetMap ODbL 1.0 licensing, respects website `robots.txt` rules, prevents private personal data harvesting, and provides comprehensive SSRF and path traversal protections.
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Architecture
|
|
59
|
+
|
|
60
|
+
LeadIntel is structured into clean, decoupled layers:
|
|
61
|
+
|
|
62
|
+
```mermaid
|
|
63
|
+
graph TD
|
|
64
|
+
Client["MCP Clients (Claude Desktop / Antigravity / Cursor)"] --> MCP["LeadIntel MCP Server (stdio transport)"]
|
|
65
|
+
|
|
66
|
+
subgraph "LeadIntel Tools (14 Registered MCP Tools)"
|
|
67
|
+
T1["search_businesses"]
|
|
68
|
+
T2["get_business_details"]
|
|
69
|
+
T3["find_business_website"]
|
|
70
|
+
T4["analyze_website"]
|
|
71
|
+
T5["check_seo"]
|
|
72
|
+
T6["find_social_profiles"]
|
|
73
|
+
T7["find_competitors"]
|
|
74
|
+
T8["compare_businesses"]
|
|
75
|
+
T9["score_lead"]
|
|
76
|
+
T10["generate_business_insights"]
|
|
77
|
+
T11["generate_outreach"]
|
|
78
|
+
T12["generate_business_report"]
|
|
79
|
+
T13["export_leads"]
|
|
80
|
+
T14["get_saved_leads"]
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
MCP --> T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14
|
|
84
|
+
|
|
85
|
+
subgraph "Core Services & Providers"
|
|
86
|
+
P_OSM["OpenStreetMap / Overpass Provider"]
|
|
87
|
+
P_Demo["Offline Demo Provider"]
|
|
88
|
+
S_Web["Website Analyzer & Robots Checker"]
|
|
89
|
+
S_SEO["Custom 0-100 SEO Auditor"]
|
|
90
|
+
S_Social["Social Media Profile Extractor"]
|
|
91
|
+
S_Comp["Competitor Taxonomy & Benchmarking Engine"]
|
|
92
|
+
S_Score["Deterministic 100-pt Lead Scoring Engine"]
|
|
93
|
+
S_Ollama["Local AI Service (Ollama HTTP Client)"]
|
|
94
|
+
S_Export["OpenPyXL Multi-Sheet Excel & CSV Exporter"]
|
|
95
|
+
S_Report["Executive Report Generator (MD / HTML / JSON)"]
|
|
96
|
+
S_DB["Local SQLite Persistence (.leadintel.db)"]
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
T1 & T2 & T3 --> P_OSM & P_Demo
|
|
100
|
+
T4 & T5 & T6 --> S_Web & S_SEO & S_Social
|
|
101
|
+
T7 & T8 --> S_Comp
|
|
102
|
+
T9 --> S_Score
|
|
103
|
+
T10 & T11 --> S_Ollama
|
|
104
|
+
T12 --> S_Report
|
|
105
|
+
T13 --> S_Export
|
|
106
|
+
T1 & T14 --> S_DB
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## Registered MCP Tools
|
|
112
|
+
|
|
113
|
+
LeadIntel provides 14 registered MCP tools:
|
|
114
|
+
|
|
115
|
+
| # | Tool Name | Description | Key Inputs |
|
|
116
|
+
|---|---|---|---|
|
|
117
|
+
| 1 | `search_businesses` | Discover local businesses, identify website opportunities, calculate distance, and prioritize leads | `query`, `location`, `category`, `limit`, `latitude`, `longitude`, `radius_meters`, `sort_by`, `research_websites`, `wider_metro` |
|
|
118
|
+
| 2 | `get_business_details` | Retrieve full coordinates, address, and contact details for a specific business | `business_id` |
|
|
119
|
+
| 3 | `find_business_website` | Discover and verify official websites using search heuristics and OSM tags | `business_name`, `location`, `category` |
|
|
120
|
+
| 4 | `analyze_website` | Audit web availability, HTTPS, SSL validity, viewport, headings, and broken links | `url`, `check_broken_links` |
|
|
121
|
+
| 5 | `check_seo` | Deterministic 100-point on-page SEO audit (titles, metas, H1s, alt tags, robots.txt, sitemaps) | `url` |
|
|
122
|
+
| 6 | `find_social_profiles` | Extract verified official profiles (LinkedIn, X/Twitter, Facebook, Instagram, YouTube, Pinterest) | `url` |
|
|
123
|
+
| 7 | `find_competitors` | Discover geographically and categorically relevant industry competitors | `business_name`, `business_category`, `city`, `state` |
|
|
124
|
+
| 8 | `compare_businesses` | Side-by-side benchmark comparison between target business and industry rivals | `target_business`, `competitors` |
|
|
125
|
+
| 9 | `score_lead` | Deterministic 100-point lead qualification assessing website quality, SEO, social, and mobile gaps | `business_name`, `website_analysis`, `seo_audit`, `social_profiles` |
|
|
126
|
+
| 10 | `generate_business_insights` | Local AI business analysis, opportunity explanations, and service recommendations via Ollama | `business_name`, `lead_score_data`, `website_analysis` |
|
|
127
|
+
| 11 | `generate_outreach` | Local AI multi-channel outreach pitches (Cold Email, LinkedIn connection, WhatsApp message) | `business_name`, `service_focus`, `contact_name` |
|
|
128
|
+
| 12 | `generate_business_report` | Multi-format executive intelligence report (Markdown, styled HTML, or JSON) across 12 sections | `business_info`, `lead_score_data`, `output_format` |
|
|
129
|
+
| 13 | `export_leads` | Search and export leads to multi-sheet formatted Excel (`.xlsx`), CSV, or JSON | `query`, `location`, `format`, `output_path` |
|
|
130
|
+
| 14 | `get_saved_leads` | Retrieve and filter previously researched businesses from the local database | `min_opportunity_score`, `limit` |
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## Website Opportunity Intelligence (v0.2.0 - v0.3.0)
|
|
135
|
+
|
|
136
|
+
LeadIntel is specifically engineered for digital marketing agencies, SEO professionals, and web developers seeking high-probability web development and redesign clients.
|
|
137
|
+
|
|
138
|
+
### 1. Website Status Lifecycle
|
|
139
|
+
Every discovered business receives an explicit, deterministic `website_status`:
|
|
140
|
+
- `website_verified`: Official company website confirmed active, accessible, and owned by the entity.
|
|
141
|
+
- `website_not_found_after_research`: Missing from OpenStreetMap and confirmed absent after secondary web research across search engines and directory listings.
|
|
142
|
+
- `website_broken`: Website URL exists but returns HTTP 4xx/5xx errors or network timeouts.
|
|
143
|
+
- `website_unverified`: Discovered domain name does not match the business identity.
|
|
144
|
+
- `website_not_checked`: OpenStreetMap website field was empty and web research was not requested.
|
|
145
|
+
|
|
146
|
+
### 2. Deterministic Opportunity Scoring & Tech Stack Detection
|
|
147
|
+
`website_opportunity_score` (0–100) deterministically ranks web agency outreach leverage:
|
|
148
|
+
1. **No website found after research**: 90–100 (default: 95.0) — Highest priority new-build prospects.
|
|
149
|
+
2. **Broken websites**: 75–89 (default: 80.0) — Urgent repair / redesign prospects.
|
|
150
|
+
3. **Weak / outdated websites**: 50–74 (default: 65.0) — Missing mobile viewport or modern SSL security.
|
|
151
|
+
4. **Significant SEO deficiencies**: 30–49 (default: 40.0) — Missing meta descriptions, title tags, or slow response times.
|
|
152
|
+
5. **Modern, established websites**: 5–29 (default: 15.0) — Fast, mobile-ready, HTTPS-secured.
|
|
153
|
+
|
|
154
|
+
- **Tech Stack & Contact Surface detection**: Automated HTML footprint analysis detects underlying CMS platforms (WordPress, Shopify, Wix, Squarespace) and verifies whether direct contact routes (`<a href="...">` with contact, about, or `mailto:`) exist.
|
|
155
|
+
|
|
156
|
+
### 3. Geographic Precision & Distance
|
|
157
|
+
- **Spherical Haversine calculation**: Every lead includes exact `distance_meters` and `distance_km` from the search centre.
|
|
158
|
+
- **Strict radius enforcement**: Rejects distant municipalities (e.g. Alandi or PCMC when searching Pune city center).
|
|
159
|
+
- **Urban core vs. wider metro**: Standard 6 km urban core radius, with optional `wider_metro=True` (25 km) for full metropolitan exploration.
|
|
160
|
+
- **Road & infrastructure rejection**: Rejects highway ways, bus platforms, and non-commercial geographic objects.
|
|
161
|
+
|
|
162
|
+
### 4. Local Storage
|
|
163
|
+
Researched businesses from `search_businesses` are automatically persisted to a local `.leadintel.db` SQLite database using upsert semantics. This preserves historical search intelligence across MCP sessions, speeds up pipeline reviews, and prevents redundant external API and scraping calls. Stored leads can be queried directly at any time using the `get_saved_leads` tool.
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Requirements
|
|
168
|
+
|
|
169
|
+
- **Python**: 3.11 or newer
|
|
170
|
+
- **uv**: Modern, high-speed Python package manager ([install uv](https://docs.astral.sh/uv/))
|
|
171
|
+
- **Operating System**: macOS, Linux, or Windows
|
|
172
|
+
- **(Optional) Ollama**: Locally installed [Ollama](https://ollama.ai) for local AI features
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Installation
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
# 1. Clone the repository
|
|
180
|
+
git clone https://github.com/example/leadintel.git
|
|
181
|
+
cd leadintel
|
|
182
|
+
|
|
183
|
+
# 2. Sync dependencies using uv
|
|
184
|
+
uv sync
|
|
185
|
+
|
|
186
|
+
# 3. Create environment configuration (optional)
|
|
187
|
+
cp .env.example .env
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## MCP Client Configuration
|
|
193
|
+
|
|
194
|
+
### Claude Desktop Setup
|
|
195
|
+
|
|
196
|
+
Add LeadIntel to your Claude Desktop configuration file:
|
|
197
|
+
|
|
198
|
+
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
199
|
+
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
200
|
+
- **Linux**: `~/.config/Claude/claude_desktop_config.json`
|
|
201
|
+
|
|
202
|
+
```json
|
|
203
|
+
{
|
|
204
|
+
"mcpServers": {
|
|
205
|
+
"leadintel": {
|
|
206
|
+
"command": "uv",
|
|
207
|
+
"args": [
|
|
208
|
+
"--directory", "/ABSOLUTE/PATH/TO/leadintel",
|
|
209
|
+
"run", "leadintel-server"
|
|
210
|
+
]
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### Google Antigravity Setup
|
|
217
|
+
|
|
218
|
+
Add LeadIntel to your Antigravity project configuration:
|
|
219
|
+
|
|
220
|
+
```json
|
|
221
|
+
{
|
|
222
|
+
"mcpServers": {
|
|
223
|
+
"leadintel": {
|
|
224
|
+
"command": "uv",
|
|
225
|
+
"args": [
|
|
226
|
+
"--directory", "/ABSOLUTE/PATH/TO/leadintel",
|
|
227
|
+
"run", "leadintel-server"
|
|
228
|
+
],
|
|
229
|
+
"env": {
|
|
230
|
+
"LOG_LEVEL": "INFO"
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
---
|
|
238
|
+
|
|
239
|
+
## Optional Local AI Setup (Ollama)
|
|
240
|
+
|
|
241
|
+
LeadIntel includes zero-cost, local AI capabilities via [Ollama](https://ollama.ai):
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
# 1. Install and start Ollama
|
|
245
|
+
ollama serve
|
|
246
|
+
|
|
247
|
+
# 2. Pull a recommended lightweight model
|
|
248
|
+
ollama pull llama3
|
|
249
|
+
|
|
250
|
+
# 3. Enable in .env
|
|
251
|
+
OLLAMA_ENABLED=true
|
|
252
|
+
OLLAMA_BASE_URL=http://localhost:11434
|
|
253
|
+
OLLAMA_MODEL=llama3
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
> **Privacy Guarantee**: All prompts are sent exclusively to your local loopback interface (`http://localhost:11434`). No business data or prompt information is sent to third-party cloud providers.
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Usage Examples
|
|
261
|
+
|
|
262
|
+
### 1. Discover Businesses & Export to Multi-Sheet Excel
|
|
263
|
+
Ask your AI assistant:
|
|
264
|
+
> *"Search for dental clinics in Austin, TX and export them to an Excel workbook."*
|
|
265
|
+
|
|
266
|
+
Or invoke the tool directly:
|
|
267
|
+
```python
|
|
268
|
+
await mcp.call_tool("export_leads", {
|
|
269
|
+
"query": "dental clinic",
|
|
270
|
+
"location": "Austin, TX",
|
|
271
|
+
"format": "excel",
|
|
272
|
+
"limit": 20
|
|
273
|
+
})
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
The resulting Excel workbook includes 7 dedicated worksheets:
|
|
277
|
+
1. **Dashboard Summary**: Aggregate KPI cards, lead priority distribution, and industry mix.
|
|
278
|
+
2. **Business Leads**: Address, contact information, phone, email, website, and data attribution.
|
|
279
|
+
3. **Website Audit**: Availability, HTTPS status, load time, mobile viewport, and contact forms.
|
|
280
|
+
4. **Competitor Intelligence**: Local competitors, category specialization, and confidence metrics.
|
|
281
|
+
5. **Lead Scoring**: Overall 100-pt score, priority tier, and evidence completeness percentage.
|
|
282
|
+
6. **AI Insights**: Executive summaries and strategic service opportunities.
|
|
283
|
+
7. **Outreach**: Multi-channel draft templates for emails, LinkedIn, and WhatsApp.
|
|
284
|
+
|
|
285
|
+
### 2. Website & SEO Diagnostic Audit
|
|
286
|
+
> *"Audit the website and technical SEO health for https://example.com."*
|
|
287
|
+
|
|
288
|
+
```python
|
|
289
|
+
# Analyze technical performance and structure
|
|
290
|
+
website_data = await mcp.call_tool("analyze_website", {"url": "https://example.com"})
|
|
291
|
+
|
|
292
|
+
# Perform 0-100 technical SEO evaluation
|
|
293
|
+
seo_data = await mcp.call_tool("check_seo", {"url": "https://example.com"})
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### 3. Generate Executive Business Intelligence Report
|
|
297
|
+
> *"Create a comprehensive business research report for Apex Solar in Denver, CO in HTML format."*
|
|
298
|
+
|
|
299
|
+
```python
|
|
300
|
+
report_html = await mcp.call_tool("generate_business_report", {
|
|
301
|
+
"business_info": {
|
|
302
|
+
"name": "Apex Solar Solutions",
|
|
303
|
+
"category": "Solar Energy Equipment",
|
|
304
|
+
"city": "Denver",
|
|
305
|
+
"state": "CO",
|
|
306
|
+
"website": "https://apexsolar.example"
|
|
307
|
+
},
|
|
308
|
+
"output_format": "html"
|
|
309
|
+
})
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
---
|
|
313
|
+
|
|
314
|
+
## Screenshots Placeholder
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
+--------------------------------------------------------------------------+
|
|
318
|
+
| LeadIntel Dashboard (Excel Export) |
|
|
319
|
+
+--------------------------------------------------------------------------+
|
|
320
|
+
| Total Businesses: 50 | High Priority: 14 | Avg Lead Score: 72/100 |
|
|
321
|
+
+--------------------------------------------------------------------------+
|
|
322
|
+
| [Sheet 1: Dashboard] [Sheet 2: Leads] [Sheet 3: Website Audit] ... |
|
|
323
|
+
+--------------------------------------------------------------------------+
|
|
324
|
+
| (Interactive screenshots will be published with the v0.1 release) |
|
|
325
|
+
+--------------------------------------------------------------------------+
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## Security & Ethical Safeguards
|
|
331
|
+
|
|
332
|
+
- **SSRF & DNS Rebinding Mitigation**: Strict validation against loopback, private subnets (RFC 1918), carrier-grade NAT (RFC 6598), and cloud instance metadata (`169.254.169.254`, `fd00:ec2::254`, `metadata.google.internal`). All HTTP redirects are validated before being followed.
|
|
333
|
+
- **Path Traversal Protection**: Export file paths are sanitized against traversal sequences (`..`), null bytes, and sensitive system directories (`/etc`, `/usr`, `~/.ssh`).
|
|
334
|
+
- **Spreadsheet Formula Injection Prevention**: Cell contents starting with `=`, `+`, `-`, `@`, `\t`, or `\r` are sanitized with leading text escapes.
|
|
335
|
+
- **HTML Injection Defense**: Stored XSS defense using strict entity escaping across all dynamic fields in HTML executive reports.
|
|
336
|
+
- **ODbL License Attribution**: Data retrieved from OpenStreetMap contributors is attributed in accordance with the Open Database License.
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
## Limitations
|
|
341
|
+
|
|
342
|
+
- **Search Coverage**: Business discovery relies on OpenStreetMap and Nominatim data, which may vary in coverage density depending on geographic region and country.
|
|
343
|
+
- **On-Page Technical SEO**: The `check_seo` tool evaluates on-page technical factors and source standards. It does not replicate proprietary search engine ranking algorithms or backlinks.
|
|
344
|
+
- **Deterministic Lead Scoring**: Lead scores evaluate observable digital presence gaps to identify service opportunities. They do not predict commercial budget or purchasing authority.
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## License
|
|
349
|
+
|
|
350
|
+
LeadIntel is free and open-source software licensed under the **[MIT License](LICENSE)**.
|
|
351
|
+
OpenStreetMap data is © [OpenStreetMap contributors](https://www.openstreetmap.org/copyright) licensed under the [Open Database License (ODbL 1.0)](https://opendatacommons.org/licenses/odbl/).
|