MCP server exposing HubSpot CRM data and actions as tools for AI agents (Claude, Cursor).
Four tools with clear verb-noun naming and complete Zod schemas. All tools have descriptions (avg 110 chars) and parameters are typed with descriptions. However, output schemas are undocumented, responses are JSON-stringified without field-level documentation. Error handling converts exceptions to text but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint). Missing pagination for search_companies despite potentially large result sets. Parameter descriptions are adequate but lack format/constraint details (e.g., no guidance on email format beyond Zod validation, no limit on activity body length).
Create a new HubSpot contact, or update an existing one if the email already exists.
Look up a HubSpot contact by email address. Returns first name, last name, lifecycle stage, and associated company name.
Log an engagement (note, email, or call) on a contact's HubSpot timeline.
Search HubSpot companies by name or domain. Returns matching company names and domains.
Output schemas undocumented. Tools return JSON-stringified objects without field-level documentation. LLMs cannot plan downstream calls or extract specific fields reliably.
search_companies lacks pagination. No limit, offset, or page parameters. Large result sets will bloat context and degrade LLM reasoning.
No tool annotations. WRITE tools (create_contact, log_activity) lack destructiveHint=true. READ tools lack readOnlyHint=true. LLMs cannot distinguish safe from unsafe operations.
Error responses lack recovery guidance. toToolError() returns raw error text without actionable next steps (e.g., 'Try search_companies() first' for not-found errors).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Parameter descriptions lack format/constraint details. 'body' in log_activity has minLength=1 but no guidance on max length or content type. 'query' in search_companies lacks examples of valid formats.