Install
openclaw skills install @kernel-gd/openmerch-people-searchSearch for people at a company by domain and role keywords. Returns obfuscated profiles (first name, last-name initial, title, company). No email addresses. For full profiles, use the separate openmerch-people-enrichment skill.
openclaw skills install @kernel-gd/openmerch-people-searchSearch for people at a company by domain and role keywords. Returns first name, obfuscated last name, job title, and company name for each match.
Last names are obfuscated in search results (e.g. "D."). For full
profiles (email, LinkedIn URL, full name), install the separate
openmerch-people-enrichment skill.
The exact price is confirmed by /v1/plan before anything runs — roughly
$0.0059 at current pricing. The skill never charges more than the planned
max_cost. ClawHub does not handle billing and takes no fee — the charge is
between you and OpenMerch.
Get a key from the Developer page in the OpenMerch app:
export OPENMERCH_API_KEY="om_live_xxxxxxxx"
# Optional — defaults to https://api.openmerch.dev:
# export OPENMERCH_BASE_URL="https://api.openmerch.dev"
Install openmerch-people-enrichment alongside this skill for the full
people-intelligence workflow. The two skills are designed to be used in tandem:
id per person.openmerch-people-enrichment) — pass an id from step 1 to retrieve
the full profile: email address, full name, LinkedIn URL, title, and employer.If your goal is only to discover who works somewhere, this skill is sufficient on its own. If you need to identify or contact a specific person, install both.
No hidden network behavior. This skill makes only these OpenMerch HTTP calls, in order:
POST {OPENMERCH_BASE_URL}/v1/plan — confirm the job is executable and get the price.POST {OPENMERCH_BASE_URL}/v1/execute — run the search (one job).GET {OPENMERCH_BASE_URL}/v1/jobs/{job_id} — only if the job is still executing, to poll
until it finishes. Most runs return completed immediately and no polling is needed.Every request sends the header X-OpenMerch-Key: $OPENMERCH_API_KEY.
Requires Node 18+ (no npm install):
node people-search.mjs stripe.com "backend engineer"
node people-search.mjs amazon.com "site reliability engineer" 25 1
Prints a normalized JSON result to stdout and exits non-zero on error.
1. Plan. POST /v1/plan:
{
"job_type": "people_enrichment_v1",
"input": {
"operation": "people-search",
"params": {
"q_organization_domains": "amazon.com",
"q_keywords": "site reliability engineer",
"per_page": 25,
"page": 1
}
}
}
can_execute is not true, stop and report the reason. Do not execute.max_cost = quoted_customer_price_microcents if present, otherwise
estimated_cost.max_microcents. /v1/plan is the source of truth for the price — never
hardcode one.2. Execute. Generate one UUID v4 as idempotency_key. POST /v1/execute:
{
"job_type": "people_enrichment_v1",
"input": {
"operation": "people-search",
"params": {
"q_organization_domains": "amazon.com",
"q_keywords": "site reliability engineer",
"per_page": 25,
"page": 1
}
},
"max_cost": "<max_cost from step 1>",
"idempotency_key": "<uuid>"
}
Reuse the same idempotency_key on retry for the same search to prevent double charges.
Generate a new key only for a genuinely new search.
3. Poll only if needed. If status is "executing", poll GET /v1/jobs/{job_id} every ~1s
(cap ~8 tries / ~15s) until status is completed, failed, or cancelled.
4. Report. On completed, present the normalized result (below). On failed/cancelled,
report error.code and error.message. Always report cost_usd and job_id.
BASE="${OPENMERCH_BASE_URL:-https://api.openmerch.dev}"
curl -sS -X POST "$BASE/v1/plan" \
-H "X-OpenMerch-Key: $OPENMERCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{"job_type":"people_enrichment_v1","input":{"operation":"people-search","params":{"q_organization_domains":"amazon.com","q_keywords":"site reliability engineer","per_page":25,"page":1}}}'
{
"count": 3,
"total_entries": 312,
"people": [
{
"id": "abc123",
"first_name": "Jane",
"last_name_obfuscated": "D.",
"title": "Senior Backend Engineer",
"organization": "Stripe"
}
],
"cost_usd": 0.0059,
"job_id": "…"
}
total_entries is the provider's total match count across all pages (included when available).
count is the number of records returned on this page. cost_usd is derived from the actual
cost.total_microcents charged.
per_page results (default 25); paginate with page."D."), not full last names.
For the full profile, use the openmerch-people-enrichment skill.cost_usd is cost.total_microcents / 10000000.