Skip to main content
Glama

Stripe Dispute Evidence UTF-16 & CE 3.0 Completeness Linter

revclamp_lint_dispute_evidence
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
presetNoScenario preset to evaluate when custom evidenceLogText is omitted (default: 'valid_ce3_non_destructive').
hasIpMatchNoWhether the disputed charge IPv4/IPv6 address matches the historical undisputed charges.
hasDeviceMatchNoWhether the disputed charge device_id fingerprint matches the historical undisputed charges.
evidenceLogTextNoMerged or candidate Stripe dispute evidence[access_activity_log] payload evaluated against the 18,000 UTF-16 code unit ceiling and non-destructive delimiter markers.
priorMatchedCountNoNumber of prior undisputed Stripe charges (120d-365d old) with matching customer_id and IP/device fingerprint (Visa CE 3.0 requires >= 2).
existingMerchantNotesNoExisting human AE/support notes inside evidence[access_activity_log] that must be preserved.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.