HubSpot MCP Server
Enables interaction with the HubSpot CRM API, providing tools for managing contacts, deals, and companies, as well as accessing sales analytics data including performance metrics, pipeline analytics, deal history, and sales forecasting.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HubSpot MCP Serversearch for contacts with email containing @acme.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
hubspot_search_contactsSearch 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 returnpropertyList(array): List of properties to include in results
Returns: List of matching contacts with their properties
hubspot_get_contactGet 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
hubspot_create_contactCreate a new contact in HubSpot
Required inputs:
properties(object): Contact properties with at leastemailfield
Returns: Created contact details
hubspot_update_contactUpdate an existing contact in HubSpot
Required inputs:
contactId(string): The ID of the contact to updateproperties(object): Contact properties to update
Returns: Updated contact confirmation
hubspot_list_dealsList deals in HubSpot with pagination
Optional inputs:
limit(number, default: 10, max: 100): Maximum number of deals to returnafter(string): Pagination cursor for next pageproperties(array): List of properties to include in results
Returns: List of deals with their details
hubspot_get_dealGet 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
hubspot_create_dealCreate a new deal in HubSpot
Required inputs:
properties(object): Deal properties with at leastdealnamefield
Returns: Created deal details
hubspot_update_dealUpdate an existing deal in HubSpot
Required inputs:
dealId(string): The ID of the deal to updateproperties(object): Deal properties to update
Returns: Updated deal confirmation
hubspot_list_companiesList companies in HubSpot with pagination
Optional inputs:
limit(number, default: 10, max: 100): Maximum number of companies to returnafter(string): Pagination cursor for next pageproperties(array): List of properties to include in results
Returns: List of companies with their details
hubspot_get_companyGet 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
hubspot_get_sales_analyticsGet 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 formatpipeline(string): Pipeline ID to filter bydealStage(string): Deal stage ID to filter bydealOwner(string): Deal owner ID to filter by
Returns: Aggregated sales metrics grouped by time period
hubspot_get_deal_historyGet 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
hubspot_get_deal_notesGet 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 returnafter(string): Pagination cursor for next page of results
Returns: List of notes with their content and creation timestamps
hubspot_get_engagements_by_dealGet 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 returnafter(string): Pagination cursor for next page of results
Returns: List of engagements with their details and type information
hubspot_get_sales_performanceGet 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 formatownerIds(array): List of owner IDs to include in the analysispipeline(string): Pipeline ID to filter by
Returns: Performance metrics for each sales rep including deal counts, revenue, and win rates
hubspot_get_pipeline_analyticsGet analytics for a specific sales pipeline including conversion rates between stages
Required inputs:
pipelineId(string): The ID of the pipeline to analyzeperiod(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
hubspot_get_forecast_analyticsGet 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 forecastpipeline(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
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
Required Scopes:
crm.objects.contacts.readcrm.objects.contacts.writecrm.objects.deals.readcrm.objects.deals.writecrm.objects.companies.readcrm.objects.companies.writecrm.objects.owners.readcrm.objects.quotes.readcrm.objects.line_items.readcrm.objects.custom.readcrm.schemas.deals.readcrm.schemas.contacts.readcrm.schemas.companies.readcrm.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:
All required scopes are added to your HubSpot private app
The API key is correctly copied to your configuration
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 toolshubspot_create_contactC
Create a new contact in HubSpot
| Name | Required | Description | Default |
|---|---|---|---|
| properties | Yes | Contact properties |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| properties | Yes | Deal properties |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| companyId | Yes | The ID of the company to retrieve | |
| properties | No | List of properties to include in the results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The ID of the contact to retrieve | |
| properties | No | List of properties to include in the results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dealId | Yes | The ID of the deal to retrieve | |
| properties | No | List of properties to include in the results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dealId | Yes | The ID of the deal to get history for |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for next page of results | |
| dealId | Yes | The ID of the deal to get notes for | |
| limit | No | Maximum number of notes to return (default 20) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for next page of results | |
| dealId | Yes | The ID of the deal to get engagements for | |
| limit | No | Maximum number of engagements to return (default 20) | |
| types | No | Types of engagements to include |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| numberOfPeriods | No | Number of future periods to forecast (default 3) | |
| period | Yes | Time period to group forecast data by | |
| pipeline | No | Pipeline ID to filter by |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date for analysis in ISO format (YYYY-MM-DD) | |
| period | Yes | Time period to group analytics data by | |
| pipelineId | Yes | The ID of the pipeline to analyze | |
| startDate | Yes | Start date for analysis in ISO format (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dealOwner | No | Deal owner ID to filter by | |
| dealStage | No | Deal stage ID to filter by | |
| endDate | No | End date for analysis in ISO format (YYYY-MM-DD) | |
| period | Yes | Time period to group analytics data by | |
| pipeline | No | Pipeline ID to filter by | |
| startDate | Yes | Start date for analysis in ISO format (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date for analysis in ISO format (YYYY-MM-DD) | |
| ownerIds | No | List of owner IDs to include in the analysis | |
| period | Yes | Time period to group performance data by | |
| pipeline | No | Pipeline ID to filter by | |
| startDate | Yes | Start date for analysis in ISO format (YYYY-MM-DD) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for next page of results | |
| limit | No | Maximum number of companies to return (default 10, max 100) | |
| properties | No | List of properties to include in the results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Pagination cursor for next page of results | |
| limit | No | Maximum number of deals to return (default 10, max 100) | |
| properties | No | List of properties to include in the results |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Maximum number of contacts to return (default 10) | |
| propertyList | No | List of properties to include in the results | |
| query | Yes | Search query string (email, name, etc.) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| contactId | Yes | The ID of the contact to update | |
| properties | Yes | Contact properties to update |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| dealId | Yes | The ID of the deal to update | |
| properties | Yes | Deal properties to update |
TDQS
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.
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.
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.
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.
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.
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.
17 tool updates
v1.0.0- First observed
hubspot_create_contact - First observed
hubspot_create_deal - First observed
hubspot_get_company - First observed
hubspot_get_contact - First observed
hubspot_get_deal - First observed
hubspot_get_deal_history - First observed
hubspot_get_deal_notes - First observed
hubspot_get_engagements_by_deal - First observed
hubspot_get_forecast_analytics - First observed
hubspot_get_pipeline_analytics - First observed
hubspot_get_sales_analytics - First observed
hubspot_get_sales_performance - First observed
hubspot_list_companies - First observed
hubspot_list_deals - First observed
hubspot_search_contacts - First observed
hubspot_update_contact - First observed
hubspot_update_deal
TDQS
Scored across 17 tools
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.
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.
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.
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
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
- PlixanaOAuthcom.plixana
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
- AlicenseBqualityFmaintenanceEnables AI models to interact with HubSpot CRM data and operations through a standardized interface, supporting contact and company management.16128MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with HubSpot CRM for managing contacts, companies, deals, and sending emails through natural language commands.947 npmMIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables management of HubSpot CRM entities including contacts, companies, deals, and pipelines through natural language. It provides comprehensive tools for listing, searching, creating, and updating records with support for OAuth 2.0 authentication.MIT
- AlicenseAqualityBmaintenanceEnables interaction with HubSpot CRM through MCP, providing tools to manage contacts, companies, deals, and search/associations via natural language.18947 npmMIT