Skip to main content
Glama
tillheidrich

hubspot-mcp-server

by tillheidrich

update_page_draft

Update a HubSpot page's draft without touching the published version. Edit fields and receive rejected publish/schedule attempts as feedback.

Instructions

Patch a page's DRAFT. The published version is never touched.

Args: page_id: HubSpot page ID. page_type: 'landing' or 'site'. fields: any of name, slug, htmlTitle, metaDescription, language, featuredImage, useFeaturedImage, layoutSections, widgets, headHtml, footerHtml, domain.

Any field that could publish or schedule the page is refused and reported back in rejected_fields rather than silently dropped.

Writing layoutSections or widgets: fetch the page with include_content=True first, edit values inside the tree you got back, and send the whole tree. HubSpot accepts nothing smaller, and a tree you assembled yourself will not open in the drag-and-drop editor even when it renders correctly on the live site.

Inside a rich-text module, keep to headings, paragraphs, lists, links and emphasis. Layout HTML — grid divs, columns, inline styles, custom classes — turns the module into one block a marketer cannot edit, drops the theme's spacing and typography, and may be stripped the next time someone saves in HubSpot. Layout belongs to modules and rows, not to markup.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fieldsYes
page_idYes
page_typeYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.1

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden. It discloses major behaviors: it never touches the published version, refuses publish/schedule-capable fields and reports them via rejected_fields, requires include_content=True fetching before layoutSections/widgets writes, and explains the consequences of rich-text HTML misuse. This is exemplary 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 front-loaded with the core purpose and parameter list, then moves into necessary, high-impact behavioral warnings. Every paragraph covers a scenario that could cause a wrong or destructive call, so the length is justified.

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

Completeness5/5

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

For a mutation tool with nested objects, no annotations, and no schema-level parameter documentation, the description covers the full calling context: what fields are allowed, what is rejected, how to safely edit content trees, and what HTML is permitted. The output schema presumably covers return details, so the description need not repeat them.

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

Parameters5/5

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

Schema coverage is 0%, so the description must define parameters entirely. It explains page_id as a HubSpot page ID, page_type with valid values, and fields with a concrete list plus critical guidance on layoutSections/widgets and rejected_fields. The free-form fields object is made meaningful.

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

Purpose5/5

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

The description opens with 'Patch a page's DRAFT' and immediately clarifies 'The published version is never touched.' This is a specific verb plus resource that clearly distinguishes draft editing from the sibling publish_page and schedule_page_publish tools.

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

Usage Guidelines4/5

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

It clearly describes the resource type and the fields that can be set, and it implies this is for editing an existing draft rather than creating or publishing. It does not explicitly name sibling alternatives such as create_landing_page_draft or publish_page, so it stops short of full exclusion guidance.

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