Skip to main content
Glama

Create a webhook

create_webhook
Destructive

Register a webhook endpoint to send selected Fourthwall shop events to a URL, enabling real-time order, product, and membership notifications.

Instructions

Rate limit: 100 requests / 10 seconds per shop. See Rate limiting.

Create a webhook

Input Schema

NameRequiredDescriptionDefault
urlNo
accountNoExact private shop profile label; not a provider identity or authorization proof.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete current native JSON body; cannot mix with native body flags or payload_file.
allowedTypesNo
payload_fileNoAbsolute regular non-symlink native JSON body file, at most1MiB. Cannot mix with payload or body flags.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed8 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "allowedTypes": {
      +    "items": {
      +      "enum": [
      +        "ORDER_PLACED",
      +        "ORDER_UPDATED",
      +        "GIFT_PURCHASE",
      +        "PRODUCT_CREATED",
      +        "PRODUCT_UPDATED",
      +        "DONATION",
      +        "SUBSCRIPTION_PURCHASED",
      +        "SUBSCRIPTION_EXPIRED",
      +        "SUBSCRIPTION_CHANGED",
      +        "NEWSLETTER_SUBSCRIBED",
      +        "THANK_YOU_SENT",
      +        "GIFT_DRAW_STARTED",
      +        "GIFT_DRAW_ENDED",
      +        "PROMOTION_CREATED",
      +        "PROMOTION_UPDATED",
      +        "PROMOTION_STATUS_CHANGED",
      +        "PLATFORM_APP_DISCONNECTED",
      +        "MEMBERSHIP_POST_UPSERTED",
      +        "MEMBERSHIP_SERIES_UPSERTED",
      +        "MEMBERSHIP_SERIES_DELETED",
      +        "MEMBERSHIP_TAG_CREATED",
      +        "MEMBERSHIP_TAG_UPDATED",
      +        "MEMBERSHIP_TAG_DELETED",
      +        "MEMBERSHIP_TIER_UPSERTED",
      +        "MEMBERSHIP_TIER_DELETED",
      +        "COLLECTION_UPDATED",
      +        "CART_ABANDONED_1H",
      +        "CART_ABANDONED_24H",
      +        "CART_ABANDONED_72H"
      +      ],
      +      "type": "string"
      +    },
      +    "type": "array"
      +  }
      +}
    • addedInput schema / properties / allowedTypes / $ref
      Added value: +"#/$defs/allowedTypes"
    • removedInput schema / properties / allowedTypes / items
      Removed value: -{
      -  "enum": [
      -    "ORDER_PLACED",
      -    "ORDER_UPDATED",
      -    "GIFT_PURCHASE",
      -    "PRODUCT_CREATED",
      -    "PRODUCT_UPDATED",
      -    "DONATION",
      -    "SUBSCRIPTION_PURCHASED",
      -    "SUBSCRIPTION_EXPIRED",
      -    "SUBSCRIPTION_CHANGED",
      -    "NEWSLETTER_SUBSCRIBED",
      -    "THANK_YOU_SENT",
      -    "GIFT_DRAW_STARTED",
      -    "GIFT_DRAW_ENDED",
      -    "PROMOTION_CREATED",
      -    "PROMOTION_UPDATED",
      -    "PROMOTION_STATUS_CHANGED",
      -    "PLATFORM_APP_DISCONNECTED",
      -    "MEMBERSHIP_POST_UPSERTED",
      -    "MEMBERSHIP_SERIES_UPSERTED",
      -    "MEMBERSHIP_SERIES_DELETED",
      -    "MEMBERSHIP_TAG_CREATED",
      -    "MEMBERSHIP_TAG_UPDATED",
      -    "MEMBERSHIP_TAG_DELETED",
      -    "MEMBERSHIP_TIER_UPSERTED",
      -    "MEMBERSHIP_TIER_DELETED",
      -    "COLLECTION_UPDATED",
      -    "CART_ABANDONED_1H",
      -    "CART_ABANDONED_24H",
      -    "CART_ABANDONED_72H"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / allowedTypes / type
      Removed value: -"array"
    • changedInput schema / properties / confirm / description
      Previous value: -"Explicit approval for this exact provider effect or local private-file operation."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / payload / properties / allowedTypes / $ref
      Added value: +"#/$defs/allowedTypes"
    • removedInput schema / properties / payload / properties / allowedTypes / items
      Removed value: -{
      -  "enum": [
      -    "ORDER_PLACED",
      -    "ORDER_UPDATED",
      -    "GIFT_PURCHASE",
      -    "PRODUCT_CREATED",
      -    "PRODUCT_UPDATED",
      -    "DONATION",
      -    "SUBSCRIPTION_PURCHASED",
      -    "SUBSCRIPTION_EXPIRED",
      -    "SUBSCRIPTION_CHANGED",
      -    "NEWSLETTER_SUBSCRIBED",
      -    "THANK_YOU_SENT",
      -    "GIFT_DRAW_STARTED",
      -    "GIFT_DRAW_ENDED",
      -    "PROMOTION_CREATED",
      -    "PROMOTION_UPDATED",
      -    "PROMOTION_STATUS_CHANGED",
      -    "PLATFORM_APP_DISCONNECTED",
      -    "MEMBERSHIP_POST_UPSERTED",
      -    "MEMBERSHIP_SERIES_UPSERTED",
      -    "MEMBERSHIP_SERIES_DELETED",
      -    "MEMBERSHIP_TAG_CREATED",
      -    "MEMBERSHIP_TAG_UPDATED",
      -    "MEMBERSHIP_TAG_DELETED",
      -    "MEMBERSHIP_TIER_UPSERTED",
      -    "MEMBERSHIP_TIER_DELETED",
      -    "COLLECTION_UPDATED",
      -    "CART_ABANDONED_1H",
      -    "CART_ABANDONED_24H",
      -    "CART_ABANDONED_72H"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / payload / properties / allowedTypes / type
      Removed value: -"array"
  2. First observedv2.0.0

TDQS

C2.3/5.0
Behavior3/5

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

Annotations already declare the write/destructive/openWorld profile, but the description adds a genuine behavioral fact the annotations lack: a rate limit of 100 requests / 10 seconds per shop. That is real added value, though it doesn't say what happens on creation, whether duplicate URLs are rejected, or whether the hook fires immediately.

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 rate-limit sentence is front-loaded and worth keeping, but the second sentence is pure tautology occupying half the description. Short overall, but not every sentence earns its place.

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

Completeness2/5

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

For a destructive, open-world mutation tool with a nested payload object, zero required top-level params, and no output schema, the description is far too thin. It omits authentication expectations, the allowedTypes semantics, and any notion of what a created webhook returns or how it is identified.

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

Parameters2/5

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

Six parameters (url, account, confirm, payload, allowedTypes, payload_file) with 67% schema coverage, and the description explains none of them. It does not clarify the required payload url/allowedTypes, the confirm-gating semantic, or the mutually exclusive payload vs payload_file paths.

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

Purpose2/5

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

The description's only purpose sentence, "Create a webhook," is a literal restatement of the tool name (create_webhook) and title (Create a webhook). It adds no verb/resource detail beyond what structured fields already convey and does nothing to distinguish it from siblings like update_webhook or delete_webhook.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as update_webhook for modifying existing hooks. The agent is left to infer that this creates a new hook rather than updating one.

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

Deploy Server

Other Tools