Skip to main content
Glama

update_webhook_endpoint

Destructive

Update a webhook endpoint: its URL, events, scope, sub-accounts, status or description. Every field is optional, but send at least one. Changing the scope to "selected" without profile_ids keeps the stored list. The signing secret is unchanged (rotate it with rotate_webhook_endpoint_secret).

ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

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

Input Schema

NameRequiredDescriptionDefault
idYesWebhook endpoint ID
urlNoHTTPS URL deliveries are sent to, at most 2000 characters. Private, loopback and link-local addresses are refused.
scopeNo"all" serves every sub-account, present and future, plus account-level events; "selected" serves only the sub-accounts in profile_ids
eventsNoSubscription patterns (at most 32): an exact event type, a family wildcard such as "proof.*", or "*". An empty list means every event.
statusNoA disabled endpoint receives nothing
descriptionNoYour own label for the endpoint, at most 200 characters; null clears it
profile_idsNoSub-account ids, 24 hex characters each, at most 100. At least one when scope is "selected"; none when scope is "all".

Output Schema

NameRequiredDescriptionDefault
idNoMongoDB ObjectId
urlNoHTTPS URL deliveries are POSTed to, at most 2000 characters. Private, loopback and link-local addresses are refused.
scopeNo`all` — every sub-account, present and future, plus account-level events. `selected` — only the sub-accounts in `profile_ids`; account-level events never reach it.
eventsNo
legacyNoThe endpoint converted from the account's single webhook URL — the one the deprecated `/me/settings` webhook block reads and writes.
statusNoA `disabled` endpoint receives nothing; its history and secret are kept.
created_atNo
secret_setNoWhether the endpoint has a signing secret (always true).
updated_atNo
descriptionNo
profile_idsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation risk is known, but the description adds non-obvious consequences: scope='selected' without profile_ids preserves the stored list rather than clearing it, and the signing secret survives the update. It stops short of stating what the destructiveHint covers (e.g. whether a new events list replaces or appends to the old one), leaving that inference to the caller.

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

Conciseness4/5

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

The first paragraph is dense, front-loaded, and every clause carries operational meaning. The second ACCESS paragraph is boilerplate for this server and longer than the functional description, diluting the front-loading slightly.

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

Completeness4/5

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

With an output schema, full parameter descriptions, and annotations present, the definition covers what an agent needs to construct a valid call and recover from an auth failure. The only real gap is the precise scope of the destructive update semantics, which the description gestures at but never states.

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 baseline would be 3, but the description adds a genuine cross-parameter interaction absent from the schema: the scope/profile_ids coupling and its no-op-on-omission behavior, plus the 'at least one field' rule that the schema's single required 'id' does not convey.

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?

Opens with a specific verb and resource and enumerates exactly which attributes are updatable (URL, events, scope, sub-accounts, status, description). It also names the sibling that handles the one adjacent concern it does not (rotate_webhook_endpoint_secret), so an agent can separate update from create/delete/rotate without opening another schema.

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

Usage Guidelines5/5

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

Gives an explicit call precondition ('Every field is optional, but send at least one'), a routing rule to the alternative for secret rotation, and a concrete prerequisite with recovery instructions for the auth failure path. The when-to-use, when-to-use-something-else, and what-to-do-if-blocked cases are all covered.

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.