Ducto

HubSpot

Your CRM, driven by an agent that cannot quietly delete it

Contacts, companies, deals and tickets — read them, search them, update them, and roll a pipeline up by stage. Fourteen tools, with archiving blocked by default because HubSpot's API has no undo.

14 tools7 read7 writemcp.getducto.com/hubspot
connect the hubspot mount

$ claude mcp add --transport http hubspot \

https://mcp.getducto.com/hubspot

✓ connected — 14 tools

read-only until you set a policy

What your agent does here

Real HubSpot work, in conversation

Work the pipeline

Move deals through stages, update amounts and close dates, and get a stage-by-stage rollup with counts and summed value.

hubspot_pipeline_reporthubspot_update_objecthubspot_list_pipelines

Keep records current

Create and update contacts, companies and tickets, link them together, and log notes and tasks as the work happens.

hubspot_create_objecthubspot_create_notehubspot_associate_objects

Ask the CRM anything

Search on HubSpot's own filter grammar and read the property schema first, so the agent uses the fields your portal actually has.

hubspot_search_objectshubspot_list_propertieshubspot_list_owners

Governed writes

How writes are enforced

A CRM moves no money, so there are no spend caps to set — the gate is what a change can destroy. Notes, tasks and record edits run instantly; deal changes wait for approval because they move the forecast; archiving any record is blocked outright, and merges and bulk imports have no tool at all.

read-only defaultcaps ← policy rowpreview before applyapproval on flagged classeshash-chained audit

The full request path is on the security architecture page.

Tool reference

Every tool in the hubspot mount

Generated from the running gateway's tool registry — this is the complete list, not a highlight reel.

hubspot_archive_objectwriteArchive (soft-delete) a CRM record. HubSpot moves it to the recycling bin — restorable in-app for 90 days, but the API offers no restore, so Ducto treats this as irreversible and the category is blocked by default.
hubspot_associate_objectswriteLink two records (e.g. associate a contact with a deal). Omit ``association_type_id`` for HubSpot's standard unlabeled association; pass one to apply a specific association label.
hubspot_create_notewriteLog a note against records. ``timestamp`` is an ISO-8601 instant (HubSpot requires it explicitly). ``associations`` is ``[{"to_type": "contacts", "to_id": "123"}]`` — each target is attached with HubSpot's standard association for the pair.
hubspot_create_objectwriteCreate a CRM record (contacts / companies / deals / tickets). ``properties`` maps HubSpot property names to values. To log a note or task use the engagement tools instead — they carry their own approval category.
hubspot_create_taskwriteCreate a task (due at ``timestamp``), optionally assigned and associated.
hubspot_get_objectreadFetch one CRM record by id, optionally with its associated records.
hubspot_list_objectsreadList CRM records of one type. ``object_type`` is one of contacts / companies / deals / tickets / notes / tasks. Omit ``properties`` for a sensible default set per type. Use ``hubspot_search_objects`` when you need to filter.
hubspot_list_ownersreadList portal owners — the users a record or task can be assigned to.
hubspot_list_pipelinesreadList pipelines and their ordered stages (deals or tickets).
hubspot_list_propertiesreadList the property schema for an object type — names, types and enum options. The discovery call to make before writing: it tells you exactly which property names exist in this portal and which values an enumerated property accepts.
hubspot_pipeline_reportreadRoll a pipeline up by stage: record count and summed amount per stage. The CRM reporting call — use ``hubspot_list_pipelines`` to find the pipeline id. ``max_rows`` bounds the scan; a bigger pipeline reports ``truncated: true`` and the totals then cover only the records that were read.
hubspot_remove_associationwriteUnlink two records. Reversible — re-associating restores the link.
hubspot_search_objectsreadSearch CRM records. ``query`` is free-text. ``filter_groups`` is HubSpot's native filter grammar — a list of groups OR'd together, filters within a group AND'd, e.g. ``[{"filters": [{"propertyName": "lifecyclestage", "operator": "EQ", "value": "customer"}]}]``. Call ``hubspot_list_properties`` first to learn the property names and their allowed values.
hubspot_update_objectwriteUpdate a CRM record's properties (overwrites the named fields only).