Skip to main content
Glama

verify_signature

Verify a webhook signature against a secret — 25 provider-exact schemes plus a generic HMAC mode, the same engine that computes ✓/✗ badges on captures. Covers HMAC-SHA256 (GitHub, Stripe, Svix/Standard Webhooks, Shopify-style base64, URL-signing Square/HubSpot/Trello…), ECDSA (SendGrid), RSA (Kick) and HMAC-MD5 (Patreon). Pass the scheme, the secret, the delivery's headers, and the BYTE-EXACT raw body (body_base64 for binary). The secret is used only for this one in-memory computation — never stored or logged. No bin needed. If verification fails, the #1 cause is a re-serialized body: point the real webhook at a capture bin (create_bin) to get the true raw bytes first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
urlNofull delivery URL — REQUIRED for square, hubspot and trello (the URL is part of the signed string)
bodyNoraw request body, byte-exact as the provider sent it (not re-serialized!)
methodNoHTTP method of the delivery (hubspot v3 signs it; default POST)
schemeYessignature scheme (usually the provider name); "hmac" = generic HMAC over the raw body
secretYessigning secret or key exactly as the provider shows it (sendgrid/kick: the PUBLIC verification key)
headersNothe delivery's HTTP headers — at least the signature/timestamp headers; names are case-insensitive
body_base64Noalternative to `body` for binary payloads: base64 of the raw body bytes
signature_headerNoscheme "hmac" only: which header carries the signature (default x-signature)

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the secret is used only in-memory and never stored or logged, that no bin is needed, and that failures often stem from re-serialized bodies. This is strong behavioral context for a verification tool, though it stops short of specifying whether the operation is network-free or the exact return shape.

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

Conciseness5/5

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

The description is one compact paragraph that front-loads purpose, then scope, then inputs, then the security guarantee, then a troubleshooting pointer. Every sentence earns its place; there is no filler or repetition of schema content.

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 no output schema, the description conveys the outcome via 'computes ✓/✗ badges' but doesn't explicitly state the return format. It covers supported schemes, required inputs, the body exactness gotcha, and the no-storage guarantee, which is fairly complete for a tool of this complexity. The only notable gaps are an explicit return-type statement and mentioning get_capture as the retrieval step after create_bin.

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?

The schema covers all parameters with descriptions, so the baseline is 3. The description adds value by stressing the byte-exact body requirement, which is critical for signature algorithms, and by grouping the 25 enum schemes into algorithm families. It complements rather than repeats the schema's detailed parameter descriptions.

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 description opens with a specific verb-resource pair ('Verify a webhook signature against a secret') and enumerates the scheme families (HMAC-SHA256, ECDSA, RSA, HMAC-MD5). It distinguishes itself from bin/capture siblings by saying 'No bin needed' and 'the same engine that computes badges on captures', so an agent can tell it apart without opening 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?

It gives an explicit how-to: pass the scheme, the secret, the delivery's headers, and the byte-exact raw body. It also names create_bin as the alternative when verification fails due to a re-serialized body, providing a concrete choose-other-tool rule. It doesn't enumerate exclusions for every sibling, but the guidance is clear and actionable.

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.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool targets a distinct action—create bin, read/list/wait for captures, simulate a delivery, configure a response, and verify a signature. The reading tools are differentiated by listing summaries vs. retrieving full captures vs. blocking for the next arrival, so agents should not misselect.

Naming Consistency5/5

All tool names follow a consistent lowercase snake_case verb_noun pattern: create_bin, get_capture, list_captures, set_response, verify_signature. Multi-word targets and wait_for are still predictable and match the same imperative style.

Tool Count5/5

Seven tools cover the webhook capture workflow without redundancy or bloat. Each tool serves a concrete stage in the create → capture → inspect → respond → verify loop, which is an ideal scope for an MCP server.

Completeness4/5

The core lifecycle is well covered: bins can be created, captures can be listed/read/waited for, test webhooks can be generated, responses configured, and signatures verified. Minor gaps exist around bin lifecycle management—there is no list_bins/get_bin/delete_bin or capture deletion—but auto-expiring anonymous bins make this a workable, not blocking, omission.

Resources