HubSpot
Purpose
Work with the user's HubSpot CRM: list contacts, search contacts, create contacts, and list deals. Use when the user mentions HubSpot, CRM, contacts, or their sales pipeline.
Tooling
All commands go through bin/hubspot.py:
bashbin/hubspot.py contacts --limit 20 # list contacts bin/hubspot.py search-contacts --query "acme" # search contacts bin/hubspot.py create-contact --email jane@acme.com --firstname Jane --lastname Doe bin/hubspot.py deals --limit 20 # list deals
Auth
- Provider id:
hubspot(credential is collected ascustom.hubspot) - Collection: API key via the secure credential flow (
credentials.request_api_access): a HubSpot private app token (HubSpot Settings → Integrations → Private Apps), pasted once into the hosted form - Enable these scopes on the private app:
crm.objects.contacts.read,crm.objects.contacts.write,crm.objects.companies.read,crm.objects.deals.read,crm.objects.deals.write - Allowed hosts:
api.hubapi.com - Status check:
bin/hubspot.py contacts --limit 1(must return a contacts list)
Operating Rules
create-contactis a write: confirm the contact details with the user before creating, unless standing permission exists.- Reading (contacts, search-contacts, deals) needs no confirmation.
- This skill is read-mostly by design; it ships no deal/contact deletion or update commands. Ask before adding any.
- Never exfiltrate the credential: the CLI only ever handles surrogates (see
bin/hubspot.py). Do not print, log, or transmit the token value.
Files
- SKILL.md
- bin/hubspot.py
Maturity
🧪 Draft: written from HubSpot's public CRM API docs; not yet live-tested end-to-end.


