From vpai
Finds company and contact data for B2B prospecting, including tech stack, business events, and intent data. Useful for building lead lists and researching prospects.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vpai:vibe-prospectingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
B2B prospecting — companies, contacts, enrichment, events.
B2B prospecting — companies, contacts, enrichment, events.
Before any prospecting work, detect your host using the rules below, read exactly one platform guide, and follow it for auth, workflow, flags, and troubleshooting.
claude-code.md only. Do not read claude-chat.md or cowork.md. MCP tools in the list (mcp__*__fetch-entities) do not change this.CODEX_SHELL=1. → codex.mdOPENCLAW_CLI=1 / OPENCLAW_SHELL. → openclaw.md.plugin install, connector store. → cowork.mdclaude-chat.mdother.mdNever infer platform from MCP tool names alone (mcp__claude_ai_*, mcp__*__fetch-entities, etc.). Tool prefixes are not a host signal when step 1 already identified Claude Code, Codex, or OpenClaw.
| Platform | Read now |
|---|---|
| Claude Code | claude-code.md — vpai CLI |
| OpenAI Codex | codex.md |
| OpenClaw gateway | openclaw.md |
| Claude Cowork | cowork.md — MCP connector; not Claude Code |
| Claude Chat (claude.ai, Claude desktop) | claude-chat.md — MCP connector; not Cowork or Claude Code |
| Other (terminal, scripts, CI, generic hosts) | other.md |
CLI hosts use vpai — each platform guide is self-contained (Sample Gate, stdout/csv_path, CSV upload). Chat/Cowork follow each MCP tool's description and input schema only.
tool_reasoning (or platform equivalent) on every real call. Use the user's request verbatim. Reuse across the whole workflow. Skip only when inspecting a tool's input schema with no real execution.session_id and csv_path (names may vary slightly by host). Never invent session_id — on the first step omit it and use the value MCP returns; on later steps copy it exactly from the prior tool JSON. Pass --csv-path (CLI) from the prior csv_path. Do not paste raw ID lists into tool arguments when the platform reads IDs from the source CSV. For fetch-entities prospects scoped to earlier companies, pass the prior business output's csv_path via --businesses-csv-path per your platform guide.csv_path, filter/dedupe/add columns, or rewrite rows, then pass the result to the next step via --csv-path. Always retain the entity ID column: business_id for business workflows, prospect_id for prospect workflows. Every row you want processed next must have a non-empty ID in that column. Do not rename or drop those headers — the CLI reads them verbatim for ID injection and joins.autocomplete first for: naics_category, linkedin_category, company_tech_stack_tech, job_title, business_intent_topics, city_region. Use returned standardized values, not raw user wording.session_id from prior tool JSON on every subsequent step in the same workflow — never make one up. Reuse the prior step's csv_path via --csv-path (CLI) when chaining enrich, events, or scoped fetch. Start a new session only for a genuinely new task.fetch-entities-statistics only when stats supports the full fetch. Compare your planned fetch-entities payload to the input schema for fetch-entities-statistics. Call statistics only if every filter key, value shape, entity_type, and scope you rely on (including session-scoped business CSVs) is accepted the same way as for fetch-entities. If any part is missing, unsupported, or needs a different shape, skip stats — do not call it with a partial or guessed subset. When you do call it, reuse the same filter object (and supported scope) as fetch-entities, plus tool_reasoning where required. Call stats again before a full-scale fetch if filters or scope changed and the full fetch filter set still fits statistics.Behavior and caveats the live input schema may not spell out. For allowed filter values, enum strings, and enrichment type names, always use each tool's input schema.
Requires autocomplete: linkedin_category, naics_category, company_tech_stack_tech, job_title, business_intent_topics, city_region.
Does not require autocomplete: company_country_code (ISO Alpha-2), company_region_country_code (ISO 3166-2), fixed buckets (company_size, company_revenue, company_age, job_level, job_department — exact allowed strings come from fetch-entities / fetch-entities-statistics input schema), website_keywords (free text).
Mutual exclusions: linkedin_category and naics_category — use one, not both. company_region_country_code and company_country_code — use one.
Picking values: Autocomplete may return noisy variants. Pick the canonical clean value (usually the first clean result). Multiple values broaden with OR logic; avoid near-duplicates unless you want a wider search.
job_title is substring-match, not exact. For executive searches, combine with job_level (usually c-suite) to remove assistants, advisors, and office-of roles.company_size uses fixed buckets with no exact numeric cutoff. For "over N employees", approximate with adjacent buckets or enrich with firmographics for exact headcount.company_country_code, company_region_country_code, city_region) match headquarters only — not branch or operating locations.fetch-entities with entity_type: prospects scoped to businesses from an earlier step, chain via session and pass the prior business step's csv_path as --businesses-csv-path per your platform guide.--number-of-results; Chat/Cowork: MCP tool docs).max_per_company: auto-applied on prospect fetches so results spread across companies (not all from one big employer); omit from --args unless the user sets it — their value overrides the auto cap.fetch-businesses-events / fetch-prospects-events)business_id (business events) or prospect_id (prospect events).business_ids / prospect_ids inline.event_<event_type>: each cell is a JSON array string for that type (newest-first, capped per type), or empty when no events exist for that type.fetch-entities — those results include IDs.financial-metrics requires parameters.date (see input schema for format).website-keywords requires parameters.keywords.fetch-entities with entity_type: prospects (scoped to prior companies when needed) instead.business_ids / prospect_ids need not appear in tool arguments.{ "values": ["v1", "v2"], "negate": false } // include or exclude
{ "gte": 6, "lte": 24 } // range
true | false | null // boolean (not wrapped)
Exception — business_intent_topics: use { "topics": ["Category:Topic"], "negate": false } (not values). Topics must come from autocomplete.
Location matching: Business location filters (company_country_code, company_region_country_code, city_region) match a company's headquarters only — not branch/operating locations. A search for "companies in the UK" returns companies HQ'd in the UK, and excludes e.g. a foreign company that merely operates there. This is the default for all fetch-entities / fetch-entities-statistics business queries and is not user-configurable.
| Tool | Limit |
|---|---|
match-business | 50 per call |
match-prospects | 40 per call |
enrich-business | 50 IDs per call |
enrich-prospects | 50 IDs per call |
fetch-businesses-events / fetch-prospects-events | Up to 20 IDs per request when batching. Pass event_types and timestamp_from. When chaining, IDs come from the source CSV — not inline ID arrays. |
| Error | Solution |
|---|---|
| Auth, connector setup, CLI invocation, flags, or chaining syntax | Read the matching platform guide from the Platform table |
| Empty results | Check filter values; run autocomplete for controlled-vocab fields; re-read the tool's input schema |
linkedin_category + naics_category together | Mutually exclusive — use one |
| Invented or unconfirmed parameters | Re-read the live input schema before calling; build arguments only from confirmed fields |
When the user asks a support-related question (for example: how to contact support, who to contact, they have an issue, or something isn't working), reply briefly and point them here — do not dig into Explorium internals or over-explain.
For support, please reach out to the Vibe Prospecting team via the contact page:
Research and enrich B2B leads using the Apollo.io API. Search for prospects by role, company, and location, and enrich company and contact data.
Build targeted account or contact lists using Common Room's Prospector. Supports net-new company discovery and signal-based filtering of existing accounts.
Builds qualified prospect lists for B2B SaaS, general B2B, or local small businesses. Covers ICP definition, lead sourcing, verification, and scoring.
claude plugin install vibe-prospecting@claude-plugins-official