From anysite-skills
Generates leads via LinkedIn prospect discovery, email finding, website contact extraction, company research, and data enrichment using anysite MCP server. For building sales, recruiting, or business development prospect lists.
npx claudepluginhub anysiteio/agent-skills --plugin anysite-cliThis skill uses the workspace's default tool permissions.
Professional lead generation and prospecting using the anysite MCP server. Find prospects on LinkedIn, discover verified emails, extract contacts from websites, and build comprehensive lead lists for sales, recruiting, and business development.
Researches B2B leads and decision makers by role, company, location; enriches organizations by domain and people by email using Apollo.io API.
Automates LinkedIn via CLI: fetch profiles, search people/companies, send messages, manage connections, create posts, react, comment, and use Sales Navigator for outreach, research, or recruiting workflows.
Generates ranked tables of enriched decision-maker leads (emails/phones) from ICP descriptions using Apollo company/people searches and bulk enrichment.
Share bugs, ideas, or general feedback.
Professional lead generation and prospecting using the anysite MCP server. Find prospects on LinkedIn, discover verified emails, extract contacts from websites, and build comprehensive lead lists for sales, recruiting, and business development.
The anysite Lead Generation skill helps you:
This skill provides comprehensive lead generation capabilities with the added benefit of zero configuration and immediate execution through anysite MCP.
All data fetching uses the universal execute() tool with four parameters: source, category, endpoint, params. Supporting tools:
execute(source, category, endpoint, params) - Fetch data. Returns first page of items + cache_key.get_page(cache_key, offset, limit) - Load additional pages from a previous execute() result using the returned cache_key and next_offset.query_cache(cache_key, conditions, sort_by, aggregate, group_by) - Filter, sort, count, or aggregate already-fetched data without a new API call.export_data(cache_key, format) - Export a full dataset as CSV, JSON, or JSONL. Returns a download URL.discover(source, category) - Inspect available endpoints and their accepted params (use when unsure about params).v2 responses may include an llm_hint field with human-readable guidance when something goes wrong (e.g., invalid params, rate limits). Always check for llm_hint in the response and follow its advice before retrying.
Choose the appropriate data source based on your prospecting goal:
| Goal | v2 Call | Use Case |
|---|---|---|
| Find prospects by title/company | execute("linkedin", "search", "search_users", {...}) | B2B prospecting, targeted outreach |
| Enrich existing leads | execute("linkedin", "user", "get", {"user": ...}) | Add work history, education, skills |
| Find verified emails | execute("linkedin", "email", "find", {"user": ...}) | Email outreach campaigns |
| Extract website contacts | execute("webparser", "parse", "parse", {"url": ...}) | Get emails/phones from contact pages |
| Research target companies | execute("linkedin", "search", "search_companies", {...}) | Account-based marketing (ABM) |
| Find company employees | execute("linkedin", "search", "search_users", {...}) + company filter | Multi-threading into accounts |
Use anysite MCP v2 tools directly to gather lead data:
Example: Find Sales VPs in San Francisco
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "search"
- endpoint: "search_users"
- params: {"title": "VP Sales", "location": "San Francisco Bay Area", "count": 25}
Example: Enrich a LinkedIn Profile
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "user"
- endpoint: "get"
- params: {"user": "linkedin.com/in/johndoe", "with_experience": true, "with_education": true, "with_skills": true}
Example: Find Email Address
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "email"
- endpoint: "find"
- params: {"user": "johndoe"}
Example: Extract Contacts from Website
Tool: mcp__anysite__execute
Parameters:
- source: "webparser"
- category: "parse"
- endpoint: "parse"
- params: {"url": "https://company.com/contact", "extract_contacts": true, "strip_all_tags": true}
After execute() returns data with a cache_key, use v2 post-processing:
query_cache(cache_key, conditions=[{"field": "title", "operator": "contains", "value": "VP"}])query_cache(cache_key, sort_by=[{"field": "follower_count", "order": "desc"}])query_cache(cache_key, aggregate=[{"function": "count", "field": "*"}])get_page(cache_key, offset=next_offset, limit=10)Also review the returned data for:
Choose your preferred output format:
Chat Summary (Default)
CSV Export (via v2 export_data)
Tool: mcp__anysite__export_data
Parameters:
- cache_key: <cache_key from execute>
- format: "csv"
Returns a download URL. Ready for CRM import (Salesforce, HubSpot, etc.)
JSON Export (via v2 export_data)
Tool: mcp__anysite__export_data
Parameters:
- cache_key: <cache_key from execute>
- format: "json"
Returns a download URL. Structured data for custom integration.
Scenario: Find 50 qualified prospects at SaaS companies in specific roles
Steps:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "search"
- endpoint: "search_users"
- params: {"keywords": "SaaS software cloud", "title": "Head of Marketing, VP Marketing, CMO", "location": "United States", "company_keywords": "software", "count": 50}
For each prospect from step 1:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "user"
- endpoint: "get"
- params: {"user": "<prospect_username>", "with_experience": true, "with_education": true}
For each qualified prospect:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "email"
- endpoint: "find"
- params: {"user": "<prospect_username>"}
Tool: mcp__anysite__export_data
Parameters:
- cache_key: <cache_key from search>
- format: "csv"
Import the CSV to your CRM system and set up outreach sequences.
Expected Output:
Scenario: Find decision-makers at specific target companies
Steps:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "search"
- endpoint: "search_companies"
- params: {"keywords": "<your ICP description>", "industry": "<target industry>", "employee_count": ["51-200", "201-500"], "location": "<target location>", "count": 20}
For each target company:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "company"
- endpoint: "get"
- params: {"company": "<company_identifier or URL>"}
For each target company:
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "search"
- endpoint: "search_users"
- params: {"company_keywords": "<Company Name>", "title": "VP, Director, Head of, Chief", "count": 10}
For each decision-maker:
Tool: mcp__anysite__execute
source: "linkedin", category: "user", endpoint: "get", params: {"user": "<username>"}
Tool: mcp__anysite__execute
source: "linkedin", category: "email", endpoint: "find", params: {"user": "<username>"}
Tool: mcp__anysite__query_cache
Parameters:
- cache_key: <cache_key from employee search>
- conditions: [{"field": "title", "operator": "contains", "value": "VP"}]
- sort_by: [{"field": "name", "order": "asc"}]
Expected Output:
Scenario: Extract contact information from a list of company websites
Steps:
From LinkedIn company search or existing list
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "company"
- endpoint: "get"
- params: {"company": "<company_identifier>"}
Extract: company website URLs
For each website:
Tool: mcp__anysite__execute
Parameters:
- source: "webparser"
- category: "parse"
- endpoint: "parse"
- params: {"url": "https://company.com/contact", "extract_contacts": true, "strip_all_tags": true}
Alternative pages to try:
- /contact
- /about/contact
- /about/team
- /about
Tool: mcp__anysite__execute
Parameters:
- source: "webparser"
- category: "parse"
- endpoint: "parse"
- params: {"url": "https://company.com/team", "extract_contacts": true}
Tool: mcp__anysite__discover
Parameters:
- source: "webparser"
- category: "parse"
(Use discover to find the sitemap endpoint and its params, then execute accordingly)
Identify pages likely to contain contacts:
- /contact, /team, /about, /leadership
Expected Output:
Scenario: Find qualified candidates for open positions
Steps:
Required skills, titles, experience level, location
Tool: mcp__anysite__execute
Parameters:
- source: "linkedin"
- category: "search"
- endpoint: "search_users"
- params: {"keywords": "Python React AWS", "title": "Software Engineer, Senior Engineer", "location": "Remote", "count": 100}
If response includes next_offset:
Tool: mcp__anysite__get_page
Parameters:
- cache_key: <cache_key from search>
- offset: <next_offset>
- limit: 50
For promising candidates:
Tool: mcp__anysite__execute
source: "linkedin", category: "user", endpoint: "get", params: {"user": "<username>", "with_experience": true, "with_education": true, "with_skills": true}
Tool: mcp__anysite__execute
source: "linkedin", category: "email", endpoint: "find", params: {"user": "<username>"}
Tool: mcp__anysite__query_cache
Parameters:
- cache_key: <cache_key from search>
- conditions: [{"field": "location", "operator": "contains", "value": "Remote"}]
- sort_by: [{"field": "follower_count", "order": "desc"}]
Expected Output:
v2 Call: execute("linkedin", "search", "search_users", {...})
Search for LinkedIn users by various criteria.
Parameters (passed in params):
keywords (optional): General keywords for searchtitle (optional): Job title keywords (e.g., "VP Sales", "Software Engineer")company_keywords (optional): Company name keywordslocation (optional): Location (city, state, country)school_keywords (optional): School/university keywordsfirst_name (optional): First namelast_name (optional): Last namecount (default: 10): Number of results to returnReturns: List of user profiles with name, title, location, profile URL, and URN. Includes cache_key for pagination and filtering.
Use Cases:
Pagination: If next_offset is returned, call get_page(cache_key, next_offset, limit) for more results.
v2 Call: execute("linkedin", "user", "get", {"user": ...})
Get comprehensive profile information for a LinkedIn user.
Parameters (passed in params):
user (required): LinkedIn username or full profile URLwith_education (default: true): Include education historywith_experience (default: true): Include work experiencewith_skills (default: true): Include skillsReturns: Complete profile with work history, education, skills, certifications, and more
Use Cases:
v2 Call: execute("linkedin", "email", "find", {"user": ...})
Search for email addresses associated with LinkedIn profiles.
Parameters (passed in params):
user (required): LinkedIn username or profile URLReturns: Email addresses associated with the LinkedIn profile
Use Cases:
v2 Call: execute("linkedin", "search", "search_companies", {...})
Search for LinkedIn companies by various criteria.
Parameters (passed in params):
keywords (optional): Company name or description keywordslocation (optional): Company locationindustry (optional): Industry typeemployee_count (optional): Array of employee count ranges (e.g., ["51-200", "201-500"])count (required): Number of results to returnReturns: List of companies with name, industry, size, location, and URN. Includes cache_key.
Use Cases:
v2 Call: execute("linkedin", "company", "get", {"company": ...})
Get detailed information about a LinkedIn company.
Parameters (passed in params):
company (required): Company identifier or LinkedIn URLReturns: Company profile with description, industry, size, specialties, website
Use Cases:
v2 Call: discover("linkedin", "company") to find the employee stats endpoint, then execute(...) with the discovered endpoint and params.
Get employee statistics and insights for a company.
Use Cases:
v2 Call: execute("webparser", "parse", "parse", {"url": ...})
Extract content and contact information from web pages.
Parameters (passed in params):
url (required): Webpage URLextract_contacts (default: false): Extract emails, phones, social linksstrip_all_tags (default: true): Remove HTML tagsonly_main_content (default: true): Extract only main content areaReturns: Page content, contacts (emails, phones), links
Use Cases:
v2 Call: discover("webparser", "parse") to find the sitemap endpoint, then execute(...) with discovered endpoint and params.
Retrieve sitemap URLs from a website.
Use Cases:
v2 Call: execute("linkedin", "post", "get_user_posts", {"user": ...})
Get recent posts from a LinkedIn user for engagement research.
Use Cases:
v2 Call: execute("linkedin", "post", "search_posts", {...})
Search LinkedIn posts by keywords.
Use Cases:
v2 Call: execute("linkedin", "job_search", "search_jobs", {...})
Search LinkedIn job postings.
Use Cases:
v2 Call: execute("linkedin", "google", "search", {"query": ...})
Search Google for LinkedIn profiles.
Use Cases:
The skill will provide:
Example:
Found 47 qualified prospects matching your criteria:
Top Prospects:
1. Jane Smith - VP Sales at TechCorp (San Francisco)
- Email: jane.smith@techcorp.com
- 10 years in SaaS sales leadership
- Previously at Salesforce, Oracle
2. John Doe - Head of Sales at CloudCo (Remote)
- Email: Not found (try web scraping)
- 8 years experience
- Strong enterprise background
Quality Metrics:
- 32% have verified emails (15/47)
- 91% have complete LinkedIn profiles (43/47)
- 68% in target location (32/47)
Next Steps:
1. Export to CSV for CRM import
2. Set up email outreach sequence
3. Prioritize prospects with emails
4. Research companies for remaining prospects
Use export_data(cache_key, "csv") to get a download URL for CRM import and spreadsheet analysis.
How to Request: "Export the results as CSV"
CSV Structure:
Full Name,First Name,Last Name,Title,Company,Location,Email,Phone,LinkedIn URL,Profile URN,Years Experience,Education,Skills,Last Updated
Use Cases:
Use export_data(cache_key, "json") to get a download URL for programmatic access and custom integration.
How to Request: "Export the results as JSON"
JSON Structure:
{
"prospects": [
{
"profile": {
"firstName": "Jane",
"lastName": "Smith",
"headline": "VP Sales at TechCorp",
"location": "San Francisco Bay Area",
"profileUrl": "https://linkedin.com/in/janesmith",
"urn": "urn:li:fsd_profile:ABC123"
},
"currentPosition": {
"title": "VP Sales",
"company": "TechCorp",
"startDate": "2021-06"
},
"contact": {
"email": "jane.smith@techcorp.com",
"phone": null
},
"experience": [...],
"education": [...],
"skills": [...]
}
],
"metadata": {
"total": 47,
"withEmails": 15,
"timestamp": "2026-01-29T01:00:00Z"
}
}
Use Cases:
Combine LinkedIn data with other platforms for comprehensive lead profiles:
Pattern: LinkedIn -> Company Website -> Instagram (for B2C)
Example:
1. execute("linkedin", "search", "search_users", {"keywords": "Emily Chen", "company_keywords": "FashionBrand"})
2. execute("linkedin", "company", "get", {"company": "FashionBrand"}) -> Get website URL
3. execute("webparser", "parse", "parse", {"url": "<website>/contact", "extract_contacts": true}) -> Get phone, email
4. execute("instagram", "search", "search_users", {"query": "FashionBrand"}) -> Find official account
5. execute("instagram", "user", "user", {"user": "fashionbrand"}) -> Verify business account, get follower count
Advanced LinkedIn search using keyword combinations:
Title Combinations:
"VP Sales" OR "Head of Sales" OR "Director Sales" - Multiple title variations"Software Engineer" AND "Python" - Title + required skill"Marketing" NOT "Intern" - Exclude junior levelsCompany Patterns:
"Google OR Meta OR Amazon" - Multiple target companies"SaaS" AND "B2B" - Industry qualifiers"Startup OR Early Stage" - Company stage targetingLocation Strategies:
"San Francisco Bay Area" - Metropolitan areas"United States" - Country-level"Remote" - Remote-only positionsScore prospects based on multiple criteria:
Scoring Dimensions:
Profile Completeness (0-20 points)
Title Match (0-30 points)
Company Fit (0-25 points)
Experience Level (0-15 points)
Location (0-10 points)
Total Score: 0-100 points
Use query_cache() to filter by score thresholds:
query_cache(cache_key, conditions=[{"field": "score", "operator": ">=", "value": 70}], sort_by=[{"field": "score", "order": "desc"}])
Systematic enrichment workflow for large lists:
Process:
Efficiency Tips:
This skill focuses on B2B lead generation where LinkedIn, web scraping, and professional networks provide the most comprehensive data. For local business discovery and contact extraction, the combination of LinkedIn company search and web scraping provides strong coverage.
Note on Crunchbase: Crunchbase tools are disabled in v2. Use LinkedIn company search and Y Combinator data as alternatives for company research and funding information.
Default Timeout: 300 seconds (5 minutes) per MCP tool call
Strategies for Large Datasets:
Batch Processing: Use count parameter to limit results per call
Pagination: Use get_page(cache_key, offset, limit) to retrieve additional results without re-executing the search.
Parallel Processing: For independent queries
Example:
Instead of:
execute("linkedin", "search", "search_users", {"count": 200}) -> May timeout
Do this:
execute("linkedin", "search", "search_users", {"count": 50, "location": "California"})
execute("linkedin", "search", "search_users", {"count": 50, "location": "New York"})
execute("linkedin", "search", "search_users", {"count": 50, "location": "Texas"})
execute("linkedin", "search", "search_users", {"count": 50, "location": "Florida"})
LinkedIn Data: Real-time access through anysite MCP
Recommendation:
execute("linkedin", "email", "find", {"user": ...}) for email discoveryLinkedIn Terms of Service:
Email Collection:
Best Practices:
For advanced techniques and strategies, see:
Symptoms: Search returns 0 results or very few
Causes:
Solutions:
execute("linkedin", "search", "search_companies", {...}) firstllm_hint in the response for guidanceExample Fix:
Too Restrictive:
execute("linkedin", "search", "search_users", {"title": "Vice President of Enterprise Sales", "location": "San Francisco, California", "company_keywords": "Salesforce Inc"})
Better:
execute("linkedin", "search", "search_users", {"title": "VP Sales OR Head of Sales", "location": "San Francisco Bay Area", "company_keywords": "Salesforce"})
Symptoms: Email find returns no results
Causes:
Solutions:
Alternative Workflow:
1. execute("linkedin", "user", "get", {"user": "<username>"}) -> Get current company
2. execute("linkedin", "company", "get", {"company": "<company>"}) -> Get company website
3. execute("webparser", "parse", "parse", {"url": "<website>/contact", "extract_contacts": true}) -> Extract company emails
4. Use email pattern: first.last@companydomain.com
Symptoms: Request times out after 300 seconds
Causes:
Solutions:
count parameter (try 25-50 instead of 100+)llm_hint for retry guidanceExample:
May Timeout:
execute("linkedin", "search", "search_users", {"title": "Software Engineer", "count": 500})
Better:
execute("linkedin", "search", "search_users", {"title": "Software Engineer", "count": 50})
# Then use get_page(cache_key, next_offset, 50) for additional results
Symptoms: Profile missing work history, education, or skills
Causes:
Solutions:
with_experience, with_education, with_skills to true in paramsSymptoms: Error when using URN in follow-up calls
Causes:
Solutions:
urn:li:fsd_profile:XXXXXXXXXanysite MCP Server Issues:
llm_hint field in error responses for actionable guidanceSkill-Specific Questions:
references/ folderData Quality Issues:
count values firstquery_cache() to filter low-quality resultsIntegration Problems:
Goal: Find 100 qualified enterprise sales prospects
Process:
execute("linkedin", "search", "search_users", {"title": "VP Sales", "company_keywords": "Enterprise Software", "count": 100})execute("linkedin", "search", "search_companies", {...})export_data(cache_key, "csv") for Salesforce importSuccess Metrics:
Goal: Source 50 Python engineers for startup
Process:
execute("linkedin", "search", "search_users", {"keywords": "Python Django AWS", "title": "Software Engineer", "location": "Remote", "count": 100})query_cache() to remove <2 years experienceSuccess Metrics:
Goal: Find potential integration partners in marketing tech
Process:
execute("linkedin", "search", "search_companies", {"keywords": "marketing automation", "employee_count": ["51-200"]})execute("linkedin", "search", "search_users", {"title": "VP Product OR Head of Partnerships", "company_keywords": "<company>"})execute("linkedin", "post", "get_user_posts", {"user": ...})Success Metrics:
Ready to start generating leads? Ask Claude to help you find prospects, enrich profiles, or build comprehensive lead lists using this skill!