Skip to main content
Glama

PumpGTM MCP server

Set up HubSpot or webhook signups

get_webhook_play_setup
Read-onlyIdempotent

Read setup instructions for HubSpot form signups or a generic Webhook Play. Omit playId for creation links; pass it for the setup URL, relevant OAuth or webhook instructions, test steps, troubleshooting and up to five saved contacts. Explain one step at a time in plain language. Returns OAuth setup guidance for HubSpot, without claiming an existing connection or configuring HubSpot automatically. Never returns credentials, creates a Play, activates a sequence, enrolls or sends. Use this for connecting HubSpot/forms, testing signup intake, or diagnosing webhook setup. Returns createLinks (and instructions without playId); with playId also play, setupUrl and assistantInstructions (HubSpot) or guide and credentialInstructions (webhook), sequence, savedContacts and evidenceLimit.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_webhook_play_setup"
  }
}

Input Schema

NameRequiredDescriptionDefault
playIdNoThe HubSpot or Webhook signups Play to set up, from get_workspace or the Play created from createLinks. Omit to get the links for creating one.
workspaceIdNoA teammate's workspace you may manage: an active workspace ID from list_team_workspaces. Omit for your own workspace. Supply on every call for a teammate.

Output Schema

NameRequiredDescriptionDefault
playNoWith playId: the Play being set up.
guideNoWebhook Play: setup steps, request format, test steps and troubleshooting.
sequenceNoWith playId: the Play's welcome sequences and whether each is approved.
setupUrlNoHubSpot Play: the page where the customer connects HubSpot with OAuth.
createLinksYesLinks for creating a signup Play.
instructionsNoWithout playId: how to choose and create the Play.
evidenceLimitNoWhat savedContacts can and can't prove.
savedContactsNoWith playId: up to five most recent signups the Play saved; match the exact test contact.
assistantInstructionsNoHubSpot Play: the steps to walk the customer through, one at a time.
credentialInstructionsNoWebhook Play: how the owner or admin stores the workspace key; never ask for it in chat.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / playId / description
      Added value: +"The HubSpot or Webhook signups Play to set up, from get_workspace or the Play created from createLinks. Omit to get the links for creating one."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "assistantInstructions": {
      +      "description": "HubSpot Play: the steps to walk the customer through, one at a time.",
      +      "type": "string"
      +    },
      +    "createLinks": {
      +      "additionalProperties": {},
      +      "description": "Links for creating a signup Play.",
      +      "properties": {
      +        "hubspot": {
      +          "description": "Opens a new HubSpot form signups Play.",
      +          "type": "string"
      +        },
      +        "webhook": {
      +          "description": "Opens a new Webhook signups Play for other sources.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "hubspot",
      +        "webhook"
      +      ],
      +      "type": "object"
      +    },
      +    "credentialInstructions": {
      +      "description": "Webhook Play: how the owner or admin stores the workspace key; never ask for it in chat.",
      +      "type": "string"
      +    },
      +    "evidenceLimit": {
      +      "description": "What savedContacts can and can't prove.",
      +      "type": "string"
      +    },
      +    "guide": {
      +      "additionalProperties": {},
      +      "description": "Webhook Play: setup steps, request format, test steps and troubleshooting.",
      +      "properties": {
      +        "endpoint": {
      +          "description": "The URL signups are sent to.",
      +          "type": "string"
      +        },
      +        "errors": {
      +          "description": "Troubleshooting for each error.",
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "code": {
      +                "description": "The HTTP status or error code returned.",
      +                "type": "string"
      +              },
      +              "fix": {
      +                "description": "How to fix it.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "code",
      +              "fix"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "example": {
      +          "additionalProperties": {},
      +          "description": "An example JSON body (eventId, expectedRevision, name, email, dryRun).",
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "fields": {
      +          "description": "The body fields to send.",
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "help": {
      +                "description": "Why it matters and how to fill it.",
      +                "type": "string"
      +              },
      +              "key": {
      +                "description": "The body field name.",
      +                "type": "string"
      +              },
      +              "kind": {
      +                "description": "Contact property or Static value.",
      +                "type": "string"
      +              },
      +              "value": {
      +                "description": "What to map into it, or the static value to send.",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "key",
      +              "value",
      +              "kind",
      +              "help"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "headers": {
      +          "additionalProperties": {
      +            "type": "string"
      +          },
      +          "description": "Request headers to send; the Authorization value is a placeholder for the workspace key, never a real key.",
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "method": {
      +          "description": "The HTTP method to use (POST).",
      +          "type": "string"
      +        },
      +        "notes": {
      +          "description": "Rules about retries, identities and what an accepted event proves.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "setupUrl": {
      +          "description": "The product page for this webhook setup.",
      +          "type": "string"
      +        },
      +        "steps": {
      +          "description": "Setup and test steps, in order.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "endpoint",
      +        "method",
      +        "setupUrl",
      +        "headers",
      +        "example",
      +        "fields",
      +        "steps",
      +        "notes",
      +        "errors"
      +      ],
      +      "type": "object"
      +    },
      +    "instructions": {
      +      "description": "Without playId: how to choose and create the Play.",
      +      "type": "string"
      +    },
      +    "play": {
      +      "additionalProperties": {},
      +      "description": "With playId: the Play being set up.",
      +      "properties": {
      +        "id": {
      +          "description": "The Play's id.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "The Play's name.",
      +          "type": "string"
      +        },
      +        "revision": {
      +          "description": "The Play's current revision; webhook senders send it as expectedRevision.",
      +          "type": "number"
      +        },
      +        "status": {
      +          "description": "active, experimental, paused or archived; it must be active to receive signups.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "id",
      +        "name",
      +        "status",
      +        "revision"
      +      ],
      +      "type": "object"
      +    },
      +    "savedContacts": {
      +      "description": "With playId: up to five most recent signups the Play saved; match the exact test contact.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "decision": {
      +            "description": "undecided (waiting in review), good_fit or not_a_fit.",
      +            "type": "string"
      +          },
      +          "email": {
      +            "description": "Their email; null when none was saved.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "enrolled": {
      +            "description": "True when they were added to the Sequence.",
      +            "type": "boolean"
      +          },
      +          "name": {
      +            "description": "The contact's name as saved.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "email",
      +          "decision",
      +          "enrolled"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "sequence": {
      +      "description": "With playId: the Play's welcome sequences and whether each is approved.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "approved": {
      +            "description": "False when its current messages have never been approved; it then sends nothing.",
      +            "type": "boolean"
      +          },
      +          "id": {
      +            "description": "The Sequence's id.",
      +            "type": "string"
      +          },
      +          "name": {
      +            "description": "Its name.",
      +            "type": "string"
      +          },
      +          "status": {
      +            "description": "Its current status, such as active or paused.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "status",
      +          "approved"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "setupUrl": {
      +      "description": "HubSpot Play: the page where the customer connects HubSpot with OAuth.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "createLinks"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnly/idempotent annotations, it discloses hard boundaries ('Never returns credentials, creates a Play, activates a sequence, enrolls or sends') and a subtle caveat that HubSpot OAuth guidance is provided 'without claiming an existing connection or configuring HubSpot automatically.' It also notes the five-contact cap and evidenceLimit, which are behavioral facts an agent could not infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the playId rule are front-loaded and earn their space, but the final sentence enumerates return fields (createLinks, play, setupUrl, assistantInstructions, guide, credentialInstructions, savedContacts, evidenceLimit) that duplicate the existing output schema. The single dense paragraph also repeats the HubSpot OAuth point twice, adding bulk without new information.

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 read-only, two-parameter setup tool with an output schema, the description covers purpose, branch behavior, safety boundaries, and call sequencing guidance ('Explain one step at a time in plain language'). An agent has everything needed to invoke it correctly and interpret the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds conditional meaning: omitting playId yields creation links while supplying it yields setupUrl and instructions, and it explains that credentials are never returned. This goes beyond the schema's field-level text by tying each branch to a different response shape.

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 opening sentence states a specific verb and resource ('Read setup instructions for HubSpot form signups or a generic Webhook Play') and scopes it to two named play types, which separates it from sibling tools like get_x_play_review or preview_workspace_setup.

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 gives concrete use cases ('connecting HubSpot/forms, testing signup intake, or diagnosing webhook setup') and a clear conditional rule for playId (omit for creation links, pass for setup URL and instructions). It does not name an explicit alternative for creating or activating a Play beyond saying it never does those things, so it falls short of a full when/when-not routing statement.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.