Skip to main content
Glama

Build a card dispute outcome table: win rate and days to close by reason code, with sources and a signed record

card_dispute_outcome_table_win
Read-onlyIdempotent

Card dispute outcome table. Send one row per card dispute case you handled: network (visa, mastercard, amex, discover, other), reason code, outcome (won, lost, withdrawn, open), days to close, and optionally your own merchant label. Get back win rate (won out of decided cases, with a 95 percent interval) and days to close (median, 90th percentile, mean) by network reason code, by reason-code family across networks and by merchant label, the meaning of each Visa, Mastercard and American Express code, a flag for groups with too few cases, and the federal clocks (Regulation E 1005.11, Regulation Z 1026.13) with the date each rule was last amended. Set check_sources true to ask the eCFR whether either rule was amended since. Free. No model, nothing stored, signed record. Up to 500 rows. This version has no pooled data: the table is built from your rows only. Use merchant labels, never card numbers, names or emails. Not legal, banking or compliance advice.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "outcomes": "<outcomes>"
    },
    "name": "card_dispute_outcome_table_win"
  }
}

Input Schema

NameRequiredDescriptionDefault
outcomesYes
min_casesNoA group with fewer decided cases than this is flagged too_few_to_rely_on. Default 20.
check_sourcesNoAlso read the eCFR version history of the two rules and report whether either was amended after the date this tool was written.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already establish a read-only, idempotent, non-destructive, open-world profile; the description adds materially more: no model involved, nothing stored, a signed record produced, a 500-row cap, no pooled data (table built from the caller's rows only), and an explicit external eCFR lookup triggered by check_sources. Those are exactly the data-handling and side-effect facts an agent cannot get from the annotations.

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?

The lead sentence front-loads purpose, then input spec, then output spec, so a reader can stop early. It is one long dash-chained block, however, and the density makes scanning harder than a few separated sentences with the row cap and privacy rule split out would be.

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?

There is no output schema, so the description carries the full return-value burden and does it: it enumerates every output (win rate with 95% interval, median/90th percentile/mean days to close, three groupings, code meanings, small-group flag, Reg E 1005.11 and Reg Z 1026.13 clocks, signed record). Limits, privacy constraints, and the external-check toggle are all covered.

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?

With 67% schema coverage the baseline is 3, and the description earns above that by explaining the semantics of min_cases ('a flag for groups with too few cases') and check_sources ('ask the eCFR whether either rule was amended since'). It also reiterates the network and reason-code formats without adding syntax beyond the schema.

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?

The description opens with a concrete verb+resource ('Card dispute outcome table') and then specifies inputs ('one row per card dispute case') and exact outputs ('win rate ... and days to close ... by network reason code'). It never names or routes against siblings such as outcome_dispute, dispute_record, or outcome_case, so an agent must infer the boundary itself.

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 implied by the instruction to submit one row per handled case, plus data-entry rules ('Use merchant labels, never card numbers, names or emails', 'Up to 500 rows') and a scope disclaimer. There is no explicit when-to-use/when-not guidance and no signposting of an alternative tool for related tasks like recording a single dispute.

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