Known differences

HubSpot

A HubSpot portal that answers the CRM, marketing, CMS, email, automation and engagements APIs the official Python SDK calls, plus HubSpot's remote MCP paths.

Vendor reference: https://developers.hubspot.com/docs/api/overview ↗. Machine-readable: compat/hubspot.json.

Surfaces

KindPathNotes
REST/crm/v3objects, search, batch, properties, pipelines; associations under /crm/v4; schemas under /crm-object-schemas/v3
REST/marketing/v3also /cms/v3, /email/public/v1, /automation/v4, /engagements/v1, /account-info/v3
OAuth/oauthprivate-app tokens or OAuth2 access tokens, and HubSpot's remote-MCP OAuth paths
Webhookswebhook subscriptionsCRM events delivered to your endpoint
MCP/mcpalso /anthropic, /openai and the bare origin, as mcp.hubspot.com serves them

API versions: CRM v3 and v4, Marketing v3, CMS v3, Automation v4, Engagements v1

Supported

Not supported

Known differences and test guidance

ScenarioDifference from HubSpotIn your tests
Record idsGenerated records use string ids such as acct-0, not numeric ids; created records get numeric ids from 9000001. Engagements also answer to a numeric alias.Treat ids as opaque strings; do not do arithmetic on them or parse toObjectId as a number.
Rate limitsRate-limit headers are sent but the limit is not enforced by default.Assert that your client reads the headers; inject throttle to test a 429.
Campaign metricsMetrics follow the campaign's email engagement events; a campaign with no events falls back to a deterministic synthetic curve.Assert on consistency between events and totals, not on specific values.
State between testsCreated records are kept in memory, visible to every read path, and dropped by a reset or state change.Reset between tests rather than cleaning up by hand.

Fault injection

KeyWhat the client sees
throttle429 RATE_LIMITS with policy TEN_SECONDLY_ROLLING and Retry-After
fail_nextThe next N calls fail as throttle does, then clear
quota_limit429 RATE_LIMITS with policy DAILY ("You have reached your daily limit.")
error_rate500 INTERNAL_ERROR for the given fraction of calls
latency_msFixed added latency on every data-plane request

Applies to every system