Skip to main content
Glama

Add a webhook endpoint

create_webhook
Destructive

Instead of polling get_post, have Shager POST events to your HTTPS endpoint (a CRM, your agent's server): post.destination.published (data: post_id, destination_id, channel_id, network, account, format, remote_url, remote_post_id, published_at, notice), post.destination.failed (… error, unconfirmed), post.completed (post_id, status, counts, destinations[] with state and remote_url), approval.decided (post_id, approval_id, decision, post_status, reviewer.name, comment). Body: { id, type, created_at, data } (data always has workspace_id). The id is the same on every retry: dedupe on it. Order is not guaranteed. Headers: Shager-Event-Id, Shager-Event-Type and Shager-Signature: t=,v1=<hex HMAC-SHA256 of "." with the secret>. Verify it on the raw body in constant time and refuse timestamps older than 5 minutes. Answer 2xx within 10 s. Anything else (redirects included) is retried: 6 attempts over about a day. An endpoint whose every attempt fails for 3 days is turned off; a successful send_test_webhook turns it back on. Signing secret (whsec_…): the REST API returns it once, in this response. Through an AI assistant it is never returned: the person copies a fresh one in the app (the workspace's Settings → webhooks → "New signing key") and puts it in the receiving system. https only; private, local and credentialed URLs are refused. Up to 10 endpoints per workspace. Publishing never waits for webhooks. (Not available in an unclaimed sandbox.)

Input Schema

NameRequiredDescriptionDefault
urlYeshttps:// URL that receives the events.
eventsNoEvent types to send. Omit for every event, including ones added later.
descriptionNoWhat it is for (shown in the app).
workspace_idYesWorkspace id from list_workspaces

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Goes far beyond the annotations: retry policy (6 attempts over ~a day, redirects treated as failures), 10s 2xx window, auto-disable after 3 days of failure and re-enable via send_test_webhook, at-least-once delivery with a stable event id for dedupe, unordered delivery, and the HMAC signature scheme with a 5-minute replay window. It also discloses the secret-return behavior, which is the one thing an agent most needs to know. No contradiction with destructiveHint/openWorldHint/idempotentHint — the outbound POST side effects and at-least-once semantics are consistent with them.

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?

Purpose and the polling alternative are front-loaded in sentence one, and essentially every subsequent sentence carries operational information. It is, however, a dense unbroken block with no paragraph or list structure, and the payload field enumerations are verbose enough to slow scanning; minor restructuring would improve it without cutting content.

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?

With no output schema, the description correctly covers the return value: the signing secret is returned exactly once in this response via REST but never through an AI assistant, with the manual app-based workaround spelled out. Combined with delivery, retry, and verification behavior, an agent has everything needed to create the endpoint and tell the user what to do next.

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 schema carries the field definitions and baseline would be 3. The description adds real constraint semantics the schema lacks — the HTTPS-only rule and the refusal of private, local, and credentialed URLs for `url`, plus the per-workspace cap that bounds how many of these can exist — which meaningfully sharpens how the agent should construct `url`.

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 plus the alternative it replaces: 'Instead of polling get_post, have Shager POST events to your HTTPS endpoint'. It then enumerates the exact event types this endpoint will receive, so an agent can distinguish it from delete_webhook, list_webhooks, and send_test_webhook without reading the schema.

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?

Explicitly frames the use case as a push alternative to polling get_post, and gives hard constraints that gate invocation: https only, no private/local/credentialed URLs, max 10 endpoints per workspace, unavailable in an unclaimed sandbox. It does not explicitly point to list_webhooks for checking existing endpoints or delete_webhook for removal, so it stops short of full sibling routing.

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.

Resources