> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: bbfb3556-2e75-47fc-8b8e-f226135a841a
---

# Developer MCP server tools

> Reference for all tools available in HubSpot's developer MCP server, including parameters and example prompts.

export const RequiredIndicator = () => {
  return <span className="required-indicator">
      required
    </span>;
};

The developer MCP server provides your AI assistant with tools for common HubSpot development tasks. Many tools execute HubSpot CLI commands on your behalf, so your assistant can scaffold projects, upload builds, check logs, and more without requiring you to run commands manually.

<Callout icon="flag">
  To use the MCP tools below, you'll need to [install the CLI](/developer-tooling/local-development/hubspot-cli/install-the-cli), then [set up the developer MCP server](/developer-tooling/local-development/developer-mcp/setup).
</Callout>

## Documentation & guidance

<h3 className="small-heading">guided-walkthrough-cli</h3>

Provides step-by-step guided help for key HubSpot CLI commands. Useful for onboarding developers or debugging CLI configuration issues.

Returns CLI usage help text, available flags and options, and a suggested next command to run.

**Example prompt:** "How do I authenticate with the HubSpot CLI?"

<Expandable title="parameters">
  | Parameter | Description                                                                                                               |
  | --------- | ------------------------------------------------------------------------------------------------------------------------- |
  | `command` | A specific command to provide guidance for. Can be one of: `hs init`, `hs auth`, `hs project create`, `hs project upload` |
</Expandable>

<h3 className="small-heading">search-docs</h3>

Searches the official HubSpot developer documentation and returns the most relevant pages with URLs. Always follow with `fetch-doc` to get full content before writing code or answering technical questions.

Returns the top doc pages each with: title, URL, relevance score, and a content excerpt.

**Example prompt:** "Search the docs for information about building app cards"

<Expandable title="parameters">
  | Parameter                               | Description                                                                         |
  | --------------------------------------- | ----------------------------------------------------------------------------------- |
  | `docsSearchQuery` <RequiredIndicator /> | Text search query.                                                                  |
  | `docsSearchLimit`                       | Maximum number of results to return. Must be between `1` and `20`. Defaults to `5`. |
</Expandable>

<h3 className="small-heading">fetch-doc</h3>

Fetches the full authoritative content of a HubSpot developer documentation page from its URL. Use immediately after `search-docs` and before writing code or answering technical questions.

Returns the full markdown content of the page including prose, OpenAPI YAML specs, and code examples

**Example prompt:** "Search the docs for information about building app cards, then fetch the full contents of the most relevant reference doc"

<Expandable title="parameters">
  | Parameter                      | Description                                   |
  | ------------------------------ | --------------------------------------------- |
  | `docUrl` <RequiredIndicator /> | Full URL of the HubSpot docs page to retrieve |
</Expandable>

## Developer projects

<h3 className="small-heading">get-feature-config-schema</h3>

Returns the JSON schema for a feature's `-hsmeta.json` configuration file. Always call before editing any `-hsmeta.json` to understand valid values and constraints. Requires [platform version](/developer-tooling/platform/versioning) `2025.2` or higher.

The schema includes all properties, required fields, types, enums, patterns, and nested definitions.

**Example prompt:** "Get the schema for app card configuration"

<Expandable title="parameters">
  | Parameter                               | Description                                                                                                        |
  | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
  | `platformVersion` <RequiredIndicator /> | The platform version to retrieve the schema for (e.g. `2025.2`).                                                   |
  | `featureType` <RequiredIndicator />     | The feature type to retrieve the schema for. Must match the `type` field in the `-hsmeta.json` file (e.g. `card`). |
</Expandable>

<h3 className="small-heading">get-build-status</h3>

Retrieves build status and error messages for a HubSpot project. Omit `buildId` to see the most recent builds; provide `buildId` for detailed error info on that build.

Returns build records with status, `buildErrorMessage`, subbuild failures, and timestamps.

**Example prompt:** "Check the status of my latest build"

<Expandable title="parameters">
  | Parameter                                   | Description                                                                       |
  | ------------------------------------------- | --------------------------------------------------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory.                                           |
  | `buildId`                                   | The build ID to retrieve status for.                                              |
  | `limit`                                     | Number of recent builds to return when no `buildId` is provided. Defaults to `3`. |
</Expandable>

<h3 className="small-heading">get-build-logs</h3>

Retrieves full pipeline logs for a specific build. Best used after `get-build-status` to investigate warnings or failures that need more detail.

Returns filtered log lines from the full build pipeline for the specified build ID.

**Example prompt:** "Show me the build logs for build ID 123 and help me fix any errors"

<Expandable title="parameters">
  | Parameter                                   | Description                                                                         |
  | ------------------------------------------- | ----------------------------------------------------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory.                                             |
  | `buildId` <RequiredIndicator />             | The build ID to retrieve logs for. Use `get-build-status` to find build IDs.        |
  | `logLevel`                                  | Log level filter. Can be one of: `ERROR`, `WARN`, `INFO`, `ALL`. Defaults to `ALL`. |
</Expandable>

<h3 className="small-heading">create-project</h3>

Scaffolds a new HubSpot developer project. Supports empty or app-based templates with optional features. Auth type and distribution cannot be changed after first upload.

Returns a scaffolded project directory with `hsproject.json` and all selected feature boilerplate files.

**Example prompt:** "Create a new project with one app card and a settings page"

<Expandable title="parameters">
  | Parameter                           | Description                                                                                                                                                                                                 |
  | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `destination` <RequiredIndicator /> | Relative path where the project will be created.                                                                                                                                                            |
  | `projectBase` <RequiredIndicator /> | The project template to use. Can be one of: `empty`, `app`.                                                                                                                                                 |
  | `name`                              | The name of the project.                                                                                                                                                                                    |
  | `auth`                              | Authentication type. Can be one of: `static`, `oauth`.                                                                                                                                                      |
  | `distribution`                      | Distribution type. Can be one of: `marketplace`, `private`.                                                                                                                                                 |
  | `features`                          | Array of features to include. Can be one of: `card`, `settings`, `app-function`, `app-function-endpoint`, `webhooks`, `workflow-action`, `workflow-action-tool`, `app-object`, `app-event`, `scim`, `page`. |
</Expandable>

<h3 className="small-heading">add-feature-to-project</h3>

Adds a new feature to an existing HubSpot project. Only compatible with projects using [platform version](/developer-tooling/platform/versioning) `2025.2` or later.

Returns new feature scaffold files and updated configuration added to the existing project directory.

**Example prompt:** "Add a webhook to my existing project"

<Expandable title="parameters">
  | Parameter                                   | Description                                                                                                                                                                                             |
  | ------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory.                                                                                                                                                                 |
  | `addApp` <RequiredIndicator />              | Whether to scaffold an app alongside the feature.                                                                                                                                                       |
  | `features`                                  | Array of features to add. Can be one of: `card`, `settings`, `app-function`, `app-function-endpoint`, `webhooks`, `workflow-action`, `workflow-action-tool`, `app-object`, `app-event`, `scim`, `page`. |
  | `auth`                                      | Authentication type for the feature. Can be one of: `static`, `oauth`.                                                                                                                                  |
  | `distribution`                              | Distribution type for the feature. Can be one of: `marketplace`, `private`.                                                                                                                             |
</Expandable>

<h3 className="small-heading">validate-project</h3>

Validates a project's configuration files locally without uploading anything. Useful for catching configuration errors early. Not required before uploading.

Returns either a confirmation the project is valid, or a list of configuration errors and warnings.

**Example prompt:** "Validate my project and show me any issues"

<Expandable title="parameters">
  | Parameter                                   | Description                             |
  | ------------------------------------------- | --------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory. |
</Expandable>

<h3 className="small-heading">upload-project</h3>

Uploads (builds) a local project to HubSpot, creating it remotely if it does not exist yet. Only invoke when the user explicitly requests it, as this action is potentially destructive.

Returns an upload confirmation with the build ID and initial build status.

**Example prompt:** "Validate my project, then upload it to HubSpot"

<Expandable title="parameters">
  | Parameter                                   | Description                                                                         |
  | ------------------------------------------- | ----------------------------------------------------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory.                                             |
  | `uploadMessage` <RequiredIndicator />       | A one-sentence description of the changes being uploaded.                           |
  | `profile`                                   | Account profile to upload to. Must be explicitly specified by the user if provided. |
</Expandable>

<h3 className="small-heading">deploy-project</h3>

Deploys a previously uploaded build to the connected HubSpot account. Only invoke when the user explicitly requests a deployment.

Returns deployment status, deployment ID, and confirmation that the build is live.

**Example prompt:** "Deploy build number 42 of my project"

<Expandable title="parameters">
  | Parameter                                   | Description                                                    |
  | ------------------------------------------- | -------------------------------------------------------------- |
  | `absoluteProjectPath` <RequiredIndicator /> | Absolute path to the project directory.                        |
  | `buildNumber`                               | The build number to deploy. Defaults to the most recent build. |
</Expandable>

<h3 className="small-heading">find-projects</h3>

Recursively searches a given directory for hsproject.json files, returning the paths of all discovered projects.

List of directory paths containing a `hsproject.json` file.

**Example prompt:** "Find all of my recent projects"

<Expandable title="parameters">
  | Parameter                                 | Description                   |
  | ----------------------------------------- | ----------------------------- |
  | `absoluteDirectory` <RequiredIndicator /> | The root directory to search. |
</Expandable>

## Account & apps

<h3 className="small-heading">create-test-account</h3>

Creates a temporary HubSpot developer test account for local development and QA. Each hub defaults to Enterprise tier if not specified. Can use a JSON configuration file or inline parameters.

Returns a confirmation with the new test account ID and access credentials.

**Example prompt:** "Create a test account with Professional tier for all hubs"

<Expandable title="parameters">
  | Parameter        | Description                                                                                                    |
  | ---------------- | -------------------------------------------------------------------------------------------------------------- |
  | `name`           | The name of the test account. Required when not using `configPath`.                                            |
  | `description`    | A description of the test account. Defaults to the account name.                                               |
  | `marketingLevel` | Marketing Hub tier. Can be one of: `FREE`, `STARTER`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`.  |
  | `salesLevel`     | Sales Hub tier. Can be one of: `FREE`, `STARTER`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`.      |
  | `serviceLevel`   | Service Hub tier. Can be one of: `FREE`, `STARTER`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`.    |
  | `opsLevel`       | Operations Hub tier. Can be one of: `FREE`, `STARTER`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`. |
  | `contentLevel`   | Content Hub tier. Can be one of: `FREE`, `STARTER`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`.    |
  | `commerceLevel`  | Commerce Hub tier. Can be one of: `FREE`, `PROFESSIONAL`, `ENTERPRISE`. Defaults to `ENTERPRISE`.              |
  | `configPath`     | Path to a JSON configuration file for the test account. Mutually exclusive with the inline parameters above.   |
</Expandable>

<h3 className="small-heading">get-api-usage-patterns-by-app-id</h3>

Returns API usage analytics for a specific app showing which endpoint patterns are called and across how many accounts. Date range cannot exceed 3 months.

Returns a `patternSummaries` object with per-pattern stats including `portalPercentage` and `numOfPortals`.

**Example prompt:** "What is the usage pattern summary for my app?"

<Expandable title="parameters">
  | Parameter                     | Description                                                                          |
  | ----------------------------- | ------------------------------------------------------------------------------------ |
  | `appId` <RequiredIndicator /> | The numeric app ID (e.g. `3003909`).                                                 |
  | `startDate`                   | Start of the date range in `YYYY-MM-DD` format.                                      |
  | `endDate`                     | End of the date range in `YYYY-MM-DD` format. The date range cannot exceed 3 months. |
</Expandable>

<h3 className="small-heading">get-apps-info</h3>

Lists all HubSpot applications registered in the connected account. Run this first to discover app IDs before calling any app-specific tools.

Returns an array of objects, each with an `appId` (number) and `appName` (string).

**Example prompt:** "Show me all my apps and their IDs"

## CMS tools

<h3 className="small-heading">create-cms-template</h3>

Creates a new HubSpot CMS template using `hs create template`. Supports page, email, partial, global partial, blog listing/post, search, and section template types.

Returns a scaffolded `.html` template file at the destination path.

**Example prompt:** "Create a new page template called 'Product Landing'"

<Expandable title="parameters">
  | Parameter                                | Description                                                                                                                                                                                |
  | ---------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
  | `userSuppliedName` <RequiredIndicator /> | The name of the template.                                                                                                                                                                  |
  | `templateType`                           | The type of template to create. Can be one of: `page-template`, `email-template`, `partial`, `global-partial`, `blog-listing-template`, `blog-post-template`, `search-template`, `section` |
  | `dest`                                   | Destination path where the template will be created.                                                                                                                                       |
</Expandable>

<h3 className="small-heading">create-cms-module</h3>

Creates a new HubSpot CMS module (HubL or React). Supports content type targeting, global flag, and new-content availability.

Returns a scaffolded module directory with `meta.json`, `fields.json`, and `module.html` or `module.jsx`.

**Example prompt:** "Help me add a React module to my existing project"

<Expandable title="parameters">
  | Parameter                                | Description                                                                                                                                                                                                                                                                                               |
  | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `userSuppliedName` <RequiredIndicator /> | The name of the module.                                                                                                                                                                                                                                                                                   |
  | `moduleLabel` <RequiredIndicator />      | Display label for the module (required for non-interactive use).                                                                                                                                                                                                                                          |
  | `reactType`                              | Whether to create a React module instead of HubL.                                                                                                                                                                                                                                                         |
  | `contentTypes`                           | Comma-separated list of content types the module targets. Can be one of: `ANY`, `LANDING_PAGE`, `SITE_PAGE`, `BLOG_POST`, `BLOG_LISTING`, `EMAIL`, `KNOWLEDGE_BASE`, `QUOTE_TEMPLATE`, `QUOTE`, `QUOTE_BLUEPRINT`, `CUSTOMER_PORTAL`, `WEB_INTERACTIVE`, `SUBSCRIPTION`, `MEMBERSHIP`. Defaults to `ANY`. |
  | `availableForNewContent`                 | Whether the module is available for new content.                                                                                                                                                                                                                                                          |
  | `global`                                 | Whether the module is a global module.                                                                                                                                                                                                                                                                    |
  | `dest`                                   | Destination path where the module will be created.                                                                                                                                                                                                                                                        |
</Expandable>

<h3 className="small-heading">create-cms-function</h3>

Creates a new CMS serverless function using `hs create function`. Supports all HTTP methods. For non-interactive use, provide all three of `functionsFolder`, `filename`, and `endpointPath`.

Returns a scaffolded `.functions/` directory and `serverless.json` configuration at the destination path.

**Example prompt:** "Generate a serverless function with a POST endpoint at /api/submit-form"

<Expandable title="parameters">
  | Parameter                               | Description                                                                                              |
  | --------------------------------------- | -------------------------------------------------------------------------------------------------------- |
  | `functionsFolder` <RequiredIndicator /> | The folder to create the function in (required for non-interactive use).                                 |
  | `filename` <RequiredIndicator />        | The filename for the serverless function (required for non-interactive use).                             |
  | `endpointPath` <RequiredIndicator />    | The endpoint path for the function (required for non-interactive use).                                   |
  | `endpointMethod`                        | HTTP method for the endpoint. Can be one of: `DELETE`, `GET`, `PATCH`, `POST`, `PUT`. Defaults to `GET`. |
  | `dest`                                  | Destination path where the function will be created.                                                     |
</Expandable>

<h3 className="small-heading">get-cms-serverless-function-logs</h3>

Retrieves production logs for a deployed CMS serverless function. Use after `list-cms-serverless-functions` to obtain the correct endpoint path.

Returns log entries for the specified function with timestamps, invocation data, and output.

**Example prompt:** "Get the logs for my deployed serverless function at /api/contacts"

<Expandable title="parameters">
  | Parameter                        | Description                              |
  | -------------------------------- | ---------------------------------------- |
  | `endpoint` <RequiredIndicator /> | The function path (e.g. `my-function`).  |
  | `account`                        | Account ID or name.                      |
  | `latest`                         | Return only the most recent log entry.   |
  | `compact`                        | Return a compact log format.             |
  | `limit`                          | Maximum number of log entries to return. |
</Expandable>

<h3 className="small-heading">list-cms-serverless-functions (deprecated)</h3>

Deprecated. Use the [`hs cms function list` CLI command](/developer-tooling/local-development/hubspot-cli/commands/cms-commands#list-cms-serverless-functions) instead. Lists all serverless functions deployed to a HubSpot account.

Returns a table or JSON of deployed functions with routes, HTTP methods, secrets, and timestamps.

<Expandable title="parameters">
  | Parameter | Description                                   |
  | --------- | --------------------------------------------- |
  | `account` | Account ID or name.                           |
  | `json`    | Return raw JSON instead of a formatted table. |
</Expandable>

<h3 className="small-heading">list-cms-remote-contents (deprecated)</h3>

Deprecated. Use the [`hs cms list` CLI command](/developer-tooling/local-development/hubspot-cli/commands/cms-commands#list-files) instead. Lists the contents of a remote HubSpot CMS directory.

Returns a list of files and folders in the specified CMS directory.

<Expandable title="parameters">
  | Parameter | Description                                                |
  | --------- | ---------------------------------------------------------- |
  | `account` | Account ID or name from the CLI configuration.             |
  | `path`    | Remote CMS directory path. Defaults to the root directory. |
</Expandable>
