skillZs
LIVE SKILL TAGS
>>> LIVE SKILLS INDEX <<<
* OPEN SOURCE *
NO LOGIN, NO TRACKING
REAL INSTALL DATA
← back to all skills
hubspot/agent-cli-skills804 installs

crm-lookup

Find a specific CRM record by ID, email, domain, or name fragment, and traverse associations for the full account picture.

How do I install this agent skill?

npx skills add https://github.com/hubspot/agent-cli-skills --skill crm-lookup
view source ↗

Is this agent skill safe to install?

  • Gen Agent Trust Hubpass

    This skill facilitates read-only CRM record lookups using the HubSpot CLI. It focuses on finding contacts, companies, and deals by ID, email, or name. The operations are standard for CRM management and do not exhibit malicious behavior.

  • Socketpass

    No alerts

  • Snykwarn

    Risk: MEDIUM · 1 issue

What does this agent skill do?

Source of truth

hubspot <command> --help is authoritative. Read bulk-operations/SKILL.md first — it owns JSONL piping, pagination, batch-get-via-stdin, and the safety flow for any write that comes after a lookup. This skill is read-only.

Pick properties from the live schema

Schemas drift. Run hubspot properties list --type <type> for the live set. First-pass --properties for a brief:

Object--properties
contactsemail,firstname,lastname,company,phone,lifecyclestage,hubspot_owner_id
companiesname,domain,industry,annualrevenue,numberofemployees,hubspot_owner_id
dealsdealname,amount,dealstage,closedate,hubspot_owner_id,hs_is_closed_won
ticketssubject,hs_pipeline_stage,hs_ticket_priority,hubspot_owner_id

Contact ad/campaign attribution lives on hs_analytics_* (e.g. hs_analytics_source, hs_analytics_source_data_1/_2, hs_analytics_first_touch_converting_campaign, hs_analytics_last_touch_converting_campaign). Full list: hubspot properties list --type contacts | grep hs_analytics_.

1. Lookup by ID

Up to ~100 IDs in a single batch call:

hubspot objects get --type contacts 12345 67890 23456 --properties email,firstname,lastname,company,phone,lifecyclestage

2. Find one by email / domain (exact match)

email/domain are exact-match — normalize to lowercase. Multiple --filter flags are OR'd.

hubspot objects search --type contacts --filter "email=jane@acme.com" \
  --properties email,firstname,lastname,company,lifecyclestage,hubspot_owner_id

hubspot objects search --type companies --filter "domain=acme.com" \
  --properties name,domain,industry,annualrevenue,hubspot_owner_id

# OR — multiple emails in one call
hubspot objects search --type contacts \
  --filter "email=alice@acme.com" --filter "email=bob@acme.com" --properties email,firstname

3. Find by partial name (token + client-side narrowing)

~ is CONTAINS_TOKEN — matches whole space-separated words. dealname~acme finds "Acme Renewal" but not "AcmeCorp". For substring, pipe to jq. There's no full-text search across all fields — pick the property.

hubspot objects search --type deals --filter "dealname~acme" --properties dealname,amount,dealstage \
| jq -c 'select(.properties.dealname | ascii_downcase | contains("acme corp"))'

4. Find all associated records (two CLI calls, not xargs)

Pattern: associations listjq -c '{id}'objects get batch. Never xargs -I{} hubspot objects get … — that spawns one process per record. Use plural in --from (contacts:, companies:, deals:); --help shows singular but only plural avoids a warning.

# All contacts at a company
hubspot associations list --from companies:67890 --to contacts \
| jq -c '{id}' \
| hubspot objects get --type contacts --properties email,firstname,lastname,jobtitle

# Open deals for a contact (filter client-side; "open" varies by pipeline)
hubspot associations list --from contacts:12345 --to deals | jq -c '{id}' \
| hubspot objects get --type deals --properties dealname,amount,dealstage,hs_is_closed \
| jq -c 'select(.properties.hs_is_closed != "true")'

5. Get a record plus its associations

contact_id=12345
hubspot objects get --type contacts $contact_id --properties email,firstname,lastname,company,lifecyclestage

# Associated company (usually one)
hubspot associations list --from contacts:$contact_id --to companies | jq -c '{id}' | head -1 \
| hubspot objects get --type companies --properties name,domain,industry,annualrevenue

# Associated deals
hubspot associations list --from contacts:$contact_id --to deals | jq -c '{id}' \
| hubspot objects get --type deals --properties dealname,amount,dealstage,closedate

Constraints

  • Search returns ≤100 per page. For more, use the pagination loop in bulk-operations/SKILL.md.
  • ~ is token-based; substring filtering happens in jq after the search.
  • If the lookup feeds a write (update, delete, merge), follow the --dry-run → digest → --confirm flow in bulk-operations/SKILL.md.

Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.

<a href="https://skillzs.dev/skills/hubspot/agent-cli-skills/crm-lookup">View crm-lookup on skillZs</a>