Help us improve
Share bugs, ideas, or general feedback.
From parallel
Discovers entities (companies, people, products) matching natural-language descriptions via CLI. Returns structured lists, not webpages or narrative reports.
npx claudepluginhub parallel-web/parallel-agent-skills --plugin parallelHow this skill is triggered — by the user, by Claude, or both
Slash command
/parallel:parallel-findall <objective describing entities to find><objective describing entities to find>This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Find: $ARGUMENTS
Discovers businesses by type and geography using Nimble WSAs. Supports audit mode to compare existing lists (Google Sheet, CSV, inline) against fresh discovery.
Conducts AI-powered deep research via Parallel AI APIs: chat Q&A, reports, entity discovery (companies/people), data enrichment. For web research, competitive analysis, market research, finding companies, data tasks.
Finds company and contact data from 150M+ companies and 800M+ professionals. Build lead lists, research prospects, and identify talent using 50+ data sources.
Share bugs, ideas, or general feedback.
Find: $ARGUMENTS
Requires
parallel-cli≥ 0.6.0 (thefindall entity-searchcommand was added in 0.6.0; the broaderfindallcommand was added in 0.3.0). If either errors withno such commandor similar, tell the user to runparallel-cli update(orpipx upgrade parallel-web-toolsif installed via pipx), then retry.
Use FindAll when the user wants a structured list of entities matching a description, not webpages or a narrative answer.
| User asks for… | Use |
|---|---|
| "Find all X that…" / "List every Y…" | parallel-findall (this skill) |
| Webpage results / quick answers / current info | parallel-web-search |
| Narrative report / analysis / "research X" | parallel-deep-research |
| Add fields to a list you already have | parallel-data-enrichment |
If the user already has a list and just wants to add fields, this is the wrong skill — use parallel-data-enrichment.
FindAll has two paths: the comprehensive, asynchronous findall run (Steps 1–2) and the fast, synchronous entity-search (final section).
entity-search — very fast (few seconds), only supports people or company search. Supports a more limited set of query arguments.findall run — Provides comprehensive coverage, complex, match conditions, exclusions, enrichment, citations, or a type other than people/companies.If it's ambiguous, ask the user which they'd prefer and offer a default. Remember entity search limits: companies/people only, no exclusions/generator/enrichment, and entity_set_id can't be used with enrich/extend (re-run via findall run if needed).
Switch to entity-search only when the user explicitly signals they want a fast, throwaway list. entity-search is also strictly more limited: it only supports companies or people entity types, no exclusions, no generator choice, no enrichment, and the returned entity_set_id is not usable with findall enrich/extend. If you start there and the user later asks to enrich or extend, you'll have to re-run via findall run.
parallel-cli findall run "$ARGUMENTS" --no-wait --json
Defaults: generator core, match limit 10. Stick with core unless the user has a reason to escalate:
-g pro — most thorough generator (slower, costlier). Use when the user asks for "comprehensive" coverage or matches are sparse on core-g base — fastest, but markedly lower quality. Often returns query-echo entities (e.g., directory pages, the literal query string), entries with no URL, or category placeholders. Only use if the user explicitly asks for a quick scan and accepts noise; otherwise prefer core-n 50 — return up to 50 matched entities (5–1000 allowed)If the user wants to exclude known entities (e.g., "find competitors but not Google or OpenAI"):
parallel-cli findall run "$ARGUMENTS" --no-wait --json \
--exclude '[{"name":"Google","url":"google.com"},{"name":"OpenAI","url":"openai.com"}]'
Tip — preview the schema first if the objective is ambiguous: parallel-cli findall ingest "$ARGUMENTS" --json shows the entity type and match conditions the API inferred, so you can refine wording before paying for a run.
Parse the JSON output to extract the findall_id and any monitoring URL. Tell the user:
core, longer for pro)Choose a descriptive filename (e.g., series-a-ai-2026, charlotte-roofers). Use lowercase with hyphens, no spaces.
parallel-cli findall poll "$FINDALL_ID" -o "/tmp/$FILENAME.json" --timeout 540
Important:
--timeout 540 (9 minutes) to stay within tool execution limits--json for large result sets — it will flood context. -o saves the full results to diskRe-run the same parallel-cli findall poll command to continue waiting. Server-side the run continues regardless.
Before presenting matches, filter the results for obvious noise:
urlname echoes the user's query (e.g., literal "YC W25 batch companies in developer tools") — those are search-result placeholders, not real entitiesurl is a third-party directory or profile page rather than the entity's own domain. The URL should be something the entity itself owns (its product site, docs, or marketing site)If filtering removes a meaningful share of matches, mention this to the user and suggest re-running with -g pro or a higher -n.
Sanity-check -g base results. The base generator can hallucinate categorical attributes (e.g., return a YC S22 company as a YC W25 match). The filter rules above only catch URL/name shape, not factual correctness. If the user's query has a falsifiable attribute (a specific batch, year, geography, etc.), spot-check the kept entries against the source URL and flag any that don't fit. Recommend re-running with -g core (or higher) if either multiple kept entries fail the spot-check or noise filtering dropped a meaningful share of the matched set (say, ≥40%) — both indicate base isn't producing reliable results for this query.
Present the remaining (real) entities as a markdown table or list. Lead with the count, then list each entity with its name, URL, and a one-line description if available. Cite each entity with its source URL.
Tell the user:
/tmp/$FILENAME.json)Add fields to these results, e.g.:
parallel-cli findall enrich $FINDALL_ID '{"properties":{"ceo":{"type":"string"},"employee_count":{"type":"number"}}}'
The schema is a JSON Schema-style object with properties mapping field names → {type, description?}.
Get more matches: parallel-cli findall extend $FINDALL_ID 50
Use this path only when the user explicitly signals they want a quick/rough/preview list — do not pick it just because the entity type happens to be companies or people.
Synchronous call. No polling, no findall_id. Pick a descriptive $FILENAME (lowercase, hyphens, no spaces), as in Step 2.
parallel-cli findall entity-search "$ARGUMENTS" -t companies -n 25 -o "/tmp/$FILENAME.json"
Flags:
-t companies|people — entity type (required). The endpoint only supports these two; for anything else, use findall run-n 5..1000 — match limit (default 10).--json for large result sets — it will flood context. -o saves the full results to diskResponse shape:
{ "entity_set_id": "entity_set_…", "entities": [ {"name": "...", "url": "...", "description": "..."},
… ] }
Unlike the full path, the url returned by entity-search is usually a directory/profile link — expected, not noise. Don't drop them; only filter out entries with an empty url or a name that echoes the query.
Present the kept entities as a markdown table or list, lead with the count, and cite each with its source URL. Tell the user:
/tmp/$FILENAME.json) if -o was usedRequires parallel-cli (installed and authenticated). If parallel-cli --version fails, or if a later command fails with an authentication error, tell the user to see https://docs.parallel.ai/integrations/cli and stop.