AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Hubspot Contacts

skill-dipankar-hubspot-cli-hubspot-contacts · by dipankar

Use when the user wants to search, read, create, update, delete, or otherwise manage HubSpot CRM contacts (people records, emails, leads, subscribers) via the `hubspot` command-line tool.

No reviews yet
0 installs
7 views
0.0% view→install

Install

$ agentstack add skill-dipankar-hubspot-cli-hubspot-contacts

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-dipankar-hubspot-cli-hubspot-contacts)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Hubspot Contacts? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

HubSpot Contacts (via hubspot CLI)

Drive HubSpot contact operations through the hubspot CLI. Every command emits a JSON envelope ({"success": true, "data": ...}) suitable for parsing.

Prerequisite: authentication

The CLI reads HUBSPOT_ACCESS_TOKEN (a HubSpot private-app token) from the environment. If a command returns exit code 3 with AUTH_ERROR, tell the user:

export HUBSPOT_ACCESS_TOKEN=

Multi-account users can pass --profile (reads [profiles.] from ~/.config/hubspot-cli/config.toml).

Canonical commands

| Intent | Command | | --- | --- | | List recent contacts | hubspot crm contacts list --limit 10 | | Paginate | hubspot crm contacts list --limit 50 --after | | Request extra properties | hubspot crm contacts list --properties phone,company,lifecyclestage | | Get by ID | hubspot crm contacts get 12345 | | Create from flags | hubspot crm contacts create --email jane@example.com --firstname Jane --lastname Doe | | Create from JSON | hubspot crm contacts create --properties '{"email":"jane@x.com","lifecyclestage":"lead"}' | | Update | hubspot crm contacts update 12345 --firstname Janet | | Delete (archive) | hubspot crm contacts delete 12345 --yes | | Simple search | hubspot crm contacts search --query "email:*@acme.com" --limit 25 | | Filtered search | hubspot crm contacts search --filter-groups '[{"filters":[{"propertyName":"lifecyclestage","operator":"EQ","value":"customer"}]}]' | | Batch create | hubspot crm contacts batch-create --inputs '[{"properties":{"email":"a@x.com"}},{"properties":{"email":"b@x.com"}}]' | | Discover properties | hubspot discover properties contacts |

Filter-group operators

Common operator values for --filter-groups: EQ, NEQ, GT, GTE, LT, LTE, BETWEEN, IN, NOT_IN, HAS_PROPERTY, NOT_HAS_PROPERTY, CONTAINS_TOKEN, NOT_CONTAINS_TOKEN. Filter groups are OR'd; filters within a group are AND'd.

Default vs custom properties

Only email, firstname, lastname come back by default. For anything else (phone, company, lifecyclestage, hs_lead_status, hubspot_owner_id, custom properties) pass --properties prop1,prop2,.... Use hubspot discover properties contacts to list every valid property name.

Output envelope

{
  "success": true,
  "data": { "id": "12345", "properties": { "email": "...", "firstname": "..." } },
  "paging": { "next_cursor": "abc", "has_more": true }
}

List endpoints put an array in data. Pagination: when paging.has_more is true, call again with --after .

Error codes (JSON error.code, exit code)

| Code | Exit | Action | | --- | --- | --- | | AUTH_ERROR | 3 | Tell the user to set HUBSPOT_ACCESS_TOKEN | | VALIDATION_ERROR / DUPLICATE_EMAIL | 5 | Show error.message; fix input | | NOT_FOUND | 6 | Contact ID doesn't exist or was archived | | RATE_LIMIT | 7 | Back off using error.retry_after_seconds | | SERVER_ERROR | 8 | Transient; retry once |

Required scopes

  • Read: crm.objects.contacts.read
  • Write: crm.objects.contacts.write
  • Search: crm.objects.contacts.read

Tips for the agent

  • Prefer search over list when the user describes a filter ("contacts in lifecycle stage customer"). list has no filtering.
  • Always pass --limit when the user says "a few" / "some" to keep responses small.
  • Use --output json-pretty only when showing the raw JSON to the user; use the default json when piping into jq or parsing.
  • Never echo the access token back to the user.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.