Skip to main content
Glama

HubSpot MCP Server

MCP Server for the HubSpot API, enabling Claude to interact with HubSpot CRM for sales analysis and insights.

Disclaimer

This open-source project is not affiliated with or endorsed by HubSpot. It is an independent implementation that interacts with HubSpot's API.

Tools

Core CRM Tools

  1. hubspot_search_contacts

    • Search for contacts in HubSpot using a query string

    • Required inputs:

      • query (string): Search query string (email, name, etc.)

    • Optional inputs:

      • count (number, default: 10): Maximum number of contacts to return

      • propertyList (array): List of properties to include in results

    • Returns: List of matching contacts with their properties

  2. hubspot_get_contact

    • Get a specific contact by ID

    • Required inputs:

      • contactId (string): The ID of the contact to retrieve

    • Optional inputs:

      • properties (array): List of properties to include in results

    • Returns: Contact details with specified properties

  3. hubspot_create_contact

    • Create a new contact in HubSpot

    • Required inputs:

      • properties (object): Contact properties with at least email field

    • Returns: Created contact details

  4. hubspot_update_contact

    • Update an existing contact in HubSpot

    • Required inputs:

      • contactId (string): The ID of the contact to update

      • properties (object): Contact properties to update

    • Returns: Updated contact confirmation

  5. hubspot_list_deals

    • List deals in HubSpot with pagination

    • Optional inputs:

      • limit (number, default: 10, max: 100): Maximum number of deals to return

      • after (string): Pagination cursor for next page

      • properties (array): List of properties to include in results

    • Returns: List of deals with their details

  6. hubspot_get_deal

    • Get a specific deal by ID

    • Required inputs:

      • dealId (string): The ID of the deal to retrieve

    • Optional inputs:

      • properties (array): List of properties to include in results

    • Returns: Deal details with specified properties

  7. hubspot_create_deal

    • Create a new deal in HubSpot

    • Required inputs:

      • properties (object): Deal properties with at least dealname field

    • Returns: Created deal details

  8. hubspot_update_deal

    • Update an existing deal in HubSpot

    • Required inputs:

      • dealId (string): The ID of the deal to update

      • properties (object): Deal properties to update

    • Returns: Updated deal confirmation

  9. hubspot_list_companies

    • List companies in HubSpot with pagination

    • Optional inputs:

      • limit (number, default: 10, max: 100): Maximum number of companies to return

      • after (string): Pagination cursor for next page

      • properties (array): List of properties to include in results

    • Returns: List of companies with their details

  10. hubspot_get_company

    • Get a specific company by ID

    • Required inputs:

      • companyId (string): The ID of the company to retrieve

    • Optional inputs:

      • properties (array): List of properties to include in results

    • Returns: Company details with specified properties

Sales Analytics Tools

  1. hubspot_get_sales_analytics

    • Get aggregated sales analytics data for specific time periods

    • Required inputs:

      • period (string): Time period to group analytics data by (daily, weekly, monthly, quarterly, yearly)

      • startDate (string): Start date for analysis in ISO format (YYYY-MM-DD)

    • Optional inputs:

      • endDate (string): End date for analysis in ISO format

      • pipeline (string): Pipeline ID to filter by

      • dealStage (string): Deal stage ID to filter by

      • dealOwner (string): Deal owner ID to filter by

    • Returns: Aggregated sales metrics grouped by time period

  2. hubspot_get_deal_history

    • Get the complete history of changes to a deal

    • Required inputs:

      • dealId (string): The ID of the deal to get history for

    • Returns: History of deal changes with timestamps and modified properties

  3. hubspot_get_deal_notes

    • Get notes associated with a specific deal

    • Required inputs:

      • dealId (string): The ID of the deal to get notes for

    • Optional inputs:

      • limit (number, default: 20): Maximum number of notes to return

      • after (string): Pagination cursor for next page of results

    • Returns: List of notes with their content and creation timestamps

  4. hubspot_get_engagements_by_deal

    • Get all engagement activities associated with a deal

    • Required inputs:

      • dealId (string): The ID of the deal to get engagements for

    • Optional inputs:

      • types (array): Types of engagements to include (CALL, EMAIL, MEETING, TASK, NOTE)

      • limit (number, default: 20): Maximum number of engagements to return

      • after (string): Pagination cursor for next page of results

    • Returns: List of engagements with their details and type information

  5. hubspot_get_sales_performance

    • Get performance metrics for sales reps over a specific time period

    • Required inputs:

      • period (string): Time period to group performance data by (daily, weekly, monthly, quarterly, yearly)

      • startDate (string): Start date for analysis in ISO format (YYYY-MM-DD)

    • Optional inputs:

      • endDate (string): End date for analysis in ISO format

      • ownerIds (array): List of owner IDs to include in the analysis

      • pipeline (string): Pipeline ID to filter by

    • Returns: Performance metrics for each sales rep including deal counts, revenue, and win rates

  6. hubspot_get_pipeline_analytics

    • Get analytics for a specific sales pipeline including conversion rates between stages

    • Required inputs:

      • pipelineId (string): The ID of the pipeline to analyze

      • period (string): Time period to group analytics data by (daily, weekly, monthly, quarterly, yearly)

      • startDate (string): Start date for analysis in ISO format (YYYY-MM-DD)

    • Optional inputs:

      • endDate (string): End date for analysis in ISO format

    • Returns: Pipeline stage metrics including deal counts, values, conversion rates, and time in stage

  7. hubspot_get_forecast_analytics

    • Get forecasted sales data based on current pipeline and historical performance

    • Required inputs:

      • period (string): Time period to group forecast data by (monthly, quarterly, yearly)

    • Optional inputs:

      • numberOfPeriods (number, default: 3): Number of future periods to forecast

      • pipeline (string): Pipeline ID to filter by

    • Returns: Forecasted sales metrics for future periods based on historical data and current pipeline

Related MCP server: HubSpot MCP Server

Setup

  1. Create a HubSpot Private App:

    • Go to your HubSpot account

    • Navigate to Settings → Account Setup → Integrations → Private Apps

    • Click "Create private app"

    • Name your app and set appropriate scopes (contacts, deals, and companies)

    • Create the app and copy your private app token

  2. Required Scopes:

    • crm.objects.contacts.read

    • crm.objects.contacts.write

    • crm.objects.deals.read

    • crm.objects.deals.write

    • crm.objects.companies.read

    • crm.objects.companies.write

    • crm.objects.owners.read

    • crm.objects.quotes.read

    • crm.objects.line_items.read

    • crm.objects.custom.read

    • crm.schemas.deals.read

    • crm.schemas.contacts.read

    • crm.schemas.companies.read

    • crm.schemas.custom.read

Usage with Claude Desktop

Add the following to your claude_desktop_config.json:

npx

{
  "mcpServers": {
    "hubspot": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-hubspot"],
      "env": {
        "HUBSPOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

docker

{
  "mcpServers": {
    "hubspot": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "HUBSPOT_API_KEY", "mcp/hubspot"],
      "env": {
        "HUBSPOT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Troubleshooting

If you encounter errors, verify that:

  1. All required scopes are added to your HubSpot private app

  2. The API key is correctly copied to your configuration

  3. Your HubSpot plan includes access to the APIs you're trying to use

Build

Docker build:

docker build -t mcp/hubspot -f Dockerfile .

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

Available Tools

17 tools
hubspot_create_contactC

Create a new contact in HubSpot

ParametersJSON Schema
NameRequiredDescriptionDefault
propertiesYesContact properties

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Create a new contact' implies a write operation but doesn't specify permissions required, whether duplicates are handled, what happens on failure, or what the response contains. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 maximally concise - a single sentence that states the core purpose without any wasted words. It's front-loaded with the essential information and contains no unnecessary elaboration or redundant phrasing.

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

Completeness2/5

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

For a creation/mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address what happens after creation (success/failure responses), how to handle duplicate emails, what permissions are needed, or what distinguishes this from update operations. The combination of mutation behavior and missing structured documentation requires more descriptive 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?

The description adds no parameter information beyond what's already in the schema, which has 100% coverage. The schema fully documents the single 'properties' parameter with its nested structure and required 'email' field. The baseline score of 3 reflects adequate parameter documentation coming entirely from the schema, with no additional value from the 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 states the action ('Create') and resource ('new contact in HubSpot'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'hubspot_update_contact' beyond the basic verb difference, nor does it specify what distinguishes it from other creation tools like 'hubspot_create_deal'.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'hubspot_update_contact' for existing contacts, or how it relates to sibling tools like 'hubspot_search_contacts' or 'hubspot_get_contact'. There's no context about prerequisites, constraints, or typical use cases.

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

hubspot_create_dealC

Create a new deal in HubSpot

ParametersJSON Schema
NameRequiredDescriptionDefault
propertiesYesDeal properties

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create' implying a write operation, but fails to mention permissions required, whether the operation is idempotent, error handling, or response format. This leaves significant gaps for a mutation 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 a single, efficient sentence that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is inadequate. It lacks information on behavioral traits, error handling, and what the tool returns, failing to compensate for the missing structured data. This leaves the agent with insufficient context for reliable use.

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 fully documents the single parameter (an object with properties like amount, dealname, etc.). The description adds no additional parameter details beyond what the schema provides, resulting in the baseline score for high schema coverage.

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 action ('Create') and resource ('new deal in HubSpot'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like hubspot_update_deal or hubspot_list_deals beyond the basic verb, missing explicit comparison that would warrant a perfect score.

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 guidance is provided on when to use this tool versus alternatives such as hubspot_update_deal or hubspot_list_deals. The description lacks context about prerequisites, timing, or exclusions, offering only a basic statement of function without usage direction.

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

hubspot_get_companyC

Get a specific company by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
companyIdYesThe ID of the company to retrieve
propertiesNoList of properties to include in the results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action. It doesn't mention whether this is a read-only operation, authentication requirements, rate limits, error conditions, or what format the returned company data takes, which are critical for safe invocation.

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, efficient sentence that gets straight to the point with zero wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what data is returned, error handling, or behavioral constraints. Given the complexity of retrieving company data with optional properties, more context is needed for complete understanding.

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 fully documents both parameters (companyId and properties). The description doesn't add any meaning beyond what's in the schema, such as explaining property selection strategies or ID format requirements, meeting the baseline for high schema coverage.

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 action ('Get') and resource ('a specific company by ID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'hubspot_list_companies' or 'hubspot_get_contact', which would require explicit comparison to earn a 5.

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?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose this over 'hubspot_list_companies' for bulk retrieval or other get tools for different resources, leaving the agent without context for tool selection.

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

hubspot_get_contactC

Get a specific contact by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesThe ID of the contact to retrieve
propertiesNoList of properties to include in the results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the basic operation without mentioning authentication requirements, rate limits, error conditions, or what happens if the contact doesn't exist. For a read operation with zero annotation coverage, this is inadequate.

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, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for a simple retrieval tool.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description is insufficient. It doesn't explain what data is returned, error handling, or behavioral constraints. Given the complexity of interacting with a CRM system and the lack of structured metadata, more context is needed.

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 thoroughly. The description doesn't add any additional meaning about the parameters beyond what's in the schema (e.g., format of contactId, examples of properties). This meets the baseline for high schema coverage.

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 verb ('Get') and resource ('a specific contact by ID'), making the purpose immediately understandable. It distinguishes from list/search operations but doesn't explicitly differentiate from other get operations like hubspot_get_company or hubspot_get_deal, which is why it doesn't reach a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives like hubspot_search_contacts or hubspot_list_companies. It doesn't mention prerequisites (e.g., needing a contact ID) or compare it to sibling tools, 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_get_dealC

Get a specific deal by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
dealIdYesThe ID of the deal to retrieve
propertiesNoList of properties to include in the results

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 the full burden of behavioral disclosure. It states the tool retrieves a deal but doesn't mention whether it's a read-only operation, what happens if the deal ID is invalid (e.g., error handling), or any rate limits or authentication requirements. This leaves significant gaps in understanding the tool's 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 a single, efficient sentence that directly states the tool's purpose without any unnecessary words. It's front-loaded and wastes no space, making it easy to understand at a glance.

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

Completeness2/5

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

Given the tool's complexity (a read operation with 2 parameters) and lack of annotations and output schema, the description is insufficient. It doesn't explain what the tool returns (e.g., deal details, error responses) or provide behavioral context like error handling or usage constraints, leaving the agent with incomplete information.

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 ('dealId' and 'properties') with descriptions. The description adds no additional meaning beyond what the schema provides, such as explaining the format of 'dealId' or how 'properties' affects the output. Baseline 3 is appropriate when the schema does the heavy lifting.

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 action ('Get') and resource ('a specific deal by ID'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'hubspot_list_deals' or 'hubspot_get_deal_history', which would require mentioning this is for retrieving a single deal's details rather than listing multiple deals or accessing related data.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention that this is for retrieving a single deal by ID, as opposed to 'hubspot_list_deals' for multiple deals or 'hubspot_get_deal_history' for historical data, nor does it specify prerequisites like needing a valid deal ID.

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

hubspot_get_deal_historyC

Get the complete history of changes to a deal

ParametersJSON Schema
NameRequiredDescriptionDefault
dealIdYesThe ID of the deal to get history for

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 the full burden of behavioral disclosure. It states the action ('Get') but does not describe traits like whether it's read-only, requires authentication, has rate limits, returns paginated results, or what the output format is. For a tool with no annotations, this is a significant gap in 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?

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and concise, making it easy to understand quickly with zero waste.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits, output format, and usage context relative to siblings. For a tool that retrieves historical data, more information on what 'complete history' entails and how to interpret results would be beneficial.

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 schema description coverage is 100%, with the single parameter 'dealId' fully described in the schema. The description does not add any meaning beyond what the schema provides, such as explaining the format of 'dealId' or how history is structured. Baseline 3 is appropriate when the schema handles parameter documentation adequately.

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 verb ('Get') and resource ('complete history of changes to a deal'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'hubspot_get_deal' or 'hubspot_get_deal_notes', which might also retrieve deal-related information, so it lacks sibling differentiation.

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?

The description provides no guidance on when to use this tool versus alternatives, such as 'hubspot_get_deal' for current state or 'hubspot_get_deal_notes' for notes. It does not mention prerequisites, exclusions, or specific contexts, leaving usage unclear relative to siblings.

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

hubspot_get_deal_notesC

Get notes associated with a specific deal

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor for next page of results
dealIdYesThe ID of the deal to get notes for
limitNoMaximum number of notes to return (default 20)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Get notes' which implies a read-only operation, but doesn't mention any behavioral traits like pagination (implied by the 'after' parameter in schema), rate limits, authentication needs, or what happens if the deal ID is invalid. For a tool with 3 parameters and no annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized for a simple retrieval tool and front-loads the core functionality. Every word earns its place, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is incomplete. It doesn't explain what the tool returns (e.g., note objects with fields like content, author, timestamp), how pagination works with the 'after' parameter, or error conditions. For a data retrieval tool without output schema, more context about return values would be helpful.

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 description adds no parameter semantics beyond what's already in the schema, which has 100% coverage with clear descriptions for all 3 parameters (dealId, limit, after). The baseline is 3 since the schema does the heavy lifting, but the description doesn't compensate with additional context like format examples or usage tips for the parameters.

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 verb 'Get' and the resource 'notes associated with a specific deal', making the purpose immediately understandable. It distinguishes this tool from siblings like hubspot_get_deal (which gets deal details) and hubspot_get_deal_history (which gets deal history). However, it doesn't specify the scope of notes (e.g., all notes vs recent notes), which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to use hubspot_get_engagements_by_deal (which might include notes as part of engagements) or hubspot_get_deal_history (which might overlap with note history). There's no context about prerequisites, such as needing an existing deal ID, or limitations like pagination requirements.

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

hubspot_get_engagements_by_dealB

Get all engagement activities (calls, emails, meetings, etc.) associated with a deal

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor for next page of results
dealIdYesThe ID of the deal to get engagements for
limitNoMaximum number of engagements to return (default 20)
typesNoTypes of engagements to include

TDQS

B3.3/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. It mentions 'Get all engagement activities' but doesn't disclose behavioral traits like pagination behavior (implied by 'after' param), rate limits, authentication needs, or what 'all' means in practice (e.g., completeness). This leaves gaps for a tool with 4 parameters and no output schema.

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, efficient sentence that front-loads the core purpose with zero waste. It uses parentheses for examples without cluttering, making it appropriately sized and well-structured for quick understanding.

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 4 parameters, no annotations, and no output schema, the description is adequate but has clear gaps. It covers the basic purpose but lacks details on behavioral aspects like pagination or return format, making it minimally viable but incomplete for full agent guidance.

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 fully documents parameters like dealId, after, limit, and types. The description adds minimal value beyond this, mentioning 'associated with a deal' which aligns with dealId but doesn't provide additional syntax or format details. Baseline 3 is appropriate as the schema does the heavy lifting.

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 verb 'Get' and resource 'engagement activities associated with a deal', specifying the scope with examples like calls, emails, meetings, etc. It distinguishes from siblings like hubspot_get_deal_history or hubspot_get_deal_notes by focusing on engagements rather than deal changes or notes specifically, though it doesn't explicitly name alternatives.

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 usage when needing engagements for a deal, but doesn't explicitly state when to use this vs. alternatives like hubspot_get_deal_history or hubspot_get_deal_notes. It provides context (deal-based) but lacks explicit exclusions or named alternatives, leaving some ambiguity.

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

hubspot_get_forecast_analyticsC

Get forecasted sales data based on current pipeline and historical performance

ParametersJSON Schema
NameRequiredDescriptionDefault
numberOfPeriodsNoNumber of future periods to forecast (default 3)
periodYesTime period to group forecast data by
pipelineNoPipeline ID to filter by

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool 'Get forecasted sales data,' implying a read-only operation, but doesn't specify if it requires authentication, rate limits, or how the forecast is calculated (e.g., based on 'current pipeline and historical performance'). This leaves gaps in understanding the tool's behavior and constraints.

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 a single, efficient sentence that front-loads the core purpose ('Get forecasted sales data') and adds a clarifying basis. There's no wasted text, making it easy to parse, though it could be slightly more structured by explicitly separating usage context.

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's moderate complexity (3 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the basic purpose but lacks usage guidelines, detailed behavioral context, and output information. With no output schema, it should ideally hint at return values, but it doesn't, leaving gaps for an agent to infer behavior.

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 has 100% description coverage, providing details for all parameters (numberOfPeriods, period, pipeline). The description adds minimal value beyond the schema by hinting at the forecast basis ('current pipeline and historical performance'), but it doesn't explain parameter interactions or provide additional context like default behaviors not in the schema. This meets the baseline for high schema coverage.

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's purpose with a specific verb ('Get') and resource ('forecasted sales data'), and it distinguishes the type of analytics from siblings like 'hubspot_get_pipeline_analytics' or 'hubspot_get_sales_analytics' by focusing on forecasting. However, it doesn't explicitly differentiate from all siblings, such as 'hubspot_get_sales_performance', which might also involve analytics, keeping it from a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing pipeline data, or compare it to siblings like 'hubspot_get_pipeline_analytics' for current pipeline data versus forecasted data. This lack of context makes it harder for an agent to select the right tool.

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

hubspot_get_pipeline_analyticsB

Get analytics for a specific sales pipeline including conversion rates between stages

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date for analysis in ISO format (YYYY-MM-DD)
periodYesTime period to group analytics data by
pipelineIdYesThe ID of the pipeline to analyze
startDateYesStart date for analysis in ISO format (YYYY-MM-DD)

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'conversion rates between stages' but lacks details on permissions needed, rate limits, data freshness, or response format. For an analytics tool with zero annotation coverage, this leaves significant gaps in understanding its operational 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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every element ('Get analytics', 'specific sales pipeline', 'conversion rates between stages') contributes directly to understanding the tool's function.

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 4 parameters with full schema coverage but no annotations and no output schema, the description is adequate for basic understanding but incomplete. It covers what the tool does but lacks behavioral context and output details, making it minimally viable for an analytics tool in this environment.

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%, providing clear documentation for all parameters. The description adds minimal value beyond the schema by implying analytics include conversion rates, but doesn't elaborate on parameter interactions or semantics. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't significantly enhance parameter understanding.

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 verb 'Get' and resource 'analytics for a specific sales pipeline', specifying conversion rates between stages. It distinguishes from general analytics tools like hubspot_get_sales_analytics by focusing on pipeline-specific metrics, though it doesn't explicitly differentiate from hubspot_get_forecast_analytics which might be a closer sibling.

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 guidance is provided on when to use this tool versus alternatives like hubspot_get_sales_analytics or hubspot_get_forecast_analytics. The description implies usage for pipeline analytics but offers no context on prerequisites, exclusions, or comparative scenarios with sibling tools.

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

hubspot_get_sales_analyticsC

Get aggregated sales analytics data for specific time periods

ParametersJSON Schema
NameRequiredDescriptionDefault
dealOwnerNoDeal owner ID to filter by
dealStageNoDeal stage ID to filter by
endDateNoEnd date for analysis in ISO format (YYYY-MM-DD)
periodYesTime period to group analytics data by
pipelineNoPipeline ID to filter by
startDateYesStart date for analysis in ISO format (YYYY-MM-DD)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Get aggregated sales analytics data' which implies a read-only operation, but doesn't specify authentication needs, rate limits, data freshness, or what 'aggregated' entails (e.g., summary metrics vs. raw data). This is a significant gap for a tool with multiple parameters and no output schema.

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, efficient sentence that front-loads the core purpose without unnecessary words. It directly communicates the tool's function and scope, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, no output schema, and no annotations), the description is inadequate. It doesn't explain what 'aggregated sales analytics data' includes, how results are structured, or behavioral aspects like error handling. For a data retrieval tool with filtering options, more context is needed to guide effective use.

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 description adds minimal value beyond the input schema, which has 100% coverage. It mentions 'specific time periods' which aligns with the period, startDate, and endDate parameters, but doesn't explain the relationship between these or provide additional context like default behaviors or constraints. With high schema coverage, the baseline is 3.

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 action ('Get aggregated sales analytics data') and resource ('sales analytics data'), with specificity about time periods. It distinguishes from siblings like hubspot_get_forecast_analytics or hubspot_get_pipeline_analytics by focusing on general sales analytics rather than specific forecast or pipeline metrics, though it doesn't explicitly name these distinctions.

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?

The description provides no guidance on when to use this tool versus alternatives like hubspot_get_forecast_analytics or hubspot_get_sales_performance. It mentions 'specific time periods' but doesn't clarify use cases, prerequisites, or exclusions, leaving the agent to infer from the tool name and parameters alone.

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

hubspot_get_sales_performanceC

Get performance metrics for sales reps over a specific time period

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date for analysis in ISO format (YYYY-MM-DD)
ownerIdsNoList of owner IDs to include in the analysis
periodYesTime period to group performance data by
pipelineNoPipeline ID to filter by
startDateYesStart date for analysis in ISO format (YYYY-MM-DD)

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 the full burden of behavioral disclosure. While 'Get' implies a read operation, the description doesn't address important behavioral aspects like authentication requirements, rate limits, pagination, error conditions, or what format the performance metrics are returned in. For a tool with 5 parameters and no output schema, this leaves significant gaps in understanding how the tool behaves.

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, efficient sentence that communicates the core purpose without any wasted words. It's appropriately sized for the tool's complexity and gets straight to the point. Every word earns its place in conveying the essential information.

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

Completeness2/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is insufficiently complete. It doesn't explain what 'performance metrics' actually includes, how results are structured, or provide any context about the analytics domain. For a sales performance tool with multiple parameters and no structured output documentation, more contextual information would be helpful.

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 all parameters thoroughly. The description mentions 'specific time period' which aligns with the startDate and endDate parameters, but adds no additional semantic context beyond what's already in the schema. This meets the baseline expectation when schema coverage is complete.

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 action ('Get performance metrics') and resource ('for sales reps'), making the purpose immediately understandable. It specifies the scope ('over a specific time period') which helps distinguish it from other analytics tools. However, it doesn't explicitly differentiate from sibling tools like hubspot_get_sales_analytics or hubspot_get_forecast_analytics, which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. With multiple analytics-related sibling tools (hubspot_get_sales_analytics, hubspot_get_forecast_analytics, hubspot_get_pipeline_analytics), there's no indication of what makes this tool distinct or when it should be preferred. The description only states what it does, not when 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_list_companiesC

List companies in HubSpot with pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor for next page of results
limitNoMaximum number of companies to return (default 10, max 100)
propertiesNoList of properties to include in the results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions pagination (a key behavioral trait) which is helpful, but doesn't address other critical aspects like whether this requires authentication, rate limits, error handling, or what the output format looks like. For a list operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 (7 words) and front-loaded with the core purpose. Every word earns its place: 'List companies in HubSpot' establishes the action and resource, 'with pagination' adds a crucial behavioral detail. There's zero waste or redundancy in this description.

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

Completeness2/5

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

For a list operation with 3 parameters, no annotations, and no output schema, the description is incomplete. While it efficiently states the core purpose and mentions pagination, it doesn't address authentication requirements, rate limits, error conditions, or what the response structure looks like. Given the complexity of interacting with an external API like HubSpot, more contextual information would be helpful.

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 fully documents all three parameters. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters, provide examples of property values, or clarify how pagination works with the limit parameter. Baseline 3 is appropriate when the schema does all the parameter documentation work.

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 action ('List') and resource ('companies in HubSpot'), making the purpose immediately understandable. It distinguishes from sibling tools like hubspot_get_company (single company retrieval) and hubspot_list_deals (different resource type). However, it doesn't specify what kind of listing this is (e.g., all companies, filtered by criteria) beyond mentioning pagination.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose hubspot_list_companies over hubspot_get_company (single company) or hubspot_search_contacts (different resource), nor does it specify prerequisites like authentication requirements or rate limits. The mention of pagination is a functional detail rather than usage guidance.

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

hubspot_list_dealsC

List deals in HubSpot with pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
afterNoPagination cursor for next page of results
limitNoMaximum number of deals to return (default 10, max 100)
propertiesNoList of properties to include in the results

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'with pagination' which is useful, but doesn't address important behavioral aspects like whether this requires authentication, rate limits, what happens when no deals exist, or what the return format looks like. For a list operation with zero annotation coverage, this leaves significant gaps.

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 at just 6 words, front-loading the essential information ('List deals in HubSpot') and adding the critical behavioral detail ('with pagination') without any wasted words. Every element earns its place in this minimal description.

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

Completeness2/5

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

For a list operation with 3 parameters and no output schema, the description is insufficiently complete. It doesn't explain what information is returned, how results are structured, whether there are sorting options, or what authentication is required. The mention of pagination is helpful but doesn't compensate for the lack of output format information and other behavioral 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?

The description doesn't add any parameter semantics beyond what's already documented in the schema (which has 100% coverage). The schema already fully describes 'after', 'limit', and 'properties' parameters with their purposes and constraints. The description doesn't provide additional context about how these parameters interact or typical usage patterns.

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 verb ('List') and resource ('deals in HubSpot'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'hubspot_get_deal' or 'hubspot_get_deal_history', which could cause confusion about when to use each specific tool.

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?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'hubspot_get_deal' (singular retrieval), 'hubspot_get_deal_history', and 'hubspot_search_contacts', there's no indication of when this paginated list approach is preferred over other deal-related operations.

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

hubspot_search_contactsC

Search for contacts in HubSpot using a query string

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoMaximum number of contacts to return (default 10)
propertyListNoList of properties to include in the results
queryYesSearch query string (email, name, etc.)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool searches for contacts but lacks details on permissions required, rate limits, pagination behavior, error handling, or what the response format looks like. This is inadequate for a search tool with no 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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of a search operation, no annotations, and no output schema, the description is incomplete. It does not cover behavioral aspects like permissions, rate limits, or response format, nor does it provide usage guidelines. This leaves significant gaps for an AI agent to understand how to use the tool effectively.

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 schema description coverage is 100%, with clear descriptions for all parameters (count, propertyList, query). The description adds minimal value beyond the schema by mentioning 'query string' and implying search scope ('email, name, etc.'), but does not provide additional syntax, format details, or usage examples. Baseline 3 is appropriate given high schema coverage.

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 action ('Search for contacts') and resource ('in HubSpot'), specifying the search mechanism ('using a query string'). It distinguishes from siblings like 'hubspot_get_contact' (single contact retrieval) and 'hubspot_list_companies' (different resource), but does not explicitly differentiate from other search/list tools like 'hubspot_list_deals' beyond the resource type.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when to prefer this over 'hubspot_get_contact' (for single contact retrieval) or 'hubspot_list_companies' (for different resources), nor does it specify prerequisites, contexts, or exclusions for usage.

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

hubspot_update_contactC

Update an existing contact in HubSpot

ParametersJSON Schema
NameRequiredDescriptionDefault
contactIdYesThe ID of the contact to update
propertiesYesContact properties to update

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 for behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, error handling, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence with zero waste. It's front-loaded with the core action ('update an existing contact') and specifies the context ('in HubSpot'). Every word earns its place, making it easy to parse quickly.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., side effects, auth needs), response format, and error conditions. While the schema covers parameters well, the overall context for safe and effective use is insufficient.

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%, with both parameters clearly documented in the schema ('contactId' and 'properties'). The description adds no additional meaning beyond what the schema provides—it doesn't explain property formats, validation rules, or examples. Baseline 3 is appropriate since the schema does the heavy lifting.

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 verb ('update') and resource ('existing contact in HubSpot'), making the purpose immediately understandable. It distinguishes from creation tools like 'hubspot_create_contact' by specifying 'existing contact', but doesn't explicitly differentiate from other update tools like 'hubspot_update_deal' beyond the resource type.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a contact ID), when not to use it (e.g., for creating new contacts), or how it differs from sibling update tools beyond the resource name. The agent must infer usage from the tool name alone.

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

hubspot_update_dealC

Update an existing deal in HubSpot

ParametersJSON Schema
NameRequiredDescriptionDefault
dealIdYesThe ID of the deal to update
propertiesYesDeal properties to update

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is an update operation, implying mutation, but doesn't cover critical aspects like required permissions, whether changes are reversible, rate limits, error handling, or what the response looks like. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its 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 a single, efficient sentence that front-loads the core purpose without unnecessary words. Every part of the sentence ('Update an existing deal in HubSpot') directly contributes to understanding the tool's function, making it appropriately concise.

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

Completeness2/5

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

Given this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It lacks details on behavioral traits (e.g., permissions, side effects), usage context relative to siblings, and expected outcomes. The high schema coverage helps with parameters, but overall context for safe and effective use is inadequate.

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%, with both parameters clearly documented in the schema: 'dealId' as the ID to update and 'properties' as the deal properties to update. The description adds no additional semantic context beyond what the schema provides, such as examples of properties or formatting details. This meets the baseline for high schema coverage.

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 action ('Update') and resource ('an existing deal in HubSpot'), making the purpose immediately understandable. However, it doesn't distinguish this tool from its sibling 'hubspot_update_contact' beyond the resource type, nor does it specify what aspects of a deal can be updated beyond the generic 'update' verb.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing deal ID), when not to use it (e.g., for creating new deals), or refer to sibling tools like 'hubspot_create_deal' for creation or 'hubspot_get_deal' for retrieval.

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.

  1. 17 tool updatesv1.0.0
    • First observedhubspot_create_contact
    • First observedhubspot_create_deal
    • First observedhubspot_get_company
    • First observedhubspot_get_contact
    • First observedhubspot_get_deal
    • First observedhubspot_get_deal_history
    • First observedhubspot_get_deal_notes
    • First observedhubspot_get_engagements_by_deal
    • First observedhubspot_get_forecast_analytics
    • First observedhubspot_get_pipeline_analytics
    • First observedhubspot_get_sales_analytics
    • First observedhubspot_get_sales_performance
    • First observedhubspot_list_companies
    • First observedhubspot_list_deals
    • First observedhubspot_search_contacts
    • First observedhubspot_update_contact
    • First observedhubspot_update_deal

TDQS

B3.3/5.0

Scored across 17 tools

Disambiguation4/5

Most tools have distinct purposes targeting specific HubSpot objects (contacts, deals, companies) and actions (create, get, list, update, search). However, some analytics tools like hubspot_get_forecast_analytics, hubspot_get_pipeline_analytics, hubspot_get_sales_analytics, and hubspot_get_sales_performance could be confusing due to overlapping 'analytics' terminology, though their descriptions help differentiate them.

Naming Consistency5/5

All tools follow a consistent hubspot_verb_noun naming pattern with snake_case throughout. The verbs (create, get, list, search, update) are used predictably across different objects, making the set highly readable and systematic.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a comprehensive CRM integration covering contacts, deals, companies, and analytics. It's well-scoped for the domain, though it might feel heavy compared to simpler servers.

Completeness4/5

The tool set provides strong CRUD/lifecycle coverage for contacts and deals (create, get, list, update, search), with additional analytics and history tools. Minor gaps include no update for companies, no create for companies, and no delete operations, but agents can likely work around these omissions in typical workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

  • The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.

  • xmagnet — AI-powered B2B CRM for Claude. 35 tools that turn natural-language prompts into real CRM actions: prospect, enrich, score leads, manage deals, scan buying intent, run email campaigns and sequences, build forms and landing pages, refine ICP, and analyze performance — all directly inside Claude. 🚀 ONE-CLICK INSTALL: https://api.xmagnet.ai/claude The install page guides Claude users through 3 steps in under a minute: open Claude Connectors, paste the connector name, paste the server URL, sign in. A reviewer workspace is auto-provisioned on first sign-in with sample contacts, deals, campaigns, and ICP suggestions, so every tool works end-to-end with zero setup. No 2FA. No paid plan required. Free tier exposes all 35 tools. What you can do: • Prospecting — search_contacts, search_companies, search_investors, find_contacts_at_companies, enrich_contact, validate_email, find_competitors, company_intelligence • Pipeline — get_deals_pipeline, scan_deal_intent, get_ghost_pipeline, create_deal • Campaigns & sequences — create_campaign, generate_campaign_content, get_campaign_stats, get_bounce_stats, get_unsub_stats, create_sequence_draft, list_sequences • Top of funnel — suggest_icp, get_icp, create_form, list_forms, create_landing_page, list_landing_pages, show_suggestions • Operations — analyze_contacts, get_contact_details, update_contact, save_contacts_to_crm, export_contacts, get_dashboard_stats, get_credit_balance Example prompts to try: • "Find C-suite contacts at fintech companies that raised Series A in the last 6 months." • "Scan my open deals for buying intent and prioritize follow-ups." • "Generate a re-engagement campaign for contacts who opened my last newsletter but didn't reply." • "Show me my deals pipeline by stage with weighted value and win rate." • "Generate a landing page for my Q2 webinar with a registration form." Built for founders, SDRs, RevOps, and growth teams who want their CRM to take action — not just store records. Install: https://api.xmagnet.ai/claude · Site: https://xmagnet.ai · Privacy: https://xmagnet.ai/privacy-policy · Terms: https://xmagnet.ai/terms-of-service · Support: ashish.sinha@xmagnet.ai

  • Operate the Plixana CRM from any AI: contacts, deals, quotes, WhatsApp and metrics.

  • Your professional network in Claude — search contacts, log notes, and send warm intros.

Related MCP Servers