Team Guide v3.0

ScaleStation RevOps Engine — Team Guide

A shared MCP server that gives Claude direct access to HubSpot. Use it to read, analyse, and safely modify any portal you have a seat in — without touching the HubSpot UI.

105 tools · Google sign-in · Mac and Windows

What changed in v3.0 — everyone must reconnect once

The engine now requires Google sign-in. Your existing connection will stop working; set it up again (see Setup) and sign in with your @scalestation.io account. One time, then roughly every 90 days.

Three other things are different: you can only select portals you hold a HubSpot seat in; portals are connected via a link from Claude rather than a public URL; and every change you make is recorded against your name.

What is it?

The ScaleStation RevOps Engine is a Model Context Protocol (MCP) server hosted on Railway. It acts as a bridge between Claude and HubSpot — giving Claude the ability to read portal configuration, search CRM records, run audits, and (with permission) make changes.

It's shared infrastructure. One server, multiple portals. Each team member authenticates their own HubSpot portal(s) via OAuth — the server stores those tokens securely and uses them on your behalf inside Claude conversations.

Think of it as giving Claude a "HubSpot tab" that stays open across your work.

No code required

You don't need to run anything locally. The server is already deployed. You just point Claude Code at it and authenticate your portal.

Prerequisites

  • 1
    Your ScaleStation Google account

    You sign in to the engine with your @scalestation.io Google account. Personal Gmail accounts are rejected. Make sure you can sign into that account in your browser.

  • 2
    Claude Code installed (Desktop app or CLI)

    Download the Desktop app from claude.ai/code — Mac and Windows. Or install the CLI with npm install -g @anthropic-ai/claude-code. Either works; see Setup below.

  • 3
    A HubSpot seat in the portals you need

    Access follows HubSpot: you can work with a portal if you're a user in it. See Who Can See Which Portals.

  • 4
    The server URL (already live)

    hubspot-engine-production.up.railway.app — nothing to install or run locally.

Setup — Add the MCP Server

Choose the method that matches how you use Claude. The end result is identical — pick whichever is easier for you.

One-time setup through the Settings UI. No Terminal, no commands — works identically on Mac and Windows.

  • 1
    Open Settings → Connectors

    In Claude Code Desktop, click your profile or the settings icon and navigate to Connectors.

  • 2
    Click the + button to add a custom connector

    You'll see an "Add custom connector" dialog with two fields.

  • 3
    Fill in the two fields

    Enter exactly as shown (the name can be anything you like):

    Name:                ScaleStation RevOps Engine
    Remote MCP server URL: https://hubspot-engine-production.up.railway.app/mcp
  • 4
    Click Add — then approve the browser auth prompt

    Claude Code will open a browser window to authenticate with the MCP server. Click Allow. The connector then appears in your list.

  • 5
    Set tool permissions to Allow all

    Click the connector in your list. Under Tool permissions → Other tools, click the Custom dropdown and change it to Allow all. Without this, Claude will ask for permission before every single tool call.

  • 6
    Verify — type list portals in any conversation

    If you've already authenticated a portal, it will appear. If the list is empty, move on to the Connect section.

Already added it through claude.ai?

If you previously connected the server through the Claude web app, it's already in your connectors list — skip this step. You'll see "A server with this URL already exists" if you try to add it again.

Done once, works forever

The connector persists across sessions and app restarts on both Mac and Windows. You never need to do this again.

One command in Terminal. The server is then available in both Claude Code CLI and the Desktop app.

  • 1
    Open Terminal

    Open Terminal.app (or iTerm2, or any terminal emulator).

  • 2
    Run the add command
    claude mcp add --transport http revops-engine \
      https://hubspot-engine-production.up.railway.app/mcp
  • 3
    Approve the browser auth prompt

    Claude Code will open a browser window to authenticate with the MCP server. Click Allow to complete the connection.

  • 4
    Verify — start Claude and type list portals

    In a Claude conversation (CLI: run claude, Desktop: open a new chat), ask list portals. If the list is empty, move to the Connect section.

Using Claude Code Desktop after CLI setup

The CLI command saves the server to ~/.claude/claude_mcp_settings.json. Claude Code Desktop reads the same config — so the server will also appear in your Desktop app connectors automatically. You may need to restart the Desktop app once.

Running terminal commands from inside Claude Code Desktop

In a Claude Code Desktop conversation, prefix any shell command with ! to run it in the current session. For example: ! claude mcp list shows all registered servers without leaving the chat.

One command in PowerShell or Command Prompt. The Claude Code CLI uses the same syntax on Windows.

  • 1
    Open PowerShell or Command Prompt

    Search for PowerShell or cmd in the Start menu. Either works.

  • 2
    Run the add command
    claude mcp add --transport http revops-engine https://hubspot-engine-production.up.railway.app/mcp

    The command is the same as Mac — no changes needed for Windows.

  • 3
    Approve the browser auth prompt

    Claude Code will open a browser window to authenticate with the MCP server. Click Allow.

  • 4
    Verify — start Claude and type list portals

    In a Claude conversation, ask list portals. If the list is empty, move to the Connect section.

Using Claude Code Desktop after CLI setup

The CLI saves the server config to %APPDATA%\Claude\claude_mcp_settings.json on Windows. Claude Code Desktop reads the same file — the server will appear in your Desktop app connectors automatically after a restart.

Claude Code CLI must be installed first

Run npm install -g @anthropic-ai/claude-code in PowerShell before running the claude mcp add command. Requires Node.js — download from nodejs.org if needed.

Connect a HubSpot Portal

Portals are connected from inside Claude. You ask for a link, then whoever has HubSpot admin rights on that portal opens it and approves — that might be you, or the client's own admin.

  • 1
    Ask Claude for a connect link

    Say: connect a new portal with read write access (or read-only, if that's all that's needed). Claude runs connect_portal and returns a link.

  • 2
    Open the link, or send it to whoever approves

    The link is valid for 30 minutes. If the client's HubSpot admin is doing the approving, send it to them — they don't need a ScaleStation account or Claude access.

  • 3
    Authorise in HubSpot — including the risk warning

    HubSpot's standard OAuth screen appears. Log in and click Connect app. HubSpot may warn that the app is "unreviewed" or "not published in the marketplace" — that's expected for a private internal app.

  • 4
    Back in Claude: list portals

    The portal should now appear. Then select portal [name] to start working with it.

Anyone on the team can connect a portal

You don't need to go through Kieran. The link is useless without HubSpot admin rights on the target portal, and creating one doesn't give you access to that portal — that still depends on holding a HubSpot seat there.

The old /connect URL no longer works

It used to be a public page anyone could open. It now only accepts a signed link from connect_portal. If you have the old URL bookmarked, delete it.

Connections persist across redeploys

Portal tokens are stored on a persistent volume. Server updates don't disconnect portals — restart Claude Code and carry on.

Who Can See Which Portals

You can work with a portal if you hold a HubSpot seat in it. That's the whole rule. There's no separate permissions list to request or maintain.

Get added as a user in a client's HubSpot, and that portal becomes available to you immediately. Lose the seat, and access goes with it.

If you try to select a portal you don't have a seat in, you'll get a clear message naming your email and the portal — not a silent failure.

list portals shows every connected portal

It doesn't hide the ones you can't use — that would look like a portal had gone missing. It shows all of them; the check happens when you select one.

Your Google address and HubSpot address must match

The check compares the account you signed in with against the HubSpot user list. If your HubSpot seat uses a different email from your @scalestation.io Google account, you'll be refused — tell Kieran, it's a quick fix.

Daily Use

Start every conversation with: select portal [name]

Portal selection resets each conversation. Claude doesn't remember which portal you were using last time. This is the first thing to do in any new chat.

Read mode vs Write mode

When you select a portal you choose the access mode for that session:

Read only (default)
View, search, analyse — no changes to HubSpot. Safe for exploration and audits.
Read + Write
Enables creation and modification tools. All writes require explicit approval before execution.

To select a portal in read-only mode just say select portal [name]. To enable write mode, say select portal [name] in read write mode.

Example prompts to try first

  • Give me an overview of this portal — properties, workflows, pipelines
  • Search for all deals in the New Home Construction pipeline that are in the Proposal stage
  • Which contact properties exist on this portal that are never populated?
  • Run a full audit of this portal and flag any data quality issues
  • List all active workflows and tell me what each one does
  • Find all duplicate contacts by email address

Tool Categories

The server exposes 105 tools across these categories. You don't need to call them directly — just describe what you want and Claude will use the right tools.

Portal overview

Start here on any portal you don't know

A single call that summarises the whole portal — how many properties per object, how many workflows and which are active, pipeline structure, custom objects, forms and lists. Pair it with a config validation pass to surface naming inconsistencies and structural problems.

Try: Give me an overview of this portal, then validate the config and flag anything odd

get_portal_overviewsearch_configvalidate_configrefresh_cache

Records & search

Find and read anything in the CRM

Search contacts, companies, deals, tickets and custom objects with filters, then read individual records, their associations and their full activity history. Reads are unlimited and safe — this is most of the day-to-day work.

Try: Find all deals in the New Home Construction pipeline in Proposal stage, with their associated companies

search_crmsearch_recordsget_recordbatch_read_recordsget_associationsget_record_associationssearch_engagementsget_contact_activityget_owners

Properties

Inspect, build and clean up the data model

See every property with its type, group and options; check where a property is actually used across workflows, lists, forms and emails before touching it; view value history; and create, edit or archive properties and groups. Archiving refuses if something depends on the property — and names what.

Try: Which contact properties are never populated, and is anything using them?

get_propertiesget_propertysearch_propertiesget_field_usageget_property_historyget_property_groupscreate_propertyupdate_propertyarchive_propertycreate_property_groupupdate_property_grouparchive_property_group

Workflows & automation

Understand what's running before you change it

List every workflow, read its full trigger logic and actions, inspect custom code steps and custom events. You can create, update and archive workflows too — but read the existing ones first, because workflow updates are full replacements.

Try: List all active workflows and explain what each one triggers on

get_workflowsget_workflowcreate_workflowupdate_workflowarchive_workflowget_custom_code_actionsget_custom_events

Pipelines & forecasting

Deal and ticket structure, plus the numbers

Inspect pipelines, their stages and win probabilities, and pull forecast figures by category or owner. Useful for diagnosing why a forecast looks wrong — usually stage probabilities that were never tuned.

Try: Show me the deal pipeline stages with probabilities, then forecast by owner

get_pipelinescreate_pipelineget_deal_forecast

Lists, forms & marketing

Everything on the acquisition side

Browse lists and sample their membership, read form definitions and submissions, and inspect marketing emails, campaigns, sequences and subscription types. Email content can be created, cloned and edited block by block where the portal has the content scope.

Try: Show me form submissions from the last 30 days and which list they landed in

get_listsget_list_members_samplecreate_listget_formsget_form_submissionscreate_formget_marketing_emailsget_marketing_emailemail_createemail_cloneemail_updateget_email_statisticsget_campaignsget_sequencesget_subscription_types

Website & CMS

Pages and modules, for portals with Content Hub

List site and landing pages, read and edit custom modules, validate module markup before publishing, and push content changes live. Module edits are validated for HubL balance and field-ID uniqueness first.

Try: List the CMS modules on this portal and validate the one used on the pricing page

cms_list_pagescms_list_modulescms_get_modulecms_create_modulecms_update_modulecms_validate_modulecreate_landing_pageupdate_page_contentpublish_page

Import, export & bulk edits

Moving data in and out at volume

Start CSV imports and watch their progress, pull error reports when rows fail, export data out, and update up to 100 records in a single call. Bulk updates preview by default — the first call shows you what would change and writes nothing.

Try: Import this CSV of contacts and tell me which rows failed and why

start_importget_import_statusget_import_errorslist_importscancel_importstart_exportget_export_statusupload_fileupdate_recordbatch_update_records

Audit & data quality

What's wrong with this portal, and who changed what

Run a full portal audit, score data quality, and review the write audit log — which now records the person behind every change, the portal, and when. This is the first thing to run on a new client and the first thing to check when something looks off.

Try: Run a full audit of this portal and flag the data quality issues worth fixing first

run_auditget_data_quality_scoreget_write_audit_logget_breeze_ai_usage

Users, teams & portals

Access and portal management

See who has a seat in a portal and on which teams, invite or remove users, and manage the portals connected to the engine itself. Portal access for you is derived from these HubSpot seats — see Who Can See Which Portals above.

Try: Who has super admin access in this portal?

get_usersget_teamsinvite_userupdate_userremove_usercreate_teamupdate_teamdelete_teamlist_portalsselect_portalconnect_portalrename_portal

RevOps pipeline

Multi-step changes, with review and undo

The plan → approve → build → review → rollback flow described in Write Safety. Use it whenever you're building more than one or two things, because it's the only path that gives you a single-step undo.

Try: Plan a lead scoring setup with fit, engagement and total score properties

revops_planrevops_approverevops_buildrevops_reviewrevops_statusrevops_rollbackrevops_delete
A few tools have limited HubSpot API support

Five tools are currently unavailable regardless of portal: get_workflow_enrollments, get_journey_list, find_duplicates, get_integrations, and get_traffic_analytics. These hit HubSpot endpoints that are either deprecated, require a special reports scope not available in OAuth, or return 404 on all portals. All other tools are fully functional.

Write Safety, Undo & the RevOps Pipeline

Every change now records who made it

Write operations are logged with your email address. Ask Claude to show the write audit log to see what changed, in which portal, when — and by whom.

Undoing a mistake

Created a property with a typo, or in the wrong place? You can remove it without leaving Claude:

  • Archive the property lead_scoer on contacts

Archiving hides, it doesn't delete. HubSpot keeps archived properties and their data recoverable for 90 days.

If the property is used by a live workflow, list, form, email or sequence, the engine refuses and tells you what depends on it. That's deliberate — archiving a property an automation relies on breaks the automation. You can override with confirmation once you've checked.

Building several things at once? Use the pipeline

For multi-step work — a set of related properties, a new object, a pipeline with workflows — ask Claude to plan it rather than creating things one at a time. You get a plan to review before anything is written, and everything it created can be undone in one step:

1
Plan
Claude inspects the portal and writes out every step it intends to take, plus the assumptions it's making and anything risky. Nothing reaches HubSpot at this stage.
2
Approve
You read the plan and approve it. This is the gate — until you say yes, not a single change is made. Ask for edits and Claude revises the plan.
3
Build
Claude works through the approved steps in order, recording what happened to each one. If a step fails, the rest still report honestly rather than silently stopping.
4
Review
Claude checks what actually got created against what the plan promised, and flags anything that doesn't match — wrong type, missing field, unexpected result.
5
Rollback
Got it wrong? One command archives everything the plan created, in reverse order. This is the part you don't get when you create properties one at a time.
  • Plan a lead scoring setup: fit score, engagement score, total score, and a workflow that updates the total

Why it matters: properties created one at a time can only be archived one at a time. A plan can be rolled back as a unit — which is the difference between a five-second undo and half an hour of cleanup.

Troubleshooting

Problem Fix
"Sign in with your @scalestation.io account" You picked a personal Google account at the sign-in screen. Sign out of that account, or use the account chooser to pick your ScaleStation one.
"[your email] is not a user in [portal]" You don't hold a HubSpot seat in that portal. Access follows HubSpot — ask to be added as a user there. If your HubSpot login uses a different email from your Google account, that will also cause this: tell Kieran, since it's the most likely cause.
"Portal selection is ambiguous" You have several chats open on different portals and your session was reset. Just run select portal [name] to confirm which one this conversation is for. This is a safety feature — it prevents the server guessing wrong.
"Session expired. Please sign in with Google again." Sessions last 90 days. Re-run the sign-in (Desktop: reconnect the connector; Terminal: claude mcp login hubspot-engine in a real terminal window).
Sign-in can't be completed in the terminal If you see "stdin isn't a terminal", you're running the login inside a Claude session. It needs a real Terminal window — open Terminal.app or iTerm and run it there.
MCP server doesn't appear after setup Go to Settings → Connectors and confirm the server is listed. If not, add it again (Desktop) or re-run claude mcp add (Terminal). Restart Claude Code after adding.
Claude asks for permission before every tool call Settings → Connectors → your HubSpot connector → Tool permissions → Other tools → change Custom to Allow all.
list portals returns an empty list Check the response for signed_in_as. If it's missing you aren't signed in — reconnect. If it's there but the list is empty, no portals are connected yet: run connect_portal.
Opening /connect in a browser shows "This link is not valid" Correct — that page is no longer public. Ask Claude to run connect_portal and use the link it gives you. Links expire after 30 minutes.
HubSpot shows an "unreviewed app" warning during OAuth Expected. The RevOps Engine is a private internal app, not a marketplace listing. Click Connect app. Contact Kieran if unsure.
Write tools aren't showing up Select the portal in write mode: select portal [name] in read write mode. The portal must also have been connected with write access.
Connection drops mid-conversation The server may have redeployed. Restart Claude Code and re-run select portal. Connected portals survive redeploys; your sign-in usually does too.
Wrong portal is active Run list portals, then select portal [correct name]. Every response carries a _portal block showing which portal answered — check it if in doubt.
A specific tool returns an error or "not found" Five tools have known HubSpot API limitations and always fail: get_workflow_enrollments, get_journey_list, find_duplicates, get_integrations, get_traffic_analytics. Contact Kieran if something else errors.
Need help?

Ping Kieran on Slack or email kieran@scalestation.io. Include a screenshot of any error message — the new errors name the exact email and portal being checked, which usually identifies the problem immediately.