Skip to main content
Glama
VISA Dispute Advisor

VISA Dispute Advisor

VISA Dispute Advisor

A merchant dispute advisory system powered by the VISA Dispute Management Guidelines.

Given a dispute case, the system retrieves the applicable VISA conditions, reasons over the merchant's response options and past dispute history, and returns a structured recommendation.

Deployed as a Model Context Protocol (MCP) server — any MCP-compatible client (GitHub Copilot, Claude Desktop, etc.) connects and drives the reasoning loop using the two provided tools.


Architecture

MCP Client (GitHub Copilot / Claude Desktop / …)
  │  calls tools over MCP stdio transport
  ▼
FastMCP Server
  ├─► ChromaDB  (sentence-transformers embeddings — local, no API key)
  │     semantic search over VISA Dispute Management Guidelines PDF chunks
  └─► SQLite    (SQLAlchemy)
        merchant dispute history warehouse

No LLM runs server-side. The server is a pure retrieval layer.


Related MCP server: reach-dispute-mcp

Tools

Tool

Purpose

search_visa_rules

Semantic search over VISA Guidelines — start here

query_warehouse

Merchant dispute history lookup by merchant ID


Prerequisites

  • uv ≥ 0.5

  • Python ≥ 3.11

  • data/merchants-dispute-management-guidelines.pdf — your copy of the VISA Dispute Management Guidelines PDF


Setup

# 1. Clone
git clone https://github.com/alejamorenovallejo/visa-dispute-advisor.git
cd visa-dispute-advisor

# 2. Install dependencies
uv sync

# 3. Configure paths (defaults work out-of-the-box)
cp .env.example .env

# 4. Place VISA PDF in the data/ folder
# Download from: https://myanmar.visa.com/content/dam/VCOM/global/support-legal/documents/merchants-dispute-management-guidelines.pdf
# Save it as: data/merchants-dispute-management-guidelines.pdf

# 5. Ingest VISA rules into vector store
uv run python -m visa_dispute_advisor.ingest

# 6. Seed demo merchant dispute history
uv run python scripts/seed_merchants.py

Running the server

# stdio transport — for MCP clients
uv run visa-advisor

# HTTP transport with browser inspector — for development
uv run fastmcp dev src/visa_dispute_advisor/server.py

Connecting a client

GitHub Copilot (VS Code)

Create .vscode/mcp.json:

{
  "servers": {
    "visa-dispute-advisor": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "visa-advisor"],
      "cwd": "${workspaceFolder}"
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "visa-dispute-advisor": {
      "command": "uv",
      "args": ["run", "visa-advisor"],
      "cwd": "/absolute/path/to/visa-dispute-advisor"
    }
  }
}

Typical advisory session

Dispute case:
  Merchant ID: MER-001 (Tech Store Guatemala)
  Cardholder claim: Item not received. Ordered a laptop online on
  2026-03-01, expected delivery 2026-03-10. Tracking shows "delivered"
  but customer denies receiving it. Amount: $450.00.
  Merchant response: Has carrier tracking proof showing delivery to
  the billing address.

Agent calls:
  1. search_visa_rules("customer claims item not received, merchant has tracking proof")
  2. query_warehouse("MER-001")

Recommendation: REJECT DISPUTE (favor merchant)
  Applicable rule: Condition 13.1 — Merchandise/Services Not Received.
  Merchant can provide tracking documentation proving delivery to the
  agreed address. Under Condition 13.1, this constitutes valid compelling
  evidence to dispute the chargeback.

  Merchant risk profile: LOW RISK — 2 of 3 prior disputes resolved in
  merchant's favor. No pattern of fraudulent behavior detected.

  Next steps:
  1. Request signed proof of delivery from carrier.
  2. Submit tracking number and delivery confirmation to acquirer.
  3. If cardholder insists, escalate to Visa arbitration.

Development

uv run ruff check --fix src/
uv run ruff format src/
uv run pytest

See AGENTS.md for full contributor and agent guidance.


License

MIT

Available Tools

2 tools
query_warehouseA

Retrieve the dispute history for a merchant from the data warehouse.

Args: merchant_id: The merchant identifier (e.g. "MER-001").

Returns: A dict containing: merchant_id – the queried ID merchant_name – registered name (or None) total_cases – total number of dispute cases on record resolutions – breakdown: {merchant_won, merchant_lost, settled, pending} cases – list of individual case records (date, amount, type, res)

Inputs: merchant_id (required). Returns: object

search_visa_rulesA

Search VISA Dispute Management Guidelines for rules relevant to a dispute.

Args: scenario: Free-text description of the dispute (cardholder claim, merchant response, transaction type, etc.).

Returns: A ranked list of matching VISA rule candidates, each containing: condition_id – e.g. "13.1" title – section heading snippet – relevant text excerpt score – cosine similarity score (0–1, higher = more relevant)

Inputs: scenario (required). Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 2 tools

    Disambiguation5/5

    The two tools serve completely distinct purposes: one searches Visa dispute rules, the other retrieves merchant dispute history. There is no overlap or ambiguity.

    Naming Consistency5/5

    Both tools follow a consistent verb_noun pattern in snake_case: 'search_visa_rules' and 'query_warehouse'. The naming is predictable and uniform.

    Tool Count2/5

    With only 2 tools, the server feels under-scoped for a 'VISA Dispute Advisor'. One would expect additional tools for creating, updating, or resolving disputes to make it useful.

    Completeness2/5

    The tool set lacks core dispute management capabilities like creating a dispute, updating status, or listing disputes. Only rule search and merchant history are provided, leaving significant gaps.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables commerce operations teams to investigate missing-delivery complaints and resolve them through natural language, with policy-enforced refunds and escalations.
      -
    • F
      license
      Not graded
      quality
      C
      maintenance
      Provides read-only MCP tools to diagnose customer billing disputes by analyzing billing records, identifying contradictions, citing evidence, and scoring confidence to auto-resolve or escalate.
      -
    • F
      license
      Not graded
      quality
      B
      maintenance
      Enables detection and risk scoring of e-commerce return fraud and wardrobing by correlating return velocity, carrier scan discrepancies, product tag tampering indicators, and customer return history, then enforcing actions like restocking fees or dispute escalation.
      7
      -
    • F
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables MCP clients to evaluate e-commerce return requests by correlating return velocity, carrier scan discrepancies, product tag tampering indicators, and customer lifetime return ratios. It computes a composite fraud risk score and recommends enforcement actions such as restocking fees or dispute escalation.
      -