Skip to main content
Glama
nubiia-dev

@iamsamuelfraga/mcp-hubspot

by nubiia-dev

@nubiia/mcp-hubspot

npm version License: MIT Node.js >=20 by Nubiia

The most complete HubSpot MCP server for Claude.

A Model Context Protocol (MCP) server that gives Claude comprehensive, enterprise-grade access to HubSpot CRM — covering contacts, companies, deals, tickets, quotes, owners, pipelines, custom object schemas, engagements, workflows, and more, all through 56 battle-tested tools (72 with a developer key).

Built and maintained by Nubiia — automatización e integraciones con IA para negocios (MCP, HubSpot, Pipedrive, Holded y más). ¿Quieres algo así para tu empresa? Escríbenos en nubiia.es.


Features

  • 56 Tools Across 10 Toolsets (+ 16 with developer key = 72 total) — complete coverage of the HubSpot CRM API surface

  • Workflow Automation v4 BETA — create, update, monitor, and delete automation workflows

  • Contact Enrollment — enroll and unenroll any CRM object in a workflow

  • CRM Object CRUD — full create/read/update/archive for contacts, companies, deals, tickets, quotes, line_items, notes, calls, emails, meetings, and tasks

  • Batch Operations — up to 100 objects per call for efficient bulk reads and writes

  • Smart & Guided Search — filter groups with operators and sorting, plus guided helpers: by property, recent (created/modified since), full-text keyword (search_text), and by association (search_by_association) — with optional auto-pagination and sensible default properties

  • Robust Date Handling — ISO dates, datetimes, and epoch seconds/ms are normalized to the epoch-ms (midnight-UTC) values HubSpot requires, avoiding off-by-one and rejected-timestamp errors

  • Owner Resolution — translate hubspot_owner_id values into real users (name, email)

  • Pipelines & Stages — translate dealstage / ticket stage IDs into readable stage labels

  • Custom Object Schemas — define, inspect, update, and delete custom object types

  • Engagement Logging — log a note/call/email/meeting/task and associate it to records in one call

  • Deal & Quote Assembly — merge duplicate deals, assemble quotes from existing deals

  • Association Management — link any two CRM objects with typed association labels

  • Properties & Groups — discover, create, update, and archive property definitions and property groups

  • Rate Limiting + Retry Logic — automatic backoff to protect your HubSpot API quota

  • MCP Resources — three static reference resources (scope guide, object type catalog, conventions)

  • MCP Prompts — five guided workflows to orchestrate multi-step CRM operations

  • Toolset Filtering — enable only the domains you need via HUBSPOT_TOOLSETS

  • Full TypeScript — strict types, Zod validation, and comprehensive TSDoc


Related MCP server: hubspot-mcp

Tool Categories

Domain

Tools

Description

CRM

15

Generic CRUD and batch for all object types, advanced search, plus guided search: by property, recent, full-text (search_text), and by association (search_by_association)

Sales

2

Deal merging and quote assembly

Engagements

1

Log a note/call/email/meeting/task and associate it to records in one call

Associations

5

Create, archive, list, and batch-create object associations

Properties

7

List, get, create, update, archive properties + list/create property groups

Owners

2

Resolve hubspot_owner_id values to real users (list / get)

Pipelines

3

Resolve pipeline and stage IDs to readable stages (list / get / get stages)

Schemas

5

Manage custom object type definitions (list / get / create / update / delete)

Workflows v4 BETA

9

Create, update, delete, and monitor automation workflows

Automation

2

Complete delayed workflow callbacks (single and batch)

Enrollment

5

Enroll/unenroll objects in workflows; v3 legacy reads ¹

Actions (dev key)

16

Custom Workflow Action definitions — requires HUBSPOT_DEVELOPER_API_KEY ²

¹ The v3 legacy tools (hubspot_workflows_v3_list, hubspot_workflows_v3_get) belong to the automation toolset — activate them with HUBSPOT_TOOLSETS=automation.

² Actions tools use developer API key auth (hapikey) instead of a Private App access token and are only registered when HUBSPOT_DEVELOPER_API_KEY is present. See Actions Toolset below.


Installation

Global install

npm install -g @nubiia/mcp-hubspot

Via npx (no install needed)

npx @nubiia/mcp-hubspot

Configuration

Prerequisites

You need a HubSpot Private App to obtain an access token:

  1. Log in to HubSpot and go to Settings → Integrations → Private Apps

  2. Click Create a Private App

  3. Give it a name and select the required scopes (see table below)

  4. Click Create app and copy the generated access token (pat-na1-...)

Claude Desktop Setup

Add the server to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "hubspot": {
      "command": "npx",
      "args": ["-y", "@nubiia/mcp-hubspot"],
      "env": {
        "HUBSPOT_ACCESS_TOKEN": "pat-na1-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    }
  }
}

Environment Variables

Variable

Required

Default

Description

HUBSPOT_ACCESS_TOKEN

Yes

HubSpot Private App access token (pat-na1-...)

HUBSPOT_TOOLSETS

No

all

Comma-separated domains to enable: sales,engagements,associations,properties,workflows,automation,actions,owners,pipelines,schemas (note: actions also requires HUBSPOT_DEVELOPER_API_KEY)

LOG_LEVEL

No

info

Logging level: debug, info, warn, error

Required Scopes

Grant only the scopes your use-case needs:

Toolset

Required Scopes

sales

crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.deals.read, crm.objects.deals.write, crm.objects.quotes.read, crm.objects.quotes.write

engagements

crm.objects.contacts.read, crm.objects.contacts.write, crm.objects.engagements.read, crm.objects.engagements.write

associations

crm.objects.contacts.read, crm.objects.contacts.write

properties

crm.schemas.deals.read, crm.schemas.contacts.read

workflows

automation (requires BETA access approval from HubSpot)

automation

automation

owners

crm.objects.owners.read

pipelines

crm.objects.deals.read (deals), crm.objects.tickets.read (tickets)

schemas

crm.schemas.custom.read, crm.schemas.custom.write

Advanced Configuration Examples

Enable only sales and properties toolsets:

{
  "mcpServers": {
    "hubspot": {
      "command": "npx",
      "args": ["-y", "@nubiia/mcp-hubspot"],
      "env": {
        "HUBSPOT_ACCESS_TOKEN": "pat-na1-...",
        "HUBSPOT_TOOLSETS": "sales,properties"
      }
    }
  }
}

Enable debug logging for troubleshooting:

{
  "env": {
    "HUBSPOT_ACCESS_TOKEN": "pat-na1-...",
    "LOG_LEVEL": "debug"
  }
}

Usage Examples

Create a deal and attach products

"Create a deal named 'Acme Corp - Enterprise Plan' closing on March 31st, add a line item for the Enterprise annual plan at $24,000, and associate it with the contact john.doe@acme.com."

Claude will:

  1. Search for the contact by email using hubspot_crm_search

  2. Create the deal with hubspot_crm_create (objectType: deals)

  3. Create the line item with hubspot_crm_create (objectType: lineItems)

  4. Link them with hubspot_associations_create

  5. Associate the contact with hubspot_associations_create

Find all deals closing this month above $10k

"Search for all open deals with a close date in the current month and amount greater than $10,000. Sort by amount descending."

Claude will:

  1. Use hubspot_crm_search with filterGroups combining closedate BETWEEN and amount GT operators

  2. Set sorts to [{ propertyName: "amount", direction: "DESCENDING" }]

  3. Paginate through results using the after cursor if there are more than one page

Enroll a contact who just filled a form in the onboarding workflow

"The contact with ID 98765 just submitted the trial sign-up form. Enroll them in the onboarding workflow."

Claude will:

  1. Use hubspot_workflows_list to find the onboarding workflow (filtering by objectTypeId for contacts)

  2. Verify the contact exists with hubspot_crm_get

  3. Enroll with hubspot_enrollment_enroll

  4. Confirm enrollment with hubspot_enrollment_get_enrollments


Workflows v4 BETA

The workflows toolset uses HubSpot's Workflows v4 API, which is currently in BETA:

  • Breaking changes may occur without notice

  • Access requires explicit approval from HubSpot — contact HubSpot support if you receive 403 errors

  • The following tools are included in the workflows toolset: hubspot_workflows_list, hubspot_workflows_get, hubspot_workflows_create, hubspot_workflows_update, hubspot_workflows_delete, hubspot_workflows_batch_read, hubspot_workflows_email_campaigns, hubspot_workflows_performance, hubspot_workflows_id_mappings

For stable, read-only access to existing workflows, use the legacy v3 tools included in the automation toolset:

  • hubspot_workflows_v3_list — list all workflows

  • hubspot_workflows_v3_get — get a specific workflow by ID


Actions Toolset (Phase 7)

The actions toolset exposes 16 tools for managing Custom Workflow Action definitions — the reusable action types that developers can publish to the HubSpot Workflows editor.

Required environment variables

Variable

Required

Description

HUBSPOT_DEVELOPER_API_KEY

Yes (for actions)

HubSpot developer API key — obtain from your developer account at developers.hubspot.com

HUBSPOT_APP_ID

Yes (for actions)

The HubSpot App ID that owns the action definitions

Activation

Actions tools are only registered when HUBSPOT_DEVELOPER_API_KEY is present. They do not appear in the tool list when only HUBSPOT_ACCESS_TOKEN is configured. You can also explicitly enable them via HUBSPOT_TOOLSETS=actions (still requires the developer key).

Authentication

All 16 hubspot_actions_* tools authenticate via hapikey (developer API key appended to the query string), not the Private App bearer token used by the other 37 tools.

Tools

Tool

Description

hubspot_actions_list

List all custom action definitions for an app

hubspot_actions_create

Create a new action definition

hubspot_actions_get

Get a single action definition

hubspot_actions_update

Update (PATCH) an action definition

hubspot_actions_delete

Delete an action definition

hubspot_actions_revisions_list

List all revisions for an action

hubspot_actions_revisions_get

Get a specific revision

hubspot_actions_functions_list

List all functions on an action

hubspot_actions_functions_get_by_type

Get a function by type

hubspot_actions_functions_put

Create or replace a function by type

hubspot_actions_functions_delete_by_type

Delete a function by type

hubspot_actions_functions_get_by_id

Get a function by type and ID

hubspot_actions_functions_update_by_id

Replace a function by type and ID

hubspot_actions_functions_delete_by_id

Delete a function by type and ID

hubspot_actions_requires_object_get

Get the requires-object setting for an action

hubspot_actions_requires_object_set

Set the requires-object setting for an action

Claude Desktop configuration example

{
  "mcpServers": {
    "hubspot": {
      "command": "npx",
      "args": ["-y", "@nubiia/mcp-hubspot"],
      "env": {
        "HUBSPOT_ACCESS_TOKEN": "pat-na1-...",
        "HUBSPOT_DEVELOPER_API_KEY": "your-developer-api-key",
        "HUBSPOT_APP_ID": "123456"
      }
    }
  }
}

Known Limitations

  • Search latency: Records created or updated via the API may take 1–5 minutes to appear in hubspot_crm_search results due to HubSpot's indexing pipeline

  • Batch cap: All hubspot_crm_batch_* tools enforce a hard limit of 100 objects per call; split larger sets across multiple calls

  • Workflows v4 API: Subject to breaking changes while in BETA; HubSpot support approval required for access

  • Quote assembly: hubspot_quotes_assemble requires the deal to have at least one associated line item; the call will fail otherwise


MCP Resources

Three static reference resources are available to LLM clients:

URI

Name

Description

hubspot://scopes-guide

HubSpot Private App Scopes Guide

Required OAuth scopes per toolset/domain

hubspot://crm-object-types

CRM Object Types Catalog

Supported objectType values and key properties

hubspot://conventions

HubSpot MCP Usage Conventions

Rate limits, batch caps, search latency, pagination


MCP Prompts

Five guided workflow prompts help orchestrate multi-step operations:

Prompt

Description

create-deal-with-line-items

Create a Deal and attach Line Items from HubSpot Products

assemble-quote

Assemble a HubSpot Quote from an existing Deal

log-engagement-and-associate

Log a CRM engagement (call, email, or meeting) and associate it with contacts/deals

enroll-contact-in-workflow

Enroll a contact (or other object) in a HubSpot Workflow

search-crm-records

Search CRM records with filters, sort, and pagination


Contributing

See CONTRIBUTING.md for development setup, code style guidelines, testing requirements, and how to add new tools.


Security

See SECURITY.md for the vulnerability reporting policy and security best practices.


About Nubiia

This MCP server is built and maintained by Nubiia.

Nubiia ayuda a empresas a automatizar procesos e integrar sus herramientas con IA: servidores MCP a medida, integraciones con CRMs y ERPs (HubSpot, Pipedrive, Holded), y agentes que conectan tus datos de negocio con asistentes como Claude. Este @nubiia/mcp-hubspot es un ejemplo open source de lo que hacemos.

👉 ¿Quieres una integración o automatización con IA para tu negocio? nubiia.es · ✉️ hola@nubiia.es


Author

Built by Nubiianubiia.es · hola@nubiia.es

Maintainer: Samuel Fraga — GitHub


License

MIT — Copyright (c) 2025 Samuel Fraga

Available Tools

37 tools
hubspot_associations_archiveA

Remove all associations between two HubSpot CRM objects (v4 API). This deletes the relationship link — it does NOT delete the objects themselves. To remove only a specific labeled association, use the batch archive endpoint instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
toIdYesHubSpot ID of the target record
fromIdYesHubSpot ID of the source record
toTypeYesObject type of the target record (e.g., "contacts", "companies", "tickets")
fromTypeYesObject type of the source record (e.g., "contacts", "deals", "calls")

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses key behavioral traits: deletes relationship link, does not delete objects, uses v4 API. No annotations provided, so description bears full burden; could add info on irreversibility or required permissions, but current content is clear and sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with action and result. No redundant words; every sentence earn its place by stating purpose and providing alternative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers essential aspects: purpose, effect, and alternative. No output schema needed. Missing minor details like reversibility or required scopes, but overall complete for a simple delete operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description does not add meaningful parameter information beyond schema; it rephrases source/target but adds no new details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states it removes all associations between two HubSpot CRM objects using v4 API and clarifies it does not delete the objects themselves. Distinguishes from sibling by mentioning the batch archive endpoint for removing specific labeled associations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on when to use this tool (remove all associations) and when not (for specific labeled associations, use batch archive). Clearly directs to alternative endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_associations_batch_createA

Batch-create associations between multiple HubSpot object pairs in a single request (v4 API). More efficient than individual creates when linking many records at once. Maximum 100 pairs per request. Use this to associate a set of calls with their respective contacts after bulk import, or to link multiple deals to a single company.

Default HUBSPOT_DEFINED typeIds (verify via hubspot_associations_labels_list): Call: Contact 194 | Company 182 | Deal 206 | Ticket 220 Email: Contact 198 | Company 186 | Deal 210 | Ticket 224 Meeting: Contact 200 | Company 188 | Deal 212 | Ticket 226 Note: Contact 202 | Company 190 | Deal 214 | Ticket 228 Task: Contact 204 | Company 192 | Deal 216 | Ticket 230

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesArray of association pairs to create (maximum 100)
toTypeYesObject type of the target records (e.g., "contacts", "companies", "deals")
fromTypeYesObject type of the source records (e.g., "calls", "deals", "contacts")

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Provides max pairs and default type IDs but lacks details on error handling, idempotency, partial failures, or auth requirements. No annotations to supplement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two paragraphs, front-loaded with key info. Could be slightly tighter but overall efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input structure, defaults, and examples but misses return value description and error handling. For a batch tool with no output schema, these omissions are notable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so schema already describes parameters. Description adds default type IDs mapping, which is helpful but not essential. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it batch-creates associations between HubSpot object pairs, distinguishes from individual creates via 'more efficient than individual creates', and provides specific use case examples.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (e.g., after bulk import, linking multiple deals) and notes maximum 100 pairs, but does not explicitly say when not to use (e.g., single associations should use individual create).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_associations_createC

Create or update an association between two HubSpot CRM objects using the v4 API. Use this to link a call/meeting/note/task/email to a contact, company, deal, or ticket, or to link any two objects with a labeled relationship.

Default HUBSPOT_DEFINED typeIds (verify via hubspot_associations_labels_list): Call: Contact 194 | Company 182 | Deal 206 | Ticket 220 Email: Contact 198 | Company 186 | Deal 210 | Ticket 224 Meeting: Contact 200 | Company 188 | Deal 212 | Ticket 226 Note: Contact 202 | Company 190 | Deal 214 | Ticket 228 Task: Contact 204 | Company 192 | Deal 216 | Ticket 230

ParametersJSON Schema
NameRequiredDescriptionDefault
toIdYesHubSpot ID of the target record
fromIdYesHubSpot ID of the source record
toTypeYesObject type of the target record (e.g., "contacts", "companies", "deals", "tickets")
fromTypeYesObject type of the source record (e.g., "contacts", "deals", "calls", "meetings")
associationTypesYesOne or more association type specifiers. Use hubspot_associations_labels_list to discover available types for your portal.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden of behavioral disclosure. It states 'Create or update' suggesting idempotency, but does not confirm if update means overwriting existing associations or adding new ones. It also does not mention permissions (e.g., required scopes), error handling (e.g., what happens on conflict), or rate limiting. These gaps reduce transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose, then provides a helpful reference table for default typeIds. However, the table is somewhat lengthy and could be streamlined or moved to a usage note. The description is concise enough but not optimally structured; it mixes general usage with specific examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 5 required parameters, no output schema, and sibling tools, the description covers key usage examples but lacks return value explanation (e.g., the created association ID or confirmation). It also does not mention that associations can be one-to-many or that the 'associationCategory' field limits the category. For a creation tool, information about the response (e.g., status, association URI) is important for the agent to know what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions for each parameter, so baseline is 3. The description adds limited value beyond schema: it provides a table of default HUBSPOT_DEFINED typeIds for common object pairings, which aids quick use but not essential. No parameters are explained in more depth than the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates or updates an association between two HubSpot CRM objects using the v4 API, and lists example link combinations (call to contact, etc.). It is specific about the resource and action. However, it does not explicitly differentiate from sibling tools like hubspot_associations_batch_create, though the singular 'create' implies single pair. Purpose is clear but could be stronger by contrasting with batch operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives (e.g., batch_create for multiple associations, archive to remove). The description implies direct use for single associations but does not state prerequisites, when not to use (e.g., if object types are invalid), or that associationTypes must be discovered via labels_list. Usage context is implied but not systematically addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_associations_labels_listA

List all available association label types between two HubSpot object types (v4 API). Use this BEFORE creating associations to discover valid associationTypeId values for your portal. Association typeIds can differ between HubSpot portals — always verify in runtime rather than hardcoding.

Example: call this with fromType="calls", toType="contacts" to see all labeled association types available for linking calls to contacts, including their typeIds and categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
toTypeYesObject type of the target (e.g., "contacts", "companies", "deals", "tickets")
fromTypeYesObject type of the source (e.g., "calls", "deals", "contacts", "meetings")

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It correctly indicates a read operation and mentions runtime variability of typeIds, but does not describe the output format, pagination, or any prerequisites beyond parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise paragraphs: one for purpose, one for usage and example. Every sentence adds value with no redundancy or unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two parameters and no output schema, the description covers the key aspects: purpose, usage context, an example, and a runtime warning. It could mention the return structure explicitly, but overall it is complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with adequate parameter descriptions. The description adds value through an example mapping parameters to actual values, but does not provide significant additional semantic detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List'), the resource ('all available association label types'), and the scope ('between two HubSpot object types'), with an example that distinguishes it from sibling tools like hubspot_associations_create or hubspot_associations_list.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this tool 'BEFORE creating associations' and warns against hardcoding typeIds due to portal differences. While it doesn't explicitly list when not to use it, the guidance is strong and contextually relevant.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_associations_listA

List all associated records of a given type for a specific HubSpot object (v4 API). For example, retrieve all contacts associated with a deal, or all deals linked to a call. Returns { results, total, pagination: { nextCursor } | null }. Use pagination.nextCursor as the "after" parameter to fetch subsequent pages.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor from a previous response paging.next.after
limitNoMaximum number of associations to return per page (1-500, default 100)
fromIdYesHubSpot ID of the source record
toTypeYesObject type of associated records to retrieve (e.g., "companies", "tickets", "deals")
fromTypeYesObject type of the source record (e.g., "contacts", "deals", "calls")

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behaviors. It mentions pagination and the return format but lacks details on rate limits, authentication, or error handling. It is adequate but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the purpose and providing a concise return format. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 5 parameters and no output schema, the description covers the essential use case and pagination. It could mention error or empty results, but it's sufficient for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the pagination cursor usage and giving example values for fromType/toType, which goes beyond the schema's generic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists associated records for a HubSpot object, giving specific examples like contacts with a deal. It uses a specific verb 'List' and resource 'associated records', and distinguishes from sibling tools like create or archive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to retrieve associations) and how to paginate. However, it does not explicitly state when not to use it or mention alternative tools, though siblings are listed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_automation_callback_completeA

Complete a single async custom-action callback in a HubSpot Workflow (v4 automation runtime). Called after your external action finishes. Set hs_execution_state to SUCCESS to continue, FAIL_CONTINUE to continue despite failure, or BLOCK to stop enrollment at this step.

ParametersJSON Schema
NameRequiredDescriptionDefault
callbackIdYesThe callback ID from the custom workflow action.
outputFieldsYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavior. It effectively explains the effects of each hs_execution_state value (continue, continue despite failure, stop enrollment). It does not cover authentication, rate limits, or idempotency, but for a simple callback completion this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short, well-front-loaded sentences: purpose, timing, and execution state options. Every sentence earns its place with no redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given two parameters (one nested) and no output schema, the description covers the essential purpose and behavior. It could mention that no output is returned or that the workflow continues based on the state, but it is sufficiently complete for this tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes both parameters. The description adds value by explaining the practical meaning of the hs_execution_state enum values (SUCCESS continues, FAIL_CONTINUE continues despite failure, BLOCK stops enrollment). This goes beyond the schema's brief description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb 'complete' and resource 'async custom-action callback' within HubSpot Workflows. It specifies the version (v4 automation runtime). However, it does not explicitly differentiate this single-callback tool from its batch counterpart among siblings, reducing clarity of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states when to call ('after your external action finishes') and explains the three possible states. However, it provides no guidance on when not to use this tool, no mention of prerequisites (e.g., having a valid callbackId), and no comparison with the sibling batch tool for multiple callbacks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_automation_callback_complete_batchA

Complete multiple async custom-action callbacks in bulk (HubSpot Automation v4). Useful when your external system processed several workflow enrollments concurrently. Each item in callbackInputs must include its own callbackId and hs_execution_state.

ParametersJSON Schema
NameRequiredDescriptionDefault
callbackInputsYesArray of callback completion objects.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description carries full burden. Mentions completion of callbacks but does not disclose side effects, idempotency, error handling, or permissions. Moderate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with main action, no extraneous words. Efficient structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks output schema; description does not specify return value or success/failure behavior. Adequate for a batch completion tool but incomplete regarding results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%; description restates schema constraints (each item needs callbackId and hs_execution_state) without adding new meaning beyond the schema. Baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the verb 'complete', resource 'async custom-action callbacks', and specifies 'in bulk'. Distinguishes from singleton sibling 'hubspot_automation_callback_complete'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use case ('when your external system processed several workflow enrollments concurrently') and notes input structure requirements. Lacks explicit exclusions but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_archiveA

Archive (soft-delete) a HubSpot CRM record. Archived records are not permanently deleted and can be retrieved with archived=true on list/get calls. Applies to all object types. Returns an empty response (HTTP 204) on success. To permanently delete, use the HubSpot UI or the GDPR delete endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHubSpot record ID to archive.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description fully discloses behavioral traits: it's a soft-delete (not permanent), records can be retrieved with archived=true, returns HTTP 204 on success, and provides alternative for permanent deletion. Since no annotations are provided, the description carries the full burden and excels.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: first defines action, second explains behavior and retrieval, third gives response and alternative. Front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter tool with no output schema, the description covers all essential aspects: action, behavior (soft-delete vs permanent), retrieval method, response format, and alternative. Complete for agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds that it applies to 'all object types,' which is already implied by the enum in the schema. No significant additional semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Archive (soft-delete) a HubSpot CRM record', identifying the verb (archive/soft-delete) and resource (CRM record). It distinguishes from siblings like batch_archive by implying single-record operation, and contrasts with permanent deletion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions it applies to all object types and provides an alternative for permanent deletion ('To permanently delete, use the HubSpot UI or the GDPR delete endpoint'). It implicitly guides when to use this tool for reversible soft-delete, but does not explicitly differentiate from batch archive or other sibling tools beyond name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_batch_archiveA

Archive (soft-delete) up to 100 HubSpot CRM records in a single request. Applies to all object types. Archived records are not permanently deleted and can be retrieved with archived=true. Returns an empty response (HTTP 204) on success. LIMIT: Maximum 100 inputs per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesArray of record IDs to archive (1–100).
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries full burden. It discloses soft-delete behavior, retrievability with archived=true, empty response on success (HTTP 204), and the max inputs limit. This is sufficient for safe usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no extra words. Front-loads key information (archive, soft-delete, batch) and packs behavioral notes concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the essential behavioral aspects. Could mention access requirements, but not critical for basic usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description adds minimal value beyond schema. It reiterates the limit and ID requirement, but does not provide additional context or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it archives (soft-deletes) up to 100 HubSpot CRM records in a single request, applies to all object types. This distinguishes it from single-record archive (hubspot_crm_archive) and other batch operations like batch_create or batch_read.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly mentions the batch size limit (1–100) and that it works for all object types. Does not provide when-not-to-use or alternative tools, but the context of sibling tools implies proper usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_batch_createA

Create up to 100 HubSpot CRM records in a single request. Applies to all object types. Each input requires a properties map and may optionally include inline associations. For engagements, each record must include hs_timestamp in its properties. Returns a batch response with created records and any per-record errors. LIMIT: Maximum 100 inputs per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesArray of records to create (1–100 per batch).
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals the 100-record limit, per-record error returns, optional associations, and the hs_timestamp requirement for engagements. However, it does not specify whether the batch operation is fully atomic or handles partial failures, which would be useful for a mutation tool. This gap prevents a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, each earning its place: 1) core purpose and batch size, 2) applicability and input structure, 3) special requirement for engagements, 4) return behavior. No fluff, well-front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (batch creation with optional associations), no output schema, and no annotations, the description covers the key aspects: limit, input format, special requirement, and return type. It could be more explicit about output structure (e.g., whether IDs are returned) but is still quite complete for a batch creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by highlighting the batch limit, the engagement timestamp requirement, and the atomic creation of associations. This additional context justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates up to 100 HubSpot CRM records in a single request, applicable to all object types. It distinguishes from siblings like hubspot_crm_create (single record) and other batch operations (read, update, upsert, archive) by specifying batch creation and the 100-record limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides usage context: it's for creating records in bulk, applies to all object types, and notes a special requirement for engagements (hs_timestamp). While it doesn't explicitly contrast with alternatives, the sibling tools list and the description's focus on batch creation make the usage clear. A score of 4 is appropriate due to lack of explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_batch_readA

Read up to 100 HubSpot CRM records by ID in a single request. Applies to all object types. Specify properties to control which fields are returned. Optionally use idProperty to look up records by a custom unique property value (e.g., your own external system ID) instead of the HubSpot hs_object_id. Returns a batch response with found records and any per-record errors. LIMIT: Maximum 100 inputs per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesRecord IDs to fetch (1–100).
idPropertyNoCustom unique property to use as the lookup key instead of hs_object_id.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.
propertiesNoProperty names to return. Always specify — HubSpot omits non-default properties.
propertiesWithHistoryNoProperty names for which to return full value history.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors: it reads records (implied read-only), handles per-record errors, and supports custom idProperty. It does not mention authentication, rate limits, or side effects, but since no annotations are provided, it carries the full burden and does well for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise at 5 sentences, front-loaded with the main purpose, and each sentence adds value (limit, object types, properties, idProperty, response structure). No redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch read tool without an output schema, the description adequately covers inputs, limits, error handling, and response structure. It explains the core functionality and edge cases (custom idProperty) completely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides clear descriptions for all 5 parameters (100% coverage). The description adds context by explaining how to use idProperty and that properties must be specified to control fields, but does not provide significant new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it reads up to 100 HubSpot CRM records by ID in a single request, applicable to all object types. The verb 'Read' and resource 'HubSpot CRM records' are specific, and the batch nature distinguishes it from sibling tools like hubspot_crm_get (single record) or hubspot_crm_search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on specifying properties and using idProperty for custom lookups, and mentions the 100-record limit. However, it does not explicitly state when to avoid this tool or contrast it with alternatives like search or list for filtering instead of IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_batch_updateA

Update up to 100 existing HubSpot CRM records in a single request. Applies to all object types. Each input must include the record id and the properties to change (partial update — omitted properties are unchanged). Pass "" as a property value to clear it. Returns a batch response with updated records and any per-record errors. LIMIT: Maximum 100 inputs per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesRecords to update (1–100).
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses partial update behavior, property clearing via empty string, return format (batch response with errors), and the 100-input limit. It does not cover authentication or rate limits, but covers essential behavioral traits adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with the main purpose stated first, followed by specific behaviors and limits. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 2 parameters and no output schema, the description covers key aspects: operation type, batch size limit, partial update, property clearing, and return format. It is complete enough for an agent to understand and use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well-documented in schema. The description adds value by explaining partial update, property clearing, and the requirement for hs_timestamp on engagements, which goes beyond the schema's property descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates existing HubSpot CRM records in batch, differentiating from siblings like batch_create and batch_upsert by specifying 'update' and 'partial update'. It also specifies the resource type and includes the batch limit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates usage for batch updates, but does not explicitly mention when not to use it or alternative tools like single update (hubspot_crm_update). However, the batch context is clear, and the description includes the limit of 100 inputs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_batch_upsertA

Upsert up to 100 HubSpot CRM records: creates them if they do not exist, updates them if they do. Each input must include idProperty (the unique property name used for matching, e.g., "email" or a custom external ID property), id (the value of that property), and properties (fields to set). The idProperty must be marked as unique in HubSpot. LIMIT: Maximum 100 inputs per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesRecords to upsert (1–100). Each must have idProperty, id, and properties.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes create/update behavior, input requirements, and idProperty uniqueness constraint. No annotations provided, so description does the heavy lifting; however, lacks details on partial failures, rate limits, or atomicity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and front-loaded. Each sentence provides essential information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers primary aspects: action, required fields, limit, and special notes (unique property, timestamp). Missing error handling or response details, but overall adequate for a batch upsert tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds extra context: idProperty must be unique, properties are string-only, and for engagements hs_timestamp is required. Adds value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Upsert up to 100 HubSpot CRM records' with the create/update logic, specifying the resource, action, and limit. Distinct from siblings like batch_create and batch_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies required inputs (idProperty, id, properties) and the 100-record limit. Notes that idProperty must be unique. Does not explicitly contrast with batch_create or batch_update, but the upselt nature is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_createA

Create a new HubSpot CRM record (deal, line item, product, quote, call, meeting, task, note, or email engagement). Required properties vary by type — for engagements, hs_timestamp (epoch ms string) is mandatory. For deals, dealname is required. For tasks, hs_task_subject is required. Optionally associate the new record to existing objects inline via the associations parameter (avoids a separate association API call). Returns the created record with its HubSpot-assigned id.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.
propertiesYesKey-value map of property names to string values. All HubSpot property values are strings. For engagements, `hs_timestamp` is REQUIRED (epoch ms string or ISO 8601). Custom properties are accepted in addition to standard ones.
associationsNoOptional associations to create atomically with this object. Use this to link a new deal to existing contacts in a single API call.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description must carry full burden. It mentions creation, return of the created record with id, and required properties per type. However, it omits error scenarios, permissions, or side effects like idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, front-loaded with the core action, and efficiently covers required property variations and the associations option without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description adequately covers the tool's purpose, parameter requirements, and return value. It could be improved by mentioning error handling or limitations, but it is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all parameters (100% coverage). The description adds value by highlighting the benefit of the `associations` parameter to avoid extra API calls, though it does not introduce new semantic details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a new HubSpot CRM record and lists all supported object types. It distinguishes itself from sibling CRUD tools (e.g., batch create, update, get) by focusing on single-record creation and inline associations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use the `associations` parameter to avoid separate API calls, but does not explicitly contrast with batch creation or other alternatives. It implies single-record creation but lacks clear 'when not to use' guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_getA

Retrieve a single HubSpot CRM record by its ID. Works with all object types. IMPORTANT: Specify the properties parameter to get non-default property values (e.g., "dealname,amount,closedate"). Returns 404 if the record does not exist or is archived (use archived=true to fetch archived records).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHubSpot record ID (numeric string, e.g., "12345678").
archivedNoWhen true, returns archived (soft-deleted) records instead of active ones. Default: false.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.
propertiesNoComma-separated list of property internal names to include in the response (e.g., "dealname,amount,closedate"). HubSpot returns ONLY default properties unless requested explicitly — always specify the properties you need.
associationsNoComma-separated list of object types to include as associations (e.g., "contacts,companies"). Returns associated record IDs inline.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, description reveals key behaviors: returns 404 if missing or archived, properties parameter required for custom fields, archived parameter toggles record type. Good coverage but does not explicitly state read-only nature.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences plus an emphasized note. Front-loaded with purpose, then key usage tips. No extraneous information. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, all object types, required parameters, important optional parameter, error handling. Lacks response format description and usage of `associations` but overall adequate for a simple get tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. Description adds value by emphasizing `properties` with example and explaining default behavior. Also clarifies `archived` and 404 implications. Does not add much for `associations` but overall enhances understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Explicitly states 'Retrieve a single HubSpot CRM record by its ID' and 'Works with all object types'. Clearly distinguishes from sibling tools like list, search, and batch read by specifying single record retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides important guidance: always specify `properties` for non-default values and use `archived=true` for archived records. Mentions 404 error behavior. Does not explicitly compare to alternatives but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_listA

List HubSpot CRM records of any object type (deals, line_items, products, quotes, calls, meetings, tasks, notes, emails). Returns a paginated collection with shape { results, total, pagination: { nextCursor } | null }. IMPORTANT: HubSpot returns only default properties unless you specify them explicitly via the properties parameter (e.g., "dealname,amount,closedate"). Use pagination.nextCursor from the response as the after parameter to page through large result sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor from `pagination.nextCursor` in the previous response.
limitNoRecords per page (1–100). Default: 10.
archivedNoWhen true, returns archived (soft-deleted) records instead of active ones. Default: false.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.
propertiesNoComma-separated list of property internal names to include in the response (e.g., "dealname,amount,closedate"). HubSpot returns ONLY default properties unless requested explicitly — always specify the properties you need.
associationsNoComma-separated list of object types to include as associations (e.g., "contacts,companies"). Returns associated record IDs inline.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the paginated response shape and the behavior that only default properties are returned unless specified. It does not mention rate limits, authentication needs, or any side effects, but for a read-only list operation, the disclosed info is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences and an important note. Everything is front-loaded with purpose and key behavior. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return shape and pagination mechanism. It covers all key aspects: supported object types, properties default, archived flag. It does not mention error responses or edge cases, but for a list tool, this is sufficient. The complexity (6 params, 1 required) is well-addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining how to use the `properties` parameter (e.g., 'dealname,amount,closedate') and how pagination works with `pagination.nextCursor`. This context helps the agent correctly construct requests beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists HubSpot CRM records for multiple object types, with specific verb 'list' and resource 'CRM records'. It lists all supported object types and mentions pagination shape. However, it does not explicitly differentiate from sibling tools like hubspot_crm_search, which might be used for filtered listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes important usage notes about default properties and pagination, which guide correct invocation. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., search for filtering, get for single record) and does not state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_crm_updateA

Update an existing HubSpot CRM record (partial update — only provided properties are changed). Applies to all object types. Pass only the properties you want to modify; omitted properties are left unchanged. To clear a property, pass an empty string "" as the value. Returns the updated record.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesHubSpot record ID to update.
objectTypeYesCRM object type. Sales objects: deals, line_items, products, quotes. Engagement objects: calls, meetings, tasks, notes, emails.
propertiesYesKey-value map of property names to string values. All HubSpot property values are strings. For engagements, `hs_timestamp` is REQUIRED (epoch ms string or ISO 8601). Custom properties are accepted in addition to standard ones.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behavioral traits: partial update, leaving omitted properties unchanged, clearing with empty string, and returning the updated record. It does not cover error conditions or permissions but is transparent enough for a standard update operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four sentences, front-loaded with the core purpose, and each sentence adds necessary detail without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers core usage, partial update semantics, and return value. However, since there is no output schema, it could be more specific about the response structure, but it is sufficient for an update tool with 3 well-described parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds value beyond the schema by explaining how to clear properties and noting that hs_timestamp is required for engagement objects, which aids correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Update an existing HubSpot CRM record (partial update)' with a specific verb and resource, and distinguishes from sibling tools like hubspot_crm_create or hubspot_crm_get by emphasizing the partial update nature and applicability to all object types.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidelines on how to use the tool (partial update, clearing properties) but does not explicitly state when to use this tool versus alternatives like batch update or upsert, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_deals_mergeA

Merge two HubSpot deal records into one. The secondary deal is absorbed into the primary: all associated contacts, companies, activities, and line items are moved to the primary deal. Properties from the secondary deal fill in any blanks on the primary (primary values take precedence on conflicts). The secondary deal is then archived. This operation is IRREVERSIBLE — confirm the deal IDs before calling. Required scopes: crm.objects.deals.write.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectIdToMergeYesHubSpot ID of the deal to ABSORB. This deal is archived after the merge.
primaryObjectIdYesHubSpot ID of the SURVIVING deal (kept after merge). Its property values take precedence on conflicts.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the behavioral burden. It details the irreversible nature, association movement, property precedence (primary wins), and required OAuth scopes. This exceeds basic disclosure, though rate limits or error states are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is five sentences, front-loaded with the core purpose. Every sentence adds value (behavior, scopes, irreversibility). No redundant content, though minor tightening could improve conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (merge with 2 params, no output schema, no nested objects), the description covers all necessary context: what happens to associations, property conflict resolution, archival, irreversibility, and required scopes. An agent has sufficient information to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The description adds emphasis on 'SURVIVING' and 'ABSORB' roles, reinforcing the schema but providing marginal extra value beyond it. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool merges two deal records, specifying the primary and secondary roles and exactly what happens (associations moved, properties merged, secondary archived). It distinctively identifies this as a merge operation among sibling tools like hubspot_crm_archive or hubspot_crm_update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when merging deals) but does not explicitly state when not to use or compare with alternatives like updating individually. It provides context on irreversibility and required scopes, but lacks explicit exclusions or sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_enrollment_enrollA

Enroll a contact into a HubSpot Workflow (Automation v2). The contact must exist in HubSpot. Use the workflow's numeric ID and the contact's email address.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the contact.
workflowIdYesNumeric ID of the workflow.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the basic behavior (enrollment) and a prerequisite, but does not mention side effects, idempotency, error cases, or return values. It is adequate but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences (26 words), front-loaded with the main action, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mutation tool with fully described parameters, the description covers the primary action, prerequisites, and input hints. It does not describe output, but given no output schema, this is acceptable. The tool fits well among siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description restates the required parameters ('workflow's numeric ID and contact's email') but adds no new constraints or formatting beyond the schema, thus meeting but not exceeding the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Enroll' and the resource 'a contact into a HubSpot Workflow (Automation v2)'. It distinguishes from siblings like hubspot_enrollment_unenroll by specifying the action direction, and includes prerequisites and input hints.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by stating the prerequisite 'The contact must exist in HubSpot'. It does not explicitly mention when not to use or compare to alternatives like hubspot_enrollment_unenroll, but the context is clear enough for a simple action tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_enrollment_get_enrollmentsA

Get all active workflow enrollments for a contact by their HubSpot VID (contact record ID). Returns the list of workflows the contact is currently enrolled in.

ParametersJSON Schema
NameRequiredDescriptionDefault
vidYesHubSpot contact VID (record ID). Must be a numeric string, e.g. "123456".

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full burden. It states the tool returns a list of workflows the contact is currently enrolled in, but does not disclose any behavioral traits such as side effects, rate limits, or permission requirements. For a read operation, this is minimal but acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the action and resource, and contains no redundant information. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple structure (single required parameter, no output schema), the description adequately explains what the tool does and returns. It could mention that results are limited to active enrollments, but it already says 'active'. Minor improvement possible but overall complete for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter (vid) with 100% schema description coverage. The tool description adds 'HubSpot VID (contact record ID)' which matches the schema's description. Since the schema already documents the parameter, the description adds no extra value beyond confirming the context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('active workflow enrollments for a contact by HubSpot VID'), clearly distinguishing it from siblings like hubspot_enrollment_enroll (enroll) and hubspot_workflows_list (list all workflows). It precisely states the action and the scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly indicates when to use the tool (to retrieve enrollments for a specific contact). It does not provide explicit when-not-to-use or alternatives, but the context is clear enough given the sibling tools that perform different enrollment actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_enrollment_unenrollA

Unenroll a contact from a HubSpot Workflow (Automation v2). Stops the contact from progressing through remaining workflow actions.

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address of the contact.
workflowIdYesNumeric ID of the workflow.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It explains the effect ('stops contact from progressing') but does not clarify if the contact is completely removed from the workflow or if the action is reversible. Nonetheless, it gives a clear behavioral summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action. No extraneous information; every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is reasonably complete for a simple tool with two parameters. It could mention that the contact must be currently enrolled, but overall it provides sufficient context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the two parameters. The description adds no additional meaning beyond what is already in the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Unenroll a contact'), the resource ('HubSpot Workflow (Automation v2)'), and the effect ('stops the contact from progressing through remaining workflow actions'). This distinguishes it from sibling tools like hubspot_enrollment_enroll.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives, nor prerequisites like the contact needing to be currently enrolled. The context of sibling tools provides some implicit differentiation, but the description lacks explicit when-to or when-not-to guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_properties_createA

Create a new custom property (field) on a HubSpot CRM object type. Use this to extend deal, contact, company, or other object records with business-specific data fields.

Common type+fieldType combinations: Single-line text: type="string", fieldType="text" Multi-line text: type="string", fieldType="textarea" Number: type="number", fieldType="number" Date: type="date", fieldType="date" Dropdown: type="enumeration", fieldType="select" (requires options) Checkbox list: type="enumeration", fieldType="checkbox" (requires options) Yes/No toggle: type="bool", fieldType="booleancheckbox"

Note: property names must be lowercase with underscores (e.g., "my_custom_field"). The name cannot be changed after creation.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInternal property name (lowercase letters, numbers, underscores only). Used as the key when reading/writing this field. Cannot be changed after creation.
typeYesData type. Common values: "string", "number", "date", "datetime", "enumeration", "bool".
labelYesDisplay label shown in HubSpot UI and reports
hiddenNoWhether to hide this property in the UI
optionsNoRequired when type="enumeration". Array of selectable options, each with a unique value.
fieldTypeYesUI rendering type. Must be compatible with the chosen "type" field. See tool description for common combinations.
formFieldNoWhether this property can be used in HubSpot forms
groupNameYesProperty group this field belongs to (e.g., "dealinformation", "contactinformation")
objectTypeYesCRM object type to add the property to (e.g., "contacts", "deals", "companies")
descriptionNoOptional description explaining the purpose of this property
displayOrderNoPosition of this property in forms and records (lower = earlier)
hasUniqueValueNoWhether values must be unique across all records of this type. Useful for external IDs.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description discloses important behaviors: naming constraints (lowercase underscores) and that name is immutable after creation. It lists common type/fieldType combinations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a main sentence, a helpful table of common combinations, and a key note, all front-loaded with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 12 parameters (6 required) and no output schema, the description covers the creation intent, parameter combinations, and naming rules. However, it could mention return value or error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 12 parameters. The description adds value beyond the schema by explaining common type+fieldType combinations and naming convention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates a new custom property on a HubSpot CRM object type, and distinguishes from siblings like hubspot_properties_get/list by specifying the create action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says 'Use this to extend deal, contact, company, or other object records' which indicates when to use, but doesn't explicitly state when not to use or suggest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_properties_getA

Retrieve the full definition of a specific HubSpot CRM property by its internal name. Returns the property type, field type, group, options (for enumeration fields), and whether it is a HubSpot default or custom property. Useful for inspecting field constraints before creating or updating records.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectTypeYesCRM object type (e.g., "contacts", "deals", "companies")
propertyNameYesInternal name of the property (e.g., "dealname", "amount", "hs_deal_stage_probability")

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the tool's read-only behavior by stating it 'retrieves' data, but lacks explicit mention of error handling (e.g., if the property does not exist) or potential rate limits. Since no annotations are provided, the description carries full burden for behavioral transparency, yet it only minimally covers it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief (two sentences) and front-loaded with the core action and purpose. Every sentence provides essential information without unnecessary words, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately explains what the tool returns given no output schema, covering key details of the property definition. It does not mention edge cases like missing properties or pagination (not relevant), but for a simple retrieval tool, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions for both parameters. The description adds value by explaining that propertyName is the internal name and that the returned object includes type, field type, group, options, and default/custom status, which goes beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly specifies retrieving the full definition of a specific HubSpot CRM property by its internal name, including details like type, field type, group, options, and whether it's a HubSpot default or custom property. It effectively distinguishes this tool from siblings like hubspot_properties_list (which lists all properties) and hubspot_crm_get (which gets a record value).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises that the tool is 'useful for inspecting field constraints before creating or updating records,' providing implicit guidance on when to use it. However, it does not explicitly state when not to use it or name alternative tools for different purposes, leaving room for clearer differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_properties_listA

List all properties (fields) defined for a HubSpot CRM object type. Returns both default HubSpot properties and custom properties created by your team. Use this to discover available property names before reading or writing record data.

Standard object types: "contacts", "companies", "deals", "tickets", "products", "line_items", "quotes", "calls", "meetings", "tasks", "notes", "emails". Custom objects use their numeric object type ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
archivedNoWhether to include archived (deleted) properties. Default false.
objectTypeYesCRM object type whose properties to list. Standard types: "contacts", "companies", "deals", "tickets", "products", "line_items", "quotes", "calls", "meetings", "tasks", "notes", "emails".

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains what is returned (default and custom properties) but omits details about pagination, rate limits, or safety guarantees. A 3 is appropriate as it adds some context beyond a bare listing.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise paragraph with the main purpose upfront. Every sentence adds value: the first states the main function, the second explains usage context, and the third lists types. No redundant text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list operation with two parameters and no output schema, the description adequately covers what the tool does and what it returns. It mentions both default and custom properties, which is sufficient for an agent to understand the output.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema; it reiterates object type options without adding new semantic details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb-resource pair ('List all properties') and specifies the scope ('for a HubSpot CRM object type'). It distinguishes itself from sibling tools like hubspot_properties_create and hubspot_properties_get by focusing on listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the purpose ('discover available property names before reading or writing record data') and lists supported object types. However, it does not provide explicit when-not-to-use guidance or compare to sibling tools like hubspot_crm_list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_quotes_assembleA

Create a HubSpot Quote and associate it to a deal and line items in a single operation. This is a high-level helper that wraps the standard quote create endpoint with inline associations, saving multiple separate API calls. PREREQUISITES: The deal and all line items must already exist. Create line items first with: hubspot_crm_create objectType="line_items". ASSOCIATION TYPE IDs: Uses HUBSPOT_DEFINED typeId 64 (Quote→Deal) and 67 (Quote→LineItem) by default. Override with dealAssociationTypeId / lineItemAssociationTypeId if your portal uses different IDs. Verify IDs with hubspot_associations_labels_list for fromType=quotes. Required scopes: crm.objects.quotes.write.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesQuote title shown to the customer (hs_title). Required.
dealIdYesHubSpot deal ID to associate the quote to. Uses association typeId 64 (HUBSPOT_DEFINED) by default.
localeNoLocale for number/date formatting (hs_locale), e.g., "en-US".
statusNoQuote lifecycle status (hs_status). Default: DRAFT. Use APPROVAL_NOT_NEEDED to make publishable immediately.DRAFT
ownerIdNoHubSpot user ID of the quote owner (hubspot_owner_id).
currencyNoISO 4217 currency code (hs_currency), e.g., "USD" or "EUR".
templateIdNoQuote template ID for PDF layout (hs_template_id).
lineItemIdsYesArray of line item IDs to include in the quote. At least one required. Uses association typeId 67 (HUBSPOT_DEFINED) by default.
quoteNumberNoHuman-readable reference number (hs_quote_number).
senderEmailNoSender email address (hs_sender_email).
expirationDateNoQuote expiry (hs_expiration_date) as epoch ms string or ISO 8601 (e.g., "2026-12-31").
paymentEnabledNoEnable online payment collection on this quote (hs_payment_enabled).
senderLastNameNoSender last name (hs_sender_lastname).
senderFirstNameNoSender first name (hs_sender_firstname).
additionalPropertiesNoAdditional quote properties as key-value pairs. Merged with explicit params; explicit params take precedence.
dealAssociationTypeIdNoOverride for Quote→Deal HUBSPOT_DEFINED association typeId. Default: 64.
lineItemAssociationTypeIdNoOverride for Quote→LineItem HUBSPOT_DEFINED association typeId. Default: 67.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that the tool is a helper that performs a single operation with inline associations, default association type IDs, and overrides. It does not explicitly mention idempotency, error behavior, or return value, but covers essential behavioral aspects well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Approximately 4-5 sentences, front-loaded with main purpose, then prerequisites, then details. No redundant information. Every sentence contributes to clarity and is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (17 parameters, 3 required, nested objects, no output schema), the description covers prerequisites, association details, and scopes. It lacks explicit mention of return values or behavior on failure, which would improve completeness, but overall it is reasonably comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the purpose of additionalProperties and the override parameters for association type IDs, which are not fully detailed in the schema. This enhances understanding beyond the built-in descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Create a HubSpot Quote and associate it to a deal and line items in a single operation.' It specifies the verb (Create) and resource (HubSpot Quote), and distinguishes itself as a high-level helper wrapping the standard endpoint, differentiating from siblings like hubspot_crm_create or hubspot_associations_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists prerequisites: deal and line items must already exist, and suggests using hubspot_crm_create to create line items first. Provides guidance on overriding association type IDs and verifying IDs with hubspot_associations_labels_list. Mentions required scopes, giving clear context for when to use this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_batch_readA

[BETA] Read multiple automation workflows (flows) by their IDs in a single API call. More efficient than multiple individual hubspot_workflows_get calls when fetching several flows at once. Maximum 100 flow IDs per request. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdsYesArray of v4 flow IDs to retrieve. Maximum 100 IDs per request.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description discloses the batch nature, efficiency, and max limit. However, it omits behavioral details like error handling on partial failures or rate limits, leaving some gaps for an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short, front-loaded sentences covering purpose, efficiency, constraints, and prerequisites with zero fluff. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simple input (one array parameter) and no output schema, the description sufficiently covers functionality, constraints, and requirements. Missing return format is minor; the batch read is self-explanatory.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description reinforces the max items count and batch efficiency. While it adds context beyond the schema, the parameter is simple and well-documented in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Read', resource 'multiple automation workflows', and differentiates from individual get calls and list operations, making the purpose highly specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly conveys when to use (efficient batch fetch), maximum IDs, and required OAuth scope. Lacks explicit when-not-to-use conditions, but the alternative is clearly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_createA

[BETA] Create a new automation workflow (flow) in HubSpot Automation v4 API. The "name" and "type" fields are required. All other fields are optional and can be configured after creation using hubspot_workflows_update. Complex fields like enrollmentCriteria use recursive filter branch structures — see the HubSpot Automation v4 BETA documentation for the full schema. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDisplay name for the workflow. Required.
typeYesThe CRM object type this flow operates on. Use CONTACT_FLOW for contact-based workflows (most common), DEAL_FLOW for deal-based, etc.
actionsNoInitial list of automation action nodes for the flow. Each action has a "type" field and type-specific "inputFields". See HubSpot Automation v4 BETA documentation.
flowTypeNoArchitectural type. Defaults to WORKFLOW when omitted.
isEnabledNoWhether to activate the flow immediately after creation. Defaults to false.
objectTypeIdNoHubSpot internal object type ID string (e.g., "0-1" for contacts).
enrollmentCriteriaNoDefines when/how records enter the flow. Uses recursive OR/AND filter branch trees. See the HubSpot Automation v4 BETA documentation for the PublicOrFilterBranch schema.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It notes the BETA status, required OAuth scope, and that complex fields require external documentation. However, it does not describe what the tool returns after creation, whether it is idempotent, or what errors might occur. This is a moderate gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with four sentences. The first sentence states the core purpose, the second clarifies required vs optional fields, the third warns about complex schema, and the fourth notes OAuth scope. No superfluous content, and it is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 7 parameters with 100% schema coverage and no output schema, the description covers creation intent, required fields, optional field deferral, external references for complex schemas, and auth. It lacks explicit mention of return value or error behavior, but overall it is fairly complete for a create tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baselines at 3. The description adds value by emphasizing required fields, providing a practical usage hint for the 'type' enum (e.g., CONTACT_FLOW is most common), and warning about complex recursion in enrollmentCriteria. This extra context raises the score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it creates an automation workflow in HubSpot Automation v4 API, using the verb 'Create' and specifying the resource. It mentions the BETA status and references the update sibling tool for post-creation configuration, but does not explicitly distinguish from other sibling tools like list or get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description identifies when to use this tool (to create a workflow), notes the required fields, and points to hubspot_workflows_update for subsequent configuration. It also mentions the required OAuth scope. However, it does not provide explicit 'when not to use' guidance or compare to other create tools for different objects.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_deleteA

[BETA] WARNING: IRREVERSIBLE. Delete an automation workflow (flow) from HubSpot. The workflow CANNOT be recovered after deletion via the API. Consider disabling the flow (isEnabled: false) instead if you may need it later. Use hubspot_workflows_get to confirm the flow ID before proceeding. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe v4 flow ID of the workflow to permanently delete. WARNING: This action is IRREVERSIBLE and cannot be undone via the API.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Clearly warns that deletion is irreversible and cannot be undone via the API. Mentions OAuth scope requirement. Could add response format or side effects but is sufficient for a delete tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded with BETA and WARNING. Every sentence adds necessary context without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Completely covers what the tool does, its irreversible nature, alternative action, prerequisite step, and authentication requirement. No output schema, but for a delete tool this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. Description adds value by repeating the irreversibility warning and suggesting to confirm the flow ID first, which goes beyond schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it deletes an automation workflow irreversibly. Specifies the resource and action, and is distinct from sibling workflow tools like get, list, create, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to consider disabling instead of deleting if the workflow might be needed later. Recommends using hubspot_workflows_get to confirm the flow ID before proceeding.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_email_campaignsA

[BETA] Get the email marketing campaigns associated with a specific automation workflow (flow) in HubSpot Automation v4 API. Returns campaign data linked to Send Email actions within the flow. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe v4 flow ID whose associated email campaigns to retrieve.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the burden. It declares BETA status and required OAuth scope, and clarifies that the result is 'campaign data linked to Send Email actions.' However, it does not disclose whether it is read-only, pagination details, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states the primary purpose, second adds return details and auth requirement. No redundant words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description adequately covers what it does and what it returns. Missing details like response structure or pagination are minor given simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear property description. The description adds minor context by emphasizing 'v4 flow ID' and the type of data returned, but does not significantly extend the schema's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), the resource ('email marketing campaigns'), and the context ('associated with a specific automation workflow'). It distinguishes from sibling tools like hubspot_workflows_get or hubspot_workflows_list by focusing on email campaigns linked to Send Email actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies the tool is for automation workflows in the v4 API and notes the required OAuth scope, providing clear context. However, it does not explicitly compare to siblings or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_getA

[BETA] Get a single automation workflow (flow) by its ID from HubSpot Automation v4 API. Returns the full flow definition including actions, enrollment criteria, and settings. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe v4 flow ID (string identifier returned by the Automation v4 API)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses BETA status, OAuth scope requirement, and that it returns the full flow definition. As a read operation with no annotations, this is adequate, though rate limits or error handling are not mentioned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Each sentence adds distinct information: action+API in first, return+auth in second. Front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given one required parameter, no output schema, and simple GET behavior, the description covers essential aspects: what it does, how to call it, what it returns, and authorization. No gaps for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description of flowId. The description reinforces the parameter's purpose (by its ID) and source (v4 API), adding value beyond the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it gets a single automation workflow by ID from HubSpot Automation v4 API, specifying the return content and required OAuth scope. Distinguishes from siblings like list and v3_get through API version and singular retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Describes when to use (when you have a specific flow ID) but does not explicitly mention when not to use or provide alternatives. The BETA tag and API version hint at context, but no direct comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_id_mappingsA

[BETA] Map legacy HubSpot Workflows v3 integer IDs to the new Automation v4 flow string IDs. Use this when migrating from the deprecated v3 Workflows API to the v4 Flows API, or when you have stored references to v3 workflow IDs and need the corresponding v4 IDs. Returns a mapping of legacyWorkflowId → v4 flowId. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdsYesArray of legacy v3 workflow integer IDs to map to v4 flow IDs. These are the numeric IDs used in the deprecated Workflows v3 API.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. Mentions returns a mapping of legacyWorkflowId → v4 flowId and requires 'automation' OAuth scope. Does not explicitly state non-destructive nature, but mapping implies read-only. Acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. First sentence states core purpose, second adds usage guidance and mentions return value and scope requirement. Extremely concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple mapping tool with one parameter and no output schema, the description provides return value info and required OAuth scope. Slightly lacking mention of error handling or limits, but sufficient for a mapping utility.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'workflowIds', which is fully described. The description adds context about migration but does not enhance parameter semantics beyond the schema. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool maps legacy v3 integer IDs to v4 string IDs, with specific verb 'map' and resource 'ID mappings'. Differentiates from sibling tools that perform CRUD or other workflow operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when migrating from the deprecated v3 Workflows API to the v4 Flows API, or when you have stored references to v3 workflow IDs'. Provides clear context for when to use, though no explicit comparison to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_listA

[BETA] List automation workflows (flows) from HubSpot Automation v4 API. Returns a paginated list of all flows in the portal with shape { results, total, pagination: { nextCursor } | null }. Use pagination.nextCursor from the response as the "after" parameter to fetch subsequent pages. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor from a previous response (paging.next.after). Omit for the first page.
limitNoMaximum number of flows to return per page (1–100, default 20)

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses Beta state, required OAuth scope, and return shape. No annotations provided, so description carries full burden and does well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with key purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Explains return shape, pagination, OAuth scope, and Beta status. No output schema, but description compensates well.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters (100% coverage). Description adds context on pagination flow, explaining how 'after' is used, going beyond schema defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists automation workflows from HubSpot Automation v4 API, distinguishing it from sibling tools like create, delete, update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides pagination instructions using nextCursor and explains when to use the 'after' parameter. Does not explicitly mention alternatives, but siblings are clearly other operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_performanceA

[BETA] Get performance metrics for a specific automation workflow (flow) from HubSpot Automation v4 API. Returns enrollment counts, action completion rates, and other performance statistics. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
flowIdYesThe v4 flow ID whose performance metrics to retrieve.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavioral traits. It mentions BETA status and OAuth scope but fails to state that the operation is read-only, any rate limits, or potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states the purpose and return value, second states the required scope. No unnecessary words, well front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers essential context: beta status, scope requirement, and key metrics returned. Minor gap: doesn't confirm it's a read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, flowId, is fully described in the schema with coverage at 100%. The description text adds no additional meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves performance metrics for an automation workflow, with specific examples like enrollment counts and action completion rates. This distinguishes it from sibling tools that list or get workflow details.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Specifies the required 'automation' OAuth scope, which is a key prerequisite. However, it does not explicitly describe when to use this tool over alternatives or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_updateA

[BETA] Fully replace an existing automation workflow (flow) in HubSpot Automation v4 API. This is a PUT operation — it replaces the entire flow definition. Fields not included in the request body will be reset to their defaults. To fetch the current state before updating, use hubspot_workflows_get first. Requires the "automation" OAuth scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name for the workflow.
typeNoCRM object type this flow operates on (CONTACT_FLOW, DEAL_FLOW, etc.).
flowIdYesThe v4 flow ID of the flow to update.
actionsNoComplete action list for the flow.
flowTypeNoArchitectural type (WORKFLOW, ACTION_SET, UNKNOWN).
isEnabledNoWhether the flow is active.
objectTypeIdNoHubSpot internal object type ID string.
enrollmentCriteriaNoEnrollment trigger criteria using recursive OR/AND filter branch trees. See HubSpot Automation v4 BETA documentation.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that this is a PUT operation that replaces the entire workflow, resets omitted fields to defaults, and requires the 'automation' OAuth scope. This sufficiently communicates the tool's mutation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, front-loading the core purpose ('Fully replace'), then providing behavioral and prerequisite guidance. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the essential operation, prerequisites, and behavioral traits. However, it does not describe the return value or response format, which is notable given the lack of an output schema. Still, the description is adequate for a mutation tool with clear documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds critical meaning: 'Fields not included in the request body will be reset to their defaults.' This clarifies parameter behavior beyond the schema, explaining the effect of omission. The suggestion to use get first also adds value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Fully replace an existing automation workflow' via a PUT operation, clearly specifying the verb and resource. It differentiates from sibling tools like hubspot_workflows_get by advising to fetch current state before updating.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to use hubspot_workflows_get first to fetch current state, providing clear context. It explains the full replacement behavior but does not explicitly state when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_v3_getA

[LEGACY] Get a single Workflow by ID using the HubSpot Automation v3 API. This is the legacy API — prefer Automation v4 flows for new integrations.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowIdYesNumeric ID of the workflow.

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, but the description only notes it's a legacy GET. It does not disclose authentication needs, error conditions, or response format. For a simple read tool, more context is expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: one for purpose, one for usage guidance. No fluff, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter GET with no output schema, the description adequately covers purpose and usage. Missing a brief note on return value but still complete enough for selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single well-described integer parameter. Description adds legacy context but no additional parameter meaning beyond schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get a single Workflow by ID using the HubSpot Automation v3 API'. Verb and resource are specific, and the legacy API note distinguishes it from v4 versions and sibling tools like hubspot_workflows_get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises against using for new integrations ('prefer Automation v4 flows for new integrations'), providing clear when-to-use context and an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hubspot_workflows_v3_listA

[LEGACY] List all Workflows using the HubSpot Automation v3 API. This is the legacy API — prefer Automation v4 flows for new integrations. Returns a flat list of workflow definitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of results to return.
offsetNoPagination offset.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the full behavioral burden. It only states it returns a flat list of workflow definitions, but does not disclose that it's read-only, safe to call, or details about pagination, authentication needs, or any side effects. The lack of behavioral context is a significant gap for a tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences that efficiently convey the tool's purpose, legacy status, and return format. Every sentence adds value without any fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with two parameters and no output schema, the description provides the basic purpose and return format ('flat list of workflow definitions'). However, it omits details about pagination behavior, ordering, and what the definitions contain. The information is adequate but not fully complete for an agent to understand all aspects of the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (limit and offset) with descriptions. The tool description does not add any additional meaning or context beyond what the schema provides, meeting the baseline expectation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it lists all workflows using the HubSpot Automation v3 API, with a specific verb ('List') and resource ('Workflows'). The '[LEGACY]' prefix distinguishes it from potential v4 alternatives, and it explicitly notes it's the legacy API, helping the agent differentiate it from sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to prefer Automation v4 flows for new integrations, providing explicit when-to-use and when-not-to-use guidance. While it doesn't name the exact alternative tool, it gives clear context to avoid using this v3 API for new work.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 37 tool updatesv0.1.0
    • First observedhubspot_associations_archive
    • First observedhubspot_associations_batch_create
    • First observedhubspot_associations_create
    • First observedhubspot_associations_labels_list
    • First observedhubspot_associations_list
    • First observedhubspot_automation_callback_complete
    • First observedhubspot_automation_callback_complete_batch
    • First observedhubspot_crm_archive
    • First observedhubspot_crm_batch_archive
    • First observedhubspot_crm_batch_create
    • First observedhubspot_crm_batch_read
    • First observedhubspot_crm_batch_update
    • First observedhubspot_crm_batch_upsert
    • First observedhubspot_crm_create
    • First observedhubspot_crm_get
    • First observedhubspot_crm_list
    • First observedhubspot_crm_search
    • First observedhubspot_crm_update
    • First observedhubspot_deals_merge
    • First observedhubspot_enrollment_enroll
    • First observedhubspot_enrollment_get_enrollments
    • First observedhubspot_enrollment_unenroll
    • First observedhubspot_properties_create
    • First observedhubspot_properties_get
    • First observedhubspot_properties_list
    • First observedhubspot_quotes_assemble
    • First observedhubspot_workflows_batch_read
    • First observedhubspot_workflows_create
    • First observedhubspot_workflows_delete
    • First observedhubspot_workflows_email_campaigns
    • First observedhubspot_workflows_get
    • First observedhubspot_workflows_id_mappings
    • First observedhubspot_workflows_list
    • First observedhubspot_workflows_performance
    • First observedhubspot_workflows_update
    • First observedhubspot_workflows_v3_get
    • First observedhubspot_workflows_v3_list

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct operation within a well-defined module (associations, CRM objects, properties, workflows, enrollments, quotes, automation callbacks). Overlaps are only between individual and batch variants, which are clearly differentiated by name and description.

Naming Consistency5/5

All tools follow the consistent pattern 'hubspot_<module>_<action>', with actions using clear verbs (create, get, list, update, delete, archive, etc.). Batch variants and legacy versions are indicated by predictable prefixes ('batch_', 'v3_').

Tool Count2/5

With 37 tools, the server exceeds the recommended range of 3-15 for a well-scoped set. While the domain (HubSpot CRM + Automation) is broad and each tool has a clear purpose, the sheer number makes it harder for an agent to navigate without advanced context.

Completeness5/5

The tool surface provides comprehensive coverage for CRM object CRUD (including batch operations and search), associations (with label discovery), property management, workflow management (v3 and v4), enrollment lifecycle, and automation callback handling. No obvious gaps for typical HubSpot automation tasks.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    MCP server for HubSpot CRM — 33 tools covering contacts, companies, deals, pipelines, lists, marketing emails, forms, workflows, and properties.
    30
    14
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for the HubSpot CRM API with tools for managing contacts, companies, deals, tickets, and CRM workflows. Generated with MCPForge. Sensitive operations can be protected with permissions, audit logs, and approval workflows.
    20
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides AI assistants with full access to HubSpot CRM. Manage contacts, companies, deals, pipelines, and associations directly from Claude, Cursor, or any MCP-compatible client.
    15
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nubiia-dev/mcp-hubspot'

If you have feedback or need assistance with the MCP directory API, please join our Discord server