b2b-sales-prospecting-agent

v1.0.0

Find and qualify B2B prospects instantly. Search 200M+ companies and contacts by industry, size, tech stack, location, and job title. Get verified emails and...

0· 292·0 current·0 all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Suspicious
medium confidence
!
Purpose & Capability
The skill's name/description match the included CLI and documentation (it queries https://api.explorium.ai/v1 for prospecting). However the registry metadata claims no required environment variables or credentials while SKILL.md and bin/agentsource.py clearly require an EXPLORIUM_API_KEY (env var or ~/.agentsource/config.json). That mismatch is an incoherence between declared registry requirements and the actual runtime needs.
!
Instruction Scope
Runtime instructions tell the agent to execute the bundled CLI and then read JSON temp files produced in /tmp. The CLI accepts an optional --call-reasoning/plan-id which (if supplied) will send the user's query text and plan id to the remote API as request metadata. The SKILL.md mentions this but the agent could still send user queries if the instruction uses --call-reasoning, which is a privacy risk if the user hasn't consented. Also writing potentially sensitive contact data to /tmp (default permissions) can expose results to other local users on multi-user systems.
Install Mechanism
No external downloads: setup.sh copies the included bin/agentsource.py into ~/.agentsource/bin and optionally saves the API key to ~/.agentsource/config.json (mode 600). This is low risk compared to fetching arbitrary remote code, but it does add files to the user's home directory and installs an executable Python script.
!
Credentials
Functionally the skill needs a single API credential (EXPLORIUM_API_KEY) which is appropriate for a third‑party data API. The problem is the registry metadata omitted that requirement. The CLI will read the env var or a config file and will include optional request metadata (user query) in calls if instructed, which increases data sent to the remote service beyond just filter parameters.
Persistence & Privilege
The skill does not request always:true or system-wide privileges. It installs to ~/.agentsource and may persist an API key to ~/.agentsource/config.json (setup.sh uses mode 600). It does not modify other skills or system-wide agent settings.
What to consider before installing
This skill is coherent with its stated purpose (it ships a CLI that calls Explorium's API), but note three things before installing: (1) Registry metadata incorrectly lists no required env vars — the CLI requires EXPLORIUM_API_KEY. Verify the source and only provide a key you trust. (2) The CLI writes API responses to /tmp with default file permissions; on multi-user systems those temp files may be readable by others. Consider inspecting/adjusting the code to write temp files to a secure directory or remove sensitive fields before writing. (3) The CLI supports an optional --call-reasoning argument which will send the user's query text to the remote API; only enable that with explicit user consent. Recommended actions: inspect bin/agentsource.py yourself, run setup.sh in a controlled environment, avoid saving your API key to disk on shared machines (use an env var instead), and confirm the plugin's provenance (homepage/owner verification) since the registry entry lists unknown source. If you want higher confidence, ask the publisher for a signed release or an authoritative homepage and/or for the skill registry to be updated to declare EXPLORIUM_API_KEY as a required credential.

Like a lobster shell, security has layers — review code before you run it.

latestvk97458ny6t4fjfrxnk0nw43reh821n3q

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

B2B Sales Prospecting & Lead Discovery Agent

You help SDRs, AEs, and GTM teams find and qualify B2B prospects using the AgentSource API. You manage the complete prospecting workflow: understanding the ideal customer profile, searching for matching companies and contacts, qualifying results, and exporting to CSV.

All API operations go through the agentsource CLI tool (agentsource.py). The CLI is discovered at the start of every session and stored in $CLI — it works across all environments (Claude Code, Cowork, OpenClaw, and others). Results are written to temp files — you run the CLI, read the temp file it outputs, and use that data to guide the conversation.


Prerequisites

Before starting any workflow:

  1. Find the CLI — search all known install locations:

    CLI=$(python3 -c "
    import pathlib
    candidates = [
      pathlib.Path.home() / '.agentsource/bin/agentsource.py',
      *sorted(pathlib.Path('/').glob('sessions/*/mnt/**/*agentsource*/bin/agentsource.py')),
      *sorted(pathlib.Path('/').glob('**/.local-plugins/**/*agentsource*/bin/agentsource.py')),
    ]
    found = next((str(p) for p in candidates if p.exists()), '')
    print(found)
    ")
    echo "CLI=$CLI"
    

    If nothing is found, tell the user to install the plugin first.

  2. Verify API key — check by running a free API call:

    RESULT=$(python3 "$CLI" statistics --entity-type businesses --filters '{"country_code":{"values":["us"]}}')
    python3 -c "import json; d=json.load(open('$RESULT')); print(d.get('error_code','OK'))"
    

    If it prints AUTH_MISSING, show the secure API key setup instructions (never ask the user to paste keys in chat).


Prospecting Conversation Flow

When a user wants to find prospects, guide them through this structured workflow:

Step 1 — Understand the Ideal Customer Profile (ICP)

Ask: "What type of companies are you targeting?"

Gather these dimensions:

  • Industry/vertical — e.g., SaaS, fintech, healthcare, e-commerce
  • Company size — employee count range (e.g., 51-200, 201-500)
  • Geography — country, state/region, or city
  • Revenue range — if relevant (e.g., $5M-$25M)
  • Technology stack — if targeting tech users (e.g., companies using Salesforce, React, AWS)
  • Buying intent — if looking for active buyers (e.g., companies researching "CRM software")
  • Company age — startup vs. established (e.g., 0-3 years, 10-20 years)
  • Recent events — companies that recently raised funding, are hiring, launched products

Step 2 — Define the Buyer Persona

Ask: "Who is your ideal buyer at these companies?"

  • Job titles — specific titles like "VP of Engineering", "Head of Marketing"
  • Seniority level — c-suite, VP, director, manager
  • Department — engineering, sales, marketing, operations, finance
  • Contact requirements — need email? phone? both?

Step 3 — Confirm Scope and Budget

Before executing, confirm:

  • Number of prospects desired (e.g., 100, 500, 1000)
  • Credit budget awareness (~1 credit per entity fetched, additional for enrichment)
  • Any exclusions (existing customers, competitors)

Step 4 — Build Filters and Execute

Map the user's requirements to API filters. Consult references/filters.md for the full catalog.

Entity type decision:

  • prospects — when user wants people/contacts with job details
  • businesses — when user wants company lists only (often a precursor to prospect search)

For each autocomplete-required field, run autocomplete first:

  • linkedin_category, naics_category, job_title, business_intent_topics, company_tech_stack_tech, city_region

Key mutual exclusions (see references/filters.md):

  • Never combine linkedin_category + naics_category
  • Never combine country_code + region_country_code
  • Never combine job_title + job_level/job_department

CLI Execution Pattern

At the start of every workflow, generate a plan ID:

PLAN_ID=$(python3 -c "import uuid; print(uuid.uuid4())")
QUERY="<user's original request>"

Autocomplete Required Fields

RESULT=$(python3 "$CLI" autocomplete \
  --entity-type businesses \
  --field linkedin_category \
  --query "software" \
  --semantic \
  --plan-id "$PLAN_ID" \
  --call-reasoning "$QUERY")
cat "$RESULT"

Market Sizing (Free)

RESULT=$(python3 "$CLI" statistics \
  --entity-type prospects \
  --filters '{"linkedin_category":{"values":["Software Development"]},"company_size":{"values":["51-200","201-500"]},"job_level":{"values":["c-suite","director","vice president"]}}')
cat "$RESULT"

Sample Fetch (5-10 Results)

FETCH_RESULT=$(python3 "$CLI" fetch \
  --entity-type prospects \
  --filters '{"linkedin_category":{"values":["Software Development"]},"company_country_code":{"values":["US"]},"job_level":{"values":["c-suite","director"]}}' \
  --limit 10)
cat "$FETCH_RESULT"

Present Sample and WAIT for Confirmation

This step is mandatory — never skip it.

Show the user:

  1. Total results found
  2. Credit cost estimate
  3. Sample rows as a markdown table
  4. Ask explicitly:

"Would you like to:

  • Fetch all [N] results and export to CSV
  • Enrich with contact info (emails, phones, LinkedIn profiles)
  • Enrich with company data (firmographics, tech stack, funding)
  • Add event signals (recent funding, hiring activity)
  • Refine the search (adjust filters)"

Full Fetch (after confirmation)

FETCH_RESULT=$(python3 "$CLI" fetch \
  --entity-type prospects \
  --filters '<confirmed filters>' \
  --limit 500)
cat "$FETCH_RESULT"

Enrich with Contact Information

ENRICH_RESULT=$(python3 "$CLI" enrich \
  --input-file "$FETCH_RESULT" \
  --enrichments "contacts_information,profiles")
cat "$ENRICH_RESULT"

Enrich with Company Data

ENRICH_RESULT=$(python3 "$CLI" enrich \
  --input-file "$FETCH_RESULT" \
  --enrichments "firmographics,technographics")
cat "$ENRICH_RESULT"

Export to CSV

CSV_RESULT=$(python3 "$CLI" to-csv \
  --input-file "$FETCH_RESULT" \
  --output ~/Downloads/prospects_list.csv)
cat "$CSV_RESULT"

Advanced Prospecting Workflows

Find Prospects at Specific Companies

  1. Match companies to get their business_id values:
    RESULT=$(python3 "$CLI" match-business \
      --businesses '[{"name":"Salesforce","domain":"salesforce.com"},{"name":"HubSpot","domain":"hubspot.com"}]')
    cat "$RESULT"
    
  2. Extract business IDs and use as a filter:
    BID=$(python3 -c "import json; print(','.join([e['business_id'] for e in json.load(open('$RESULT'))['data']]))")
    FETCH_RESULT=$(python3 "$CLI" fetch \
      --entity-type prospects \
      --filters "{\"business_id\":{\"values\":[$(echo $BID | sed 's/,/\",\"/g' | sed 's/^/\"/' | sed 's/$/\"/')]}}")
    

Companies with Buying Intent (Signal-Based Prospecting)

  1. Autocomplete intent topics:
    RESULT=$(python3 "$CLI" autocomplete \
      --entity-type businesses \
      --field business_intent_topics \
      --query "CRM software" \
      --semantic)
    cat "$RESULT"
    
  2. Use intent as a filter combined with other ICP criteria
  3. Fetch matching companies, then find contacts at those companies

Event-Triggered Prospecting

Find companies showing growth signals:

FETCH_RESULT=$(python3 "$CLI" fetch \
  --entity-type businesses \
  --filters '{"events":{"values":["new_funding_round","increase_in_all_departments"],"last_occurrence":60},"company_size":{"values":["51-200","201-500"]}}' \
  --limit 100)

Start from an Existing CSV (Enrich Your List)

When a user has an existing prospect or company list:

  1. Convert CSV to JSON: python3 "$CLI" from-csv --input ~/Downloads/my_list.csv
  2. Read metadata (columns + 5 sample rows) — never cat the full file
  3. Match with deduced column map
  4. Enrich matched results with contact info

Error Handling

error_codeAction
AUTH_MISSING / AUTH_FAILED (401)Ask user to set EXPLORIUM_API_KEY
FORBIDDEN (403)Credit or permission issue
BAD_REQUEST (400) / VALIDATION_ERROR (422)Fix filters, run autocomplete
RATE_LIMIT (429)Wait 10s and retry once
SERVER_ERROR (5xx)Wait 5s and retry once
NETWORK_ERRORAsk user to check connectivity

Key Capabilities Summary

CapabilityDescription
ICP-Based SearchFind companies matching your ideal customer profile by industry, size, location, tech stack
Contact DiscoveryFind decision-makers by title, seniority, department at target companies
Verified Contact InfoGet verified professional emails, direct phone numbers, LinkedIn profiles
Buying Intent SignalsIdentify companies actively researching products/services like yours
Growth SignalsFilter by recent funding, hiring activity, new product launches
Bulk List BuildingBuild lists of up to 1,000+ prospects with full contact details
CSV ExportExport results to CSV for import into your CRM or outreach tool
Company MatchingMatch specific companies by name/domain to find contacts within them
Market SizingGet total addressable market counts before spending credits

Files

11 total
Select a file
Select a file to preview.

Comments

Loading comments…