RevClamp MCP Server
Server Details
Streamable HTTP JSON-RPC 2.0 MCP Server exposing 9 deterministic B2B SaaS revenue leak detection, Visa CE 3.0 dispute evidence linting, and webhook security tools.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 9 tools
Each tool targets a distinct operation: portfolio audit vs. single-customer ghost usage, dispute evidence linting vs. CE 3.0 staging, Net-terms reconciliation vs. EU VAT validation, and webhook replay simulation vs. signature verification. The descriptions explicitly cross-reference sibling tools to guide selection, leaving little overlap or ambiguity.
All tools use the same revclamp_ prefix followed by snake_case verb_noun-style names. The convention is predictable throughout, even for longer names like revclamp_stage_stripe_dispute_ce3 and revclamp_validate_eu_vat_vies.
Nine tools is well within the 3-15 range and each tool maps to a distinct diagnostic, compliance, or reconciliation capability. No tool appears redundant or merely decorative for the stated RevClamp domain.
The surface covers the core RevClamp workflows: revenue leakage audit, ROI planning, ghost usage evaluation, dispute evidence linting/staging, Net-terms reconciliation, VAT validation, and webhook simulation/verification. Minor gaps exist around explicit list/retrieve operations for customers, subscriptions, or disputes, but the primary read-only diagnostic lifecycle is well covered.
Available Tools
9 toolsrevclamp_audit_revenue_leakageAudit B2B Revenue Leakage & Dispute ReadinessARead-onlyIdempotentInspect
Run a deterministic 90-day B2B revenue leakage and chargeback readiness audit across Stripe subscriptions, AI/API usage telemetry events, and open disputes. Executes as a 100% read-only, stateless diagnostic with zero external Stripe mutations. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, dunningGracePeriodDays, costPerEventCents, and audit (scannedCustomers, scannedEvents, ghostLeakEventsCount, affectedCustomersCount, estimatedBleedUsd, disputesEligibleForAutoEvidence). Use this tool for portfolio-wide multi-customer audits; use revclamp_evaluate_ghost_usage for single-customer entitlement checks or revclamp_stage_stripe_dispute_ce3 to build a single dispute's Visa CE 3.0 evidence bundle.
| Name | Required | Description | Default |
|---|---|---|---|
| disputes | No | Optional array of up to 50 Stripe dispute objects (each with id like 'du_123', customer, amount in cents, reason such as 'fraudulent', and status such as 'needs_response'). | |
| customers | No | Optional array of up to 50 Stripe customer snapshots (each with id like 'cus_123', optional email, subscriptions array or list object, and subscriptionsHasMore: false). Omit to run against workspace telemetry or deterministic sandbox fixtures. | |
| usageEvents | No | Optional array of up to 200 product/AI API usage telemetry events (each with stripe_customer_id or email, event_name, and occurredAtSec Unix timestamp in seconds). | |
| costPerEventCents | No | Estimated marginal compute or API cost per leaked usage event in integer USD cents (valid range: 1 to 10000, default: 142 i.e. $1.42/event). | |
| dunningGracePeriodDays | No | Custom dunning grace window in integer days (valid range: 0 to 14, default: 3) allowed after latest_invoice_failed_at before flagging past_due subscriptions as unpaid ghost usage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is structured; the description nevertheless adds that execution is stateless and performs zero external Stripe mutations, which is real context beyond the annotations. It omits error/runtime behavior and any limits on execution time for large arrays, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the verb and scope, then behavior, then routing guidance. The enumerated return fields are long but earn their place since no output schema exists; only the list of scanned/derived counters borders on verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema present, the description compensates by naming the structuredContent keys an agent will receive, and the schema already documents all five optional inputs including the omit-to-use-fixtures fallback. Combined with sibling routing, an agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries a detailed description with ranges and defaults (costPerEventCents 1-10000 default 142, dunningGracePeriodDays 0-14 default 3), so the schema does the heavy lifting. The description adds no additional parameter semantics beyond echoing those two field names in the return payload.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource set ('Run a deterministic 90-day B2B revenue leakage and chargeback readiness audit across Stripe subscriptions, AI/API usage telemetry events, and open disputes'), including the exact data sources scanned. An agent can tell this apart from the single-customer and single-dispute siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly scopes usage ('portfolio-wide multi-customer audits') and names two alternatives with the condition that selects each: revclamp_evaluate_ghost_usage for single-customer entitlement checks and revclamp_stage_stripe_dispute_ce3 for a single dispute's CE 3.0 bundle. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_calculate_roi_and_plan_fitCalculate B2B 0% Take-Rate ROI & Optimal Plan FitARead-onlyIdempotentInspect
Deterministically calculate monthly and annual B2B margin savings using exact integer USD cents when replacing a 25%-30% contingency chargeback agency with RevClamp flat-rate 0% commission plans ($19 Starter, $59 Growth, $199 Scale). Evaluates monthlyWonDisputeUsd, monthlyGhostBleedUsd, contingencyTakeRatePercent, and monthlyUsageEvents to recommend the optimal tier. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, recommendedTier, annualNetMarginSavedUsd, roiMultiple, and calculation.
| Name | Required | Description | Default |
|---|---|---|---|
| monthlyUsageEvents | No | Monthly verified usage events across your workspace (integer 0 to 50000000, default: 250000) used to recommend Starter (<=100k), Growth (<=1M), or Scale (<=5M). | |
| monthlyGhostBleedUsd | No | Monthly unpaid AI/API or SaaS usage bleed stopped by RevClamp basil entitlement guards in USD (valid range: 0 to 10000000, default: 600). | |
| monthlyWonDisputeUsd | No | Monthly won Stripe chargeback volume in USD (valid range: 0 to 10000000, default: 10000) subject to legacy agency take-rate fees. | |
| contingencyTakeRatePercent | No | Competitor chargeback agency contingency commission percentage (valid range: 1 to 50, default: 25 for 25% take-rate tools). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds useful behavioral context by stating the calculation is deterministic, uses exact integer USD cents, and returns structuredContent fields including statelessEphemeralAudit and calculation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core calculation and plan-fit purpose, then covers inputs and return fields in three efficient sentences. The output field list is justified because no output schema exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The input schema is fully described, annotations cover safety and idempotency, and because there is no output schema the description usefully enumerates the key returned structuredContent fields. Nothing essential for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents ranges, defaults, and tier thresholds for all four parameters. The description repeats the parameter names and their role in recommending a tier, but adds no parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: calculate monthly and annual B2B margin savings and recommend the optimal RevClamp plan tier. It distinguishes the tool from sibling audit/evaluate tools by focusing on ROI calculation and plan fit rather than leakage auditing or usage evaluation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear usage context: replacing a 25%-30% contingency chargeback agency with RevClamp flat-rate plans. It does not explicitly name when-not to use it or name sibling alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_evaluate_ghost_usageEvaluate Single-Customer Stripe Basil Ghost UsageARead-onlyIdempotentInspect
Evaluate whether a specific customer's AI or API usage event constitutes unpaid ghost usage across multi-subscription Stripe 2025-03-31.basil state, enforcing fail-closed pagination (has_more must be explicitly false) and configurable 0-14 day dunning grace windows. Executes as a stateless, read-only entitlement evaluator with zero side effects. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, and evaluation (isGhostLeak, isGhostUsage, reason). Use this tool for real-time per-customer entitlement gating; use revclamp_audit_revenue_leakage for batch multi-customer portfolio audits.
| Name | Required | Description | Default |
|---|---|---|---|
| customerId | Yes | Required Stripe customer identifier to evaluate (format example: 'cus_9s6XKzkNRiz8i3', max 64 chars). | |
| occurredAtSec | No | Optional alias for usageTimestampSec: Unix epoch timestamp in integer seconds (e.g. 1761264000) when the usage event occurred (used when usageTimestampSec is omitted). | |
| subscriptions | Yes | Required Stripe customer subscriptions payload: either a Stripe list object ({ data: [...], has_more: false }) or a raw array of up to 50 subscription objects containing id, status ('active', 'trialing', 'past_due', 'canceled', 'unpaid'), current_period_end, or items.data[].current_period_end in Unix seconds. | |
| usageTimestampSec | No | Optional Unix epoch timestamp in integer seconds (e.g. 1761264000) when the AI/API usage event occurred (defaults to current server Unix timestamp if omitted). | |
| subscriptionsHasMore | No | Pagination completeness flag (boolean). Must be explicitly set to false when passing a raw subscriptions array so RevClamp can verify no active subscription was truncated on a later page. | |
| dunningGracePeriodDays | No | Dunning grace window in integer days (valid range: 0 to 14, default: 3) after latest_invoice_failed_at during which past_due subscriptions remain entitled. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description wisely focuses on what annotations cannot express: fail-closed pagination semantics ('has_more must be explicitly false') and the 0-14 day dunning grace window that keeps past_due subscriptions entitled. It also enumerates the structuredContent return keys. Minor deduction because it restates 'stateless, read-only, zero side effects', which the annotations already declare.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the evaluation purpose, then the fail-closed/dunning behavior, then the return shape and sibling routing. It is dense and jargon-heavy ('Stripe 2025-03-31.basil'), but nearly every clause carries operational meaning and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned structuredContent keys (ok, mode, statelessEphemeralAudit, tenantId, evaluation fields). Combined with 100% schema coverage and rich annotations, an agent has enough to call it correctly; only the failure mode for a truncated page (error vs. ok=false) is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including defaults and ranges, making 3 the baseline. The description does add one cross-parameter constraint (raw arrays require subscriptionsHasMore=false to avoid truncation) and the 0-14 day grace window, but these largely restate what the individual field descriptions say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: evaluates whether one customer's AI/API usage event is 'unpaid ghost usage' against multi-subscription Stripe basil state. It also names its scope (per-customer, real-time) explicitly against the batch sibling revclamp_audit_revenue_leakage, so it is distinguishable 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence gives an explicit routing rule: 'use this tool for real-time per-customer entitlement gating; use revclamp_audit_revenue_leakage for batch multi-customer portfolio audits.' This is a direct when-to-use plus named alternative, which is exactly what an agent needs among nine revclamp siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_lint_dispute_evidenceStripe Dispute Evidence UTF-16 & CE 3.0 Completeness LinterARead-onlyIdempotentInspect
Deterministically lint a Stripe dispute evidence[access_activity_log] payload against Stripe's 18,000 UTF-16 code unit (String.prototype.length) ceiling, UTF-8 byte length, non-destructive --- BEGIN REVCLAMP CE3 EVIDENCE --- / --- END REVCLAMP CE3 EVIDENCE --- delimiter markers, existing merchant note preservation, and Visa Compelling Evidence 3.0 (CE 3.0) prior-charge (>= 2) + IP/device overlap qualification. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, lint, utf16CodeUnits, maxUtf16Ceiling, remainingUtf16Units, withinCeiling, utf8Bytes, nonDestructiveMarkersPresent, merchantNotesPreserved, priorMatchedCount, hasIpMatch, hasDeviceMatch, ce3RubricPassed, and overallVerdict.
| Name | Required | Description | Default |
|---|---|---|---|
| preset | No | Scenario preset to evaluate when custom evidenceLogText is omitted (default: 'valid_ce3_non_destructive'). | |
| hasIpMatch | No | Whether the disputed charge IPv4/IPv6 address matches the historical undisputed charges. | |
| hasDeviceMatch | No | Whether the disputed charge device_id fingerprint matches the historical undisputed charges. | |
| evidenceLogText | No | Merged or candidate Stripe dispute evidence[access_activity_log] payload evaluated against the 18,000 UTF-16 code unit ceiling and non-destructive delimiter markers. | |
| priorMatchedCount | No | Number of prior undisputed Stripe charges (120d-365d old) with matching customer_id and IP/device fingerprint (Visa CE 3.0 requires >= 2). | |
| existingMerchantNotes | No | Existing human AE/support notes inside evidence[access_activity_log] that must be preserved. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, closed-world, non-destructive, so the description correctly spends its words elsewhere: it asserts determinism, that linting is non-destructive to merchant notes and markers, and enumerates the structuredContent keys returned. With no output schema present, that return-field disclosure carries real weight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The intent is front-loaded in the first clause, but the body is a single sprawling run-on sentence that ends in a 17-item comma-separated return-field list. It is dense rather than wasteful, yet the enumeration should have been a structured clause, hurting scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations describing returns, the description supplies the verdict keys an agent needs to interpret results, plus the domain rule set. It stops short of explaining the preset/custom interaction and the relationship to the staging sibling, but nothing essential for calling it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning: it clarifies the ceiling is measured as String.prototype.length (UTF-16 code units, not bytes), names the exact --- BEGIN/END REVCLAMP CE3 EVIDENCE --- delimiters the evidenceLogText must contain, and states the CE 3.0 '>= 2 prior charges + IP/device overlap' rule that governs priorMatchedCount/hasIpMatch/hasDeviceMatch.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lint) and a precisely-scoped resource (Stripe dispute evidence[access_activity_log] payload), and enumerates exactly which checks it runs (UTF-16 ceiling, UTF-8 bytes, delimiters, note preservation, CE 3.0 qualification). It never distinguishes itself from the very similar sibling revclamp_stage_stripe_dispute_ce3, so an agent must open both schemas to know which to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the checks listed make it obvious this is a pre-submission validation step. There is no explicit 'call this before X' guidance and no exclusion telling the agent when to prefer revclamp_stage_stripe_dispute_ce3 over this linter, which is the key routing ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_reconcile_b2b_net_termsReconcile B2B Wholesale Net-15/30/60 Deposits & Credit NotesARead-onlyIdempotentInspect
Reconcile B2B wholesale Net-15, Net-30, and Net-60 invoice deposits, partial payments, and credit notes using exact integer minor-unit (EUR/USD cent) arithmetic with zero IEEE-754 floating-point drift. Executes as a pure, stateless, read-only financial reconciliation function. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, and reconciliation (state, status, fulfillmentHold, releaseHoldAction, requiredDepositCents, remainingBalanceCents, creditDueCents, overpaidWarning, orderTag). Use this tool for B2B wholesale order deposit gating and Net-terms balance calculation; use revclamp_validate_eu_vat_vies for cross-border EU VAT number validation.
| Name | Required | Description | Default |
|---|---|---|---|
| orderId | Yes | Required B2B wholesale order or invoice identifier (e.g. 'gid://shopify/Order/908812' or 'ORD-2026-9088', max 64 chars). | |
| creditNoteCents | No | Optional post-invoice credit notes or return adjustments in integer cents (valid range: 0 to totalOrderCents, default: 0; singular alias for creditNotesCents). | |
| paidAmountCents | Yes | Required cumulative amount collected from the buyer in non-negative integer cents (e.g. 75000 for 750.00 EUR; must be >= 0). | |
| totalOrderCents | Yes | Required gross invoice total in positive integer minor currency units / cents (e.g. 250000 for 2,500.00 EUR; must be > 0). | |
| creditNotesCents | No | Optional post-invoice credit notes or return adjustments in integer cents (valid range: 0 to totalOrderCents, default: 0; plural alias for creditNoteCents). | |
| paymentTermsDays | No | Optional B2B net payment terms maturity window in integer days (allowed values: 15, 30, or 60 for Net-15, Net-30, or Net-60; default: 30). | |
| requiredDepositCents | No | Optional explicit upfront deposit threshold in integer cents (valid range: 0 to totalOrderCents). Overrides requiredDepositPercent when provided. | |
| requiredDepositPercent | No | Optional upfront deposit percentage required before releasing warehouse fulfillment hold (valid range: 0 to 100, default: 30 i.e. 30% upfront deposit). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety bar is lower; the description still adds real value by declaring the function pure/stateless with no floating-point drift and by enumerating the structuredContent fields returned. It stops short of describing preconditions (e.g. what inputs produce an error versus an ok=false reconciliation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the arithmetic guarantee before the field enumeration; every sentence is informational. The long parenthetical list of return fields and modes is dense but earns its place given there is no output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a stateless, read-only calculator with a fully documented 8-param schema, a complete annotation set, and no output schema, the description covers purpose, usage routing, computational semantics, and the shape of the response. An agent has everything needed to invoke it correctly and interpret the result envelope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with every parameter documented including ranges, defaults, and the singular/plural credit-note alias, so the schema carries the load. The description only reinforces the unit convention (integer cents, no floats) and adds no syntax or interaction rules beyond it. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: reconcile B2B wholesale Net-15/30/60 invoice deposits, partial payments, and credit notes, and adds the distinguishing trait of exact integer minor-unit arithmetic. It explicitly separates itself from the VAT sibling, so an agent can tell the two apart without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the intended use case ('B2B wholesale order deposit gating and Net-terms balance calculation') and routes the agent away to revclamp_validate_eu_vat_vies for VAT validation. It does not address the other seven siblings (disputes, ROI, ghost usage, webhooks), so the exclusion guidance is partial rather than complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_simulate_webhook_replaySimulate Webhook Replay & Out-of-Order State MachineARead-onlyIdempotentInspect
Deterministically evaluate an ordered or out-of-order sequence of 1-10 Stripe/Shopify/RevClamp subscription lifecycle webhooks against a 72-hour idempotency deduplication Set (eventId), a configurable idempotencyWindowSec (60s-2592000s, default: 259200s / 72h), and a monotonic transition timestamp guard (event.createdSec >= lastAppliedCreatedSec). Compares RevClamp's monotonic FSM against a naive overwrite-on-arrival handler to detect resurrected canceled subscriptions, stale tier downgrades, and duplicate retry side-effects. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, simulation, steps, finalStatus, finalTier, finalEntitlementDecision, naiveFinalStatus, and naiveHandlerBug.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | Optional custom array of 1 to 10 webhook events ({ eventId, eventType, createdSec, subscriptionStatus, tier, currentPeriodEndSec }) in arrival order. | |
| nowSec | No | Reference evaluation timestamp in Unix seconds used to check the 72-hour idempotency window. | |
| scenarioPreset | No | Scenario preset to evaluate when custom events are omitted (default: 'out_of_order_stale_update_after_cancel'). | |
| idempotencyWindowSec | No | Deduplication and replay-acceptance window in seconds (valid range: 60 to 2592000, default: 259200 for 72 hours). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the bar is lower, but the description adds real behavioral context: deterministic evaluation, stateless ephemeral audit, and the specific bug classes detected (resurrected canceled subscriptions, stale downgrades, duplicate retry side-effects). It stops short of stating rate limits or cost, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and mechanism, and every clause carries substance. It is two very dense, long sentences, however, so it is packed rather than lean — slightly harder to scan than an ideal definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description enumerates the structuredContent fields (ok, mode, steps, finalStatus, naiveFinalStatus, naiveHandlerBug, etc.), so an agent knows both inputs and outputs. For a 4-param, read-only simulation tool this is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description still contributes by explaining the semantics behind the params — the dedup Set is keyed on eventId, the guard compares event.createdSec against lastAppliedCreatedSec, and it restates the window range/default and 1-10 event bound. That adds interpretive value beyond the field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (simulate/replay evaluation) and resource (webhook lifecycle event sequences) plus the exact mechanisms applied: idempotency dedup Set, configurable window, and monotonic timestamp guard. It also names the contrast target (naive overwrite-on-arrival handler), which makes the tool's role unmistakable versus siblings like verify_webhook_signature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the context (evaluating ordered/out-of-order webhook sequences against a dedup window) but never states when to choose this over revclamp_verify_webhook_signature or other siblings, and gives no explicit exclusions. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_stage_stripe_dispute_ce3Stage Visa CE 3.0 Stripe Dispute Evidence DraftARead-onlyIdempotentInspect
Evaluate Visa Compelling Evidence 3.0 (CE 3.0) qualification across 120-to-365-day historical charges (requiring at least 2 settled, non-refunded, non-disputed prior transactions sharing IP address, device fingerprint, or billing email) and assemble a non-destructive Stripe dispute evidence draft with submit hardcoded to false. Executes as a pure read-only staging computation that never auto-submits to card networks. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, submitForcedFalse, ce3Qualification, and drawer (including stripeUpdateParams with submit: false and merged access_activity_log). Use this tool for single-dispute CE 3.0 qualification and evidence staging; use revclamp_audit_revenue_leakage for portfolio-wide dispute readiness counts.
| Name | Required | Description | Default |
|---|---|---|---|
| disputeId | No | Stripe dispute identifier being staged (format example: 'du_1QxyzEnterpriseDispute01', default: 'du_mcp_staged_01', max 64 chars). | |
| customerId | No | Stripe customer identifier associated with the disputed charge (format example: 'cus_enterprise_88', default: 'cus_mcp_enterprise_01', max 64 chars). | |
| usageEvents | No | Optional array of up to 200 customer product/API usage telemetry events (each with occurredAtSec Unix seconds, stripe_customer_id, and event_name) for append-only access_activity_log staging. | |
| disputeReason | No | Stripe dispute reason code (e.g. 'fraudulent', 'unrecognized', 'subscription_canceled'; default: 'fraudulent'; Visa CE 3.0 applies to 'fraudulent' disputes). | |
| priorTransactions | No | Optional array of up to 50 historical Stripe charge objects (each with id, status: 'succeeded', disputed: false, refunded: false, occurredAtSec 120-365 days prior to disputedTransaction, email, ip_address, and device_id). | |
| disputedTransaction | No | Optional disputed charge snapshot object containing id (e.g. 'ch_disputed_01'), occurredAtSec (Unix seconds), customer_id, email, ip_address, and device_id. | |
| existingUncategorizedText | No | Optional existing merchant evidence notes in Stripe evidence.uncategorized_text or access_activity_log (up to 18,000 chars) to preserve via append-only merge without overwriting. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is pre-covered; the description adds real value by disclosing that submit is hardcoded to false, that nothing is auto-submitted to card networks, and that existing evidence text is merged append-only rather than overwritten. It also enumerates the returned structuredContent keys, compensating for the absent output schema, though it omits any failure/qualification-miss behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose then behavior then routing, so the agent gets the decision-relevant facts first. The opening sentence is dense with stacked qualifiers and could be split, but no sentence is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, nested-object tool with no output schema, the description supplies the qualification rule, the non-destructive guarantee, the submit=false safeguard, the return field list, and the sibling routing rule. Everything an agent needs to select and invoke it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage the schema already documents each parameter; the description goes beyond it by stating the CE 3.0 qualification semantics that bind priorTransactions and disputedTransaction together (shared IP, device fingerprint, or billing email within the 120-365-day window). It does not clarify the interaction between usageEvents and existingUncategorizedText in the merge.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (evaluate + stage/assemble) and resource (Visa CE 3.0 qualification and Stripe dispute evidence draft), including the exact qualification rule (120-365-day charges, 2+ settled non-refunded non-disputed priors sharing IP/device/email). It explicitly distinguishes itself from revclamp_audit_revenue_leakage by scope (single dispute vs portfolio-wide counts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this tool for single-dispute CE 3.0 qualification and evidence staging; use revclamp_audit_revenue_leakage for portfolio-wide dispute readiness counts' — a clear when-to-use plus one named alternative. It does not address the closely related sibling revclamp_lint_dispute_evidence, leaving one plausible alternative unpartitioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_validate_eu_vat_viesValidate EU/XI B2B VAT ID & VIES Reverse-Charge StateARead-onlyIdempotentInspect
Normalize EU-27 and Northern Ireland (XI) B2B VAT identifiers (including mandatory Greece ISO-3166 GR to EL prefix normalization) and evaluate cross-border 0% VAT reverse-charge eligibility, VIES consultation evidence, or MS_UNAVAILABLE circuit-breaker fulfillment hold actions. Read-only and non-destructive; supports deterministic simulation modes ('VALID', 'INVALID', 'MS_UNAVAILABLE') or real-time European Commission VIES SOAP/REST lookup ('LIVE'). Returns structuredContent containing ok, mode, statelessEphemeralAudit, simulatedViesLookup, tenantId, normalizedVat, reverseChargeEligible, and viesDecision (status, action, zeroRateAllowed, consultationId). Use this tool for EU/XI VAT tax compliance; use revclamp_reconcile_b2b_net_terms for wholesale Net-15/30/60 deposit and credit-note accounting.
| Name | Required | Description | Default |
|---|---|---|---|
| viesMode | No | VIES evaluation mode: 'VALID' (deterministic active VAT simulation, default), 'INVALID' (deterministic rejected VAT simulation), 'MS_UNAVAILABLE' (deterministic member-state outage circuit-breaker simulation), or 'LIVE' (real-time European Commission VIES lookup). | |
| buyerVatId | Yes | Required buyer EU or Northern Ireland VAT registration number to normalize and validate (e.g. 'DE123456789', 'GR123456789', 'NL123456789B01', 'XI123456789', max 40 chars). | |
| sellerCountry | No | Two-letter EU-27 or XI member state prefix of the merchant's dispatch warehouse (e.g. 'DE', 'NL', 'FR', 'EL', 'XI'; 'GR' is automatically normalized to 'EL'; default: 'DE'). | |
| consultationNumber | No | Optional VIES requester consultation reference number (e.g. 'WAPIAAAAW998877', max 64 chars) to attach to deterministic 'VALID' mode tax audit records. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), and the description's restatement of read-only adds nothing. However it does add real behavioral context beyond annotations: deterministic simulation modes, LIVE SOAP/REST lookup against the European Commission, circuit-breaker hold behavior on MS_UNAVAILABLE, and stateless ephemeral audit records. It stops short of stating rate limits or failure/error behavior for LIVE calls.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose, behavior, return shape, and routing are front-loaded in a single dense paragraph with no filler sentences. It is long, and the field-by-field enumeration of structuredContent is somewhat list-heavy, but every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, four-parameter tool with full schema coverage and no output schema, the description supplies the return-field inventory and the mode semantics that the schema leaves implicit. The only missing piece is what LIVE lookup failure or VIES error responses look like, which matters given the MS_UNAVAILABLE circuit-breaker path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented; the baseline is 3. The description adds only marginal semantic value, chiefly the mandatory GR to EL prefix normalization and the reverse-charge framing of viesMode, both of which the schema largely repeats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States specific verbs (normalize, evaluate) and the exact resource: EU-27/XI B2B VAT identifiers and reverse-charge/VIES eligibility. It explicitly routes the accounting case to revclamp_reconcile_b2b_net_terms, so an agent can separate it from that sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a direct use case sentence ('Use this tool for EU/XI VAT tax compliance') and names the alternative tool plus the condition that selects it (Net-15/30/60 deposit and credit-note accounting). The mode enum is also framed with when-to-use semantics (deterministic simulation vs LIVE lookup).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revclamp_verify_webhook_signatureVerify Stripe, Shopify & RevClamp Webhook HMAC-SHA256 SignaturesARead-onlyIdempotentInspect
Generate and verify canonical Stripe-Signature (t=,v1=<hex_sha256>), X-Shopify-Hmac-Sha256 (<base64_sha256>), and X-RevClamp-Signature (t=,v1=<hex_sha256>) headers over exact UTF-8 webhook payload bytes using crypto.timingSafeEqual and a 300-second replay window guard. Enforces a Zero-Trust guard that blocks known live/production credential patterns (sk_live_, rk_live_, non-test whsec_..., shpss_..., shpat_..., rg_live_, rc_live_, AKIA..., and PEM private keys) with -32602 LIVE_SECRET_FORBIDDEN_IN_SANDBOX. Returns structuredContent containing ok, mode, statelessEphemeralAudit, tenantId, and verification (provider, verificationMode, headerName, generatedHeader, expectedSignature, signatureValid, verificationReason, timingSafeCompared, replayWindowApplicable, timestampSec, timestampSkewSeconds, toleranceSeconds, withinReplayWindow, payloadByteLength, payloadSha256, commonIntegrationTrap). Use this tool to debug webhook signature mismatches and replay skew.
| Name | Required | Description | Default |
|---|---|---|---|
| secret | No | Synthetic or test webhook signing secret (default: 'whsec_test_revclamp_sandbox_secret_2026', max 256 chars). Live production secrets (sk_live_, rk_live_, non-test whsec_..., shpss_..., shpat_..., rg_live_, rc_live_, AKIA..., and PEM private keys) are rejected. | |
| provider | No | Webhook signature provider scheme to evaluate: 'stripe' (Stripe-Signature t=<sec>,v1=<hex>, default), 'shopify' (X-Shopify-Hmac-Sha256 Base64 raw UTF-8 HMAC), or 'revclamp' (X-RevClamp-Signature t=<sec>,v1=<hex>). | |
| rawPayload | No | Exact unparsed UTF-8 webhook request body string (up to 16,384 chars) used to compute the canonical SHA-256 HMAC digest. Defaults to a provider-specific sample JSON event if omitted. | |
| timestampSec | No | Optional Unix epoch timestamp in integer seconds (valid range: 1 to 9999999999; defaults to current server Unix timestamp) used when generating or verifying timestamped Stripe/RevClamp headers. | |
| signatureHeader | No | Optional supplied HTTP signature header value to verify via crypto.timingSafeEqual (e.g. 't=1760000000,v1=...' or Base64 digest, max 512 chars). Omit to run in GENERATE_AND_SELF_VERIFY mode. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only declare readOnly/idempotent/non-destructive/closed-world), the description discloses the 300-second replay window guard, timingSafeEqual comparison, the Zero-Trust live-credential blocklist with the exact JSON-RPC error code -32602 LIVE_SECRET_FORBIDDEN_IN_SANDBOX, and the full set of structuredContent fields returned. That is substantial behavioral context an agent could not get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose is front-loaded, but the opening sentence is a ~60-word run-on and the return-value enumeration is an undifferentiated comma-separated wall of 18 field names. Every element is arguably relevant, but the density makes it hard to scan for the one or two facts an agent needs at call time.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 compensates by enumerating the structuredContent return fields, and it covers modes, defaults, limits, error semantics, and replay tolerance. Only the boundary against the sibling replay-simulation tool is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema — including the live-secret rejection list and the generate-vs-verify mode for signatureHeader. The description mostly restates this (secret guard, header formats, 16,384-char payload cap) rather than adding new meaning, so it sits at the baseline for a fully-covered schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (generate/verify HMAC-SHA256 webhook signature headers) across three named provider schemes, with the exact canonical header formats given. It is unambiguous what the tool does, but it never names or distinguishes itself from the adjacent sibling revclamp_simulate_webhook_replay, which an agent could easily confuse with this one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this tool to debug webhook signature mismatches and replay skew" gives a clear triggering context, and "Omit [signatureHeader] to run in GENERATE_AND_SELF_VERIFY mode" explains the two operating modes. However there are no exclusions and no routing to alternatives, notably the replay-simulation sibling, so the agent must infer boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- First observed
revclamp_audit_revenue_leakage - First observed
revclamp_calculate_roi_and_plan_fit - First observed
revclamp_evaluate_ghost_usage - First observed
revclamp_lint_dispute_evidence - First observed
revclamp_reconcile_b2b_net_terms - First observed
revclamp_simulate_webhook_replay - First observed
revclamp_stage_stripe_dispute_ce3 - First observed
revclamp_validate_eu_vat_vies - First observed
revclamp_verify_webhook_signature
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.164 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.