What
Add HubSpot as a registered service, following the exact pattern already used by github, slack, stripe, and google_workspace.
Why
More service configurations mean more agents can use AgentGate out of the box without writing any Go code — this is a config-only, no-code-required contribution.
Files to touch
configs/services.yaml — the file the Dockerfile and quickstart actually load. Add a hubspot: entry.
config/services.yaml — the local, non-Docker dev default. Add the same entry for consistency (see internal/registry/production_config_test.go's TestProductionConfig_LocalDevDefaultMatches, which checks these two files don't drift).
configs/services/hubspot.yaml — a new per-service reference file, matching the convention README.md points readers at (see configs/services/google_workspace.yaml for the exact shape to copy).
Suggested shape
HubSpot's CRM API (https://developers.hubspot.com/docs/api/crm/contacts) supports OAuth2 with well-documented authorize/token URLs and scopes. A narrow, read-focused starting scope keeps this in the spirit of the existing Gmail-labels-only Google Workspace connector:
hubspot:
base_url: https://api.hubapi.com
auth:
type: oauth2
authorize_url: https://app.hubspot.com/oauth/authorize
token_url: https://api.hubapi.com/oauth/v1/token
scopes: [crm.objects.contacts.read]
actions:
list_contacts:
method: GET
path: /crm/v3/objects/contacts
params:
limit: "int?"
Acceptance checks
configs/services.yaml, config/services.yaml, and configs/services/hubspot.yaml all parse as valid YAML and match the registry.Config schema in internal/registry/registry.go.
go test ./internal/registry/... passes, including the existing TestProductionConfig_* tests.
- No Go code changes are required for this issue.
Test path (no secrets needed)
go test ./internal/registry/... -run TestProductionConfig -v
This test loads the real config files directly — no live HubSpot account, API key, or network access needed.
What
Add HubSpot as a registered service, following the exact pattern already used by
github,slack,stripe, andgoogle_workspace.Why
More service configurations mean more agents can use AgentGate out of the box without writing any Go code — this is a config-only, no-code-required contribution.
Files to touch
configs/services.yaml— the file the Dockerfile and quickstart actually load. Add ahubspot:entry.config/services.yaml— the local, non-Docker dev default. Add the same entry for consistency (seeinternal/registry/production_config_test.go'sTestProductionConfig_LocalDevDefaultMatches, which checks these two files don't drift).configs/services/hubspot.yaml— a new per-service reference file, matching the conventionREADME.mdpoints readers at (seeconfigs/services/google_workspace.yamlfor the exact shape to copy).Suggested shape
HubSpot's CRM API (https://developers.hubspot.com/docs/api/crm/contacts) supports OAuth2 with well-documented authorize/token URLs and scopes. A narrow, read-focused starting scope keeps this in the spirit of the existing Gmail-labels-only Google Workspace connector:
Acceptance checks
configs/services.yaml,config/services.yaml, andconfigs/services/hubspot.yamlall parse as valid YAML and match theregistry.Configschema ininternal/registry/registry.go.go test ./internal/registry/...passes, including the existingTestProductionConfig_*tests.Test path (no secrets needed)
go test ./internal/registry/... -run TestProductionConfig -vThis test loads the real config files directly — no live HubSpot account, API key, or network access needed.