Lessie — People Search & Enrichment
Setup
Lessie supports two modes: CLI (default, recommended) and MCP Server.
Mode A: CLI (default)
Install the Lessie CLI binary:
npm install -g @lessie/cli
Or use without installing:
npx @lessie/cli --version
First-time authorization:
lessie auth
This opens a browser for login/registration. Token is cached at ~/.lessie/oauth.json.
Verify connection:
lessie status
Mode B: MCP Server
Add to your MCP config (Claude Code ~/.claude/mcp.json, Cursor ~/.cursor/mcp.json, etc.):
{
"mcpServers": {
"lessie": {
"command": "npx",
"args": ["-y", "@lessie/mcp-server"],
"env": {
"LESSIE_REMOTE_MCP_URL": "https://app.lessie.ai/mcp-server/mcp"
}
}
}
}
Uninstall
- CLI:
npm uninstall -g @lessie/cli && rm -rf ~/.lessie/ - MCP: Remove the
"lessie"entry from your.mcp.jsonandrm -rf ~/.lessie/
Quick start
After setup, try saying to Claude:
- "Find Engineering Managers at Stripe in San Francisco"
- "Look up Sam Altman's contact info"
- "Research OpenAI — recent news and open job postings"
Mode detection
Determine which mode to use at the start of each session:
- Check if
lessieCLI is available: runlessie status - If the command succeeds → use CLI mode (call tools via Bash)
- If the command fails (not found) → attempt auto-install:
npm install -g @lessie/cli - After install, run
lessie statusagain to verify - If install succeeds → use CLI mode
- If install fails (no npm, permission denied, network error, etc.) → check if MCP tools are available (
authorize,use_lessie) - If MCP tools are available → use MCP mode
- If neither → inform the user that installation failed and suggest manual install or MCP setup
Credits & Pricing
Lessie is a credit-based service.
New accounts receive free trial credits. View your balance and purchase more at https://lessie.ai/pricing.
The agent will disambiguate company names before searching to avoid wasting credits on wrong results.
Data & Privacy
- Data sources: Contact and company information is aggregated from publicly available sources (business directories, social profiles, corporate websites).
- Query logging: Search queries are logged for service improvement and abuse prevention. No query data is shared with third parties.
- Data compliance: Lessie follows applicable data protection regulations. Users are responsible for using retrieved contact data in compliance with local laws (GDPR, CAN-SPAM, etc.).
- Privacy policy: https://lessie.ai/privacy
- Terms of service: https://lessie.ai/terms-of-service
Authorization
CLI mode
- Run
lessie statusto check token validity. - If
authorized: false→ runlessie authto open browser for login. - After the user completes login, run
lessie statusagain to confirm.
MCP mode
- Call
authorizeto check connection status. - If already authorized → proceed to use tools directly.
- If not authorized →
authorizereturns an authorization URL. Tell the user you need to open a browser for Lessie login/registration, and open it using the appropriate system command:- macOS:
open "<url>" - Linux:
xdg-open "<url>" - Windows:
start "<url>"
- macOS:
- Tell the user the browser has been opened and they need to complete login/registration.
- After the user confirms, call
authorizeagain to verify the connection. - If authorization fails (timeout, denied, port conflict), follow the diagnostic hints returned by
authorizeand retry.
Always inform the user before opening the browser — never silently redirect.
Agent behavior rules
CRITICAL: Confirm before every credit-consuming action
Every Lessie tool call costs credits. Credit costs per tool:
| Tool | Cost |
|---|---|
find-people | 20 credits per search |
enrich-people | 1 credit × number of people (only charged for successful matches) |
review-people | 1 credit × number of people |
enrich-org | 1 credit |
find-orgs | 1 credit |
job-postings | 1 credit |
company-news | 1 credit |
web-search | 1 credit |
web-fetch | 1 credit |
Before executing any command, you MUST:
- Tell the user what you are about to do and the estimated cost (e.g., "I'll enrich 3 people — this costs ~3 credits").
- Wait for explicit confirmation before executing.
- Never batch multiple credit-consuming calls without confirming the full plan first.
Exception — skip confirmation if the user has explicitly said they don't want to be prompted (e.g., "don't ask me every time", "just do it", "skip confirmations"). In that case, proceed directly but still log what you executed and the credits spent after each call.
CRITICAL: Report credit usage after every call
After each conversation turn that involved one or more Lessie tool calls, append a one-line summary of credits consumed. Format:
Used
<tool-name>, cost <N> credit(s).
If multiple tools were called in the same turn, combine them:
Used
web-search+enrich-org, cost 2 credits total.
CRITICAL: Read references before first CLI call
Before executing any lessie CLI command for the first time in a session, you MUST read references/cli-reference.md to learn the exact parameter syntax. Do NOT guess parameter names — the CLI uses --filter with JSON, not --title/--company style flags.
Entity disambiguation
When a user mentions a company name that could refer to multiple entities (e.g., "Manus" could be Manus AI, Manus Bio, Manus Plus, etc.), disambiguate before searching:
- Ask the user which company they mean, or present the top candidates and let them pick.
- If context makes it unambiguous (e.g., user previously discussed AI agents), state your assumption and confirm: "你是指做 AI Agent 的 Manus AI (manus.im) 吗?"
- Never silently assume one entity over another — wrong domain = wasted search credits and irrelevant results.
Tools overview
People
| Tool | CLI command | When to use |
|---|---|---|
find_people | lessie find-people | Discover people by title, company, location, seniority, audience. Default strategy is hybrid. If a request times out or fails, retry with --strategy saas_only — it's faster (~30s vs ~60s) and more stable, though recall may be lower |
enrich_people | lessie enrich-people | Enrich known people with full profiles. Two paths: B2B (via linkedin_url or name+domain → email, phone, work history) and KOL (via twitter/instagram/tiktok/youtube username → follower count, social links). Max 10 per call |
review_people | lessie review-people | Deep-qualify ambiguous candidates via web research — skip for obvious matches/mismatches |
# Find people — uses --filter with JSON, NOT --title/--company flags
lessie find-people \
--filter '{"person_titles":["Engineering Manager"],"organization_domains":["stripe.com"]}' \
--checkpoint 'EMs at Stripe' \
--strategy hybrid \
--target-count 10
# Enrich people (B2B) — linkedin_url is best; fallback: name + domain
lessie enrich-people \
--people '[{"linkedin_url":"https://www.linkedin.com/in/samaltman/"}]'
# Enrich people (B2B) — name + domain fallback
lessie enrich-people \
--people '[{"first_name":"Sam","last_name":"Altman","domain":"openai.com"}]'
# Enrich people (B2B) — include personal emails
lessie enrich-people \
--people '[{"first_name":"Sam","last_name":"Altman","domain":"openai.com"}]' \
--include-personal-emails
# Enrich people (KOL) — Twitter/X
lessie enrich-people \
--people '[{"twitter_screen_name":"elonmusk"}]'
# Enrich people (KOL) — Instagram
lessie enrich-people \
--people '[{"instagram_username":"natgeo"}]'
# Enrich people (KOL) — TikTok
lessie enrich-people \
--people '[{"tiktok_username":"charlidamelio"}]'
# Enrich people (KOL) — YouTube
lessie enrich-people \
--people '[{"youtube_username":"MrBeast"}]'
# Review people — deep-qualify from a previous search
lessie review-people \
--search-id 'mcp_xxx' \
--person-ids '["id1","id2"]' \
--checkpoints '[{"key":"Relevance","description":"...","title":"Relevance","category":"career"}]'
Companies
| Tool | CLI command | When to use |
|---|---|---|
find_organizations | lessie find-orgs | Discover companies by name, keyword, location, size, funding |
enrich_organization | lessie enrich-org | Get full profile for known company domain(s) — industry, employees, funding, tech stack |
get_company_job_postings | lessie job-postings | View active job openings (needs organization_id from enrich) |
search_company_news | lessie company-news | Find recent news articles (needs organization_id from enrich) |
# Find organizations
lessie find-orgs \
--keyword-tags '["AI","SaaS"]' \
--locations '["China"]' \
--employees '["51,200"]'
# Enrich organization
lessie enrich-org --domains '["stripe.com"]'
# Job postings (needs org ID from enrich)
lessie job-postings --org-id '5f5e100...'
# Company news
lessie company-news --org-ids '["5f5e100..."]'
Web research
| Tool | CLI command | When to use |
|---|---|---|
web_search | lessie web-search | General web search; cached results make follow-up web_fetch free |
web_fetch | lessie web-fetch | Extract specific info from a URL via AI summarization |
# Web search
lessie web-search --query 'OpenAI official website' --count 5
# Web fetch
lessie web-fetch --url 'https://example.com' --instruction 'Extract job title and company'
Detailed references
- CLI command examples & MCP calling: See references/cli-reference.md
- Workflow patterns (domain resolution, company research, search+qualify): See references/workflow-patterns.md
- Domain resolution decision tree: See references/domain-resolution.md
Key constraints
enrich_people/enrich_organization: max 10 per call; split larger lists into batchesfind_people/find_organizations: paginated — use--pagefor more resultsweb_searchcaches page content; if a result hashas_content: true, callingweb_fetchon that URL is instant- Seniority levels:
owner,founder,c_suite,partner,vp,head,director,manager,senior,entry,intern - For people enrichment, providing
domain(company domain) alongside name greatly improves match accuracy - CLI output is JSON on stdout, status messages on stderr — parse stdout for data