Skip to main content
Glama
crisjonblvx

enrichrapi-mcp

by crisjonblvx

webhook_sign

Generate HMAC signatures for webhook bodies to validate or test webhook receivers, including Stripe-style timestamped signatures.

Instructions

Produce an HMAC signature for a webhook body.

Useful for testing webhook receivers, generating Stripe-style {timestamp}.{body} signatures, or signing outbound webhooks.

Args: body: Raw request body (use exact bytes for accuracy) secret: Webhook signing secret algorithm: sha1 | sha256 | sha512 (default sha256) encoding: hex | base64 | base64url (default hex) timestamp: Optional Unix timestamp string used in the template template: Format string with {body} and optional {timestamp}. Stripe uses "{timestamp}.{body}".

Returns: dict with keys: signature, algorithm, encoding, signing_string

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
bodyYes
secretYes
encodingNohex
templateNo{body}
algorithmNosha256
timestampNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation is HMAC signing, enumerates configurable algorithm/encoding/template behavior, and lists the exact return keys including signing_string. It also adds a practical accuracy note about using exact bytes for the body.

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 compact and well-structured: an intro sentence, a brief usage note, then an Args/Returns breakdown. Every sentence adds value, and the most important behavioral detail (HMAC signing) is front-loaded.

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?

For a tool with no output schema and no annotations, this description is complete: it documents every parameter, all defaults, return keys, and practical usage scenarios. An agent has enough information to invoke the tool correctly and interpret its result.

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?

Schema description coverage is 0%, and the description fully compensates by documenting all six parameters: body, secret, algorithm, encoding, timestamp, and template. It adds meaning beyond the schema with default values, allowed algorithm/encoding choices, template semantics, and the Stripe format example.

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 and resource: 'Produce an HMAC signature for a webhook body.' It clarifies the exact artifact being generated and distinguishes it from related utilities like webhook_verify, which would consume rather than produce signatures. The Stripe-style example further anchors the purpose.

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?

The description gives clear contexts for use: testing webhook receivers, generating Stripe-style signatures, and signing outbound webhooks. It does not explicitly state when not to use this tool or name alternatives like generate_hash, but the provided use cases are sufficient for an agent to decide.

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