Skip to main content
Glama

Set webhook subscriptions

twin_set_webhooks
DestructiveIdempotent

Replace webhook subscriptions for QuickBooks, Jobber, or Housecall Pro in the local API twins, so you can test delivery signing and topic handling without real vendor accounts.

Instructions

Replace the webhook subscriptions, as an app would set them up in the vendor's developer settings. Each: { vendor: quickbooks | jobber | housecallpro, url, topics, clientId, clientSecret (signs deliveries: for Jobber the app's OAuth client secret, for QuickBooks its verifier token, for Housecall Pro its signing secret) }. quickbooks topics: qbo.customer.created.v1, qbo.customer.updated.v1, qbo.invoice.created.v1, qbo.invoice.updated.v1, qbo.payment.created.v1. jobber topics: CLIENT_CREATE, INVOICE_UPDATE. housecallpro topics: customer.created, customer.updated, job.created, job.scheduled, job.completed, job.paid, invoice.created, invoice.sent, invoice.payment.succeeded, invoice.paid. Answers as twin_webhooks does.

Input Schema

NameRequiredDescriptionDefault
subscriptionsYesEvery subscription to keep, shaped as above; [] removes them all

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.5.3
    • addedInput schema / properties / subscriptions / description
      Added value: +"Every subscription to keep, shaped as above; [] removes them all"
  2. First observedv0.5.2

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true; the description reinforces the replace-all behavior and adds genuinely new context by explaining that clientSecret signs deliveries and what that secret means per vendor (Jobber OAuth secret, QuickBooks verifier token, Housecall Pro signing secret). It also delegates return shape to twin_webhooks, which is useful, but says nothing about validation failures or whether secrets are stored/echoed back.

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?

Front-loaded with the action and the replacement contract; the long topic lists are dense but earn their place because the schema declares no item structure. The vendor/topic enumeration could be tightened into a table-like form, but nothing is wasted.

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?

For a destructive single-parameter tool with no output schema, the description covers the payload completely and points at twin_webhooks for the response shape. Gaps are minor: no mention of validation behavior, partial acceptance, or how the secrets are handled after set.

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

Parameters5/5

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

The schema's items are an empty object, so the description is the only source of the payload shape and it fully specifies vendor, url, topics, clientId and clientSecret, including per-vendor secret semantics. It also enumerates the valid topic strings for each vendor, which the schema does not do at all.

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

Purpose4/5

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

States a specific verb and resource ('Replace the webhook subscriptions') and scopes it as the app-side equivalent of the vendor's developer settings. The closing reference to twin_webhooks signals it is the write counterpart of the read sibling, though it never explicitly contrasts the two.

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

Usage Guidelines3/5

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

The full-replacement semantics and the '[] removes them all' idiom are stated, which implies when this tool is the right call. There is no explicit 'use twin_webhooks to read' or guidance on ordering, prerequisites, or what happens if a subscription is malformed.

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