# GoldenMatch MCP server

Find duplicate records in 30 seconds. Zero-config entity resolution, 97.2% F1 out of the box.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-benseverndev-oss-goldenmatch
- Repository: https://github.com/benseverndev-oss/goldenmatch
- Website: https://docs.bensevern.dev/

## Install
- Command: `uvx goldenmatch`
- Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- Auth: Not captured

## Setup notes
- Package: Pypi goldenmatch v1.28.0
- Remote endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/

## Tools
- analyze_data - Profile data, detect domain, recommend ER strategy Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- auto_configure - Run AutoConfigController on a CSV; return the committed GoldenMatchConfig (incl. negative_evidence / Path Y when chosen) plus telemetry — stop_reason, health, decision trace, indicator column priors. Programmatic equivalent of `goldenmatch autoconfig`. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- controller_telemetry - Return the AutoConfigController telemetry from the most recent `auto_configure` or `agent_deduplicate` call in this MCP session. Same JSON shape as the web /api/v1/controller/telemetry endpoint. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_deduplicate - Run full ER pipeline with confidence gating and reasoning Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_match_sources - Match two files with intelligent strategy selection Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_explain_pair - Natural language explanation for a record pair Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_explain_cluster - Explain why records are in the same cluster Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_review_queue - Get borderline pairs awaiting approval Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_approve_reject - Approve or reject a review queue pair Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- agent_compare_strategies - Compare ER strategies on your data Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- suggest_pprl - Check if data needs privacy-preserving matching Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- scan_quality - Run GoldenCheck data quality scan on a CSV file. Returns issues found (encoding errors, Unicode problems, format violations) without applying fixes. Requires goldencheck: pip install goldenmatch[quality] Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- fix_quality - Run GoldenCheck scan and apply fixes to a CSV file. Returns the fixed data summary and a manifest of all fixes applied. Requires goldencheck: pip install goldenmatch[quality] Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- run_transforms - Run GoldenFlow data transforms on a CSV file. Normalizes phone numbers (E.164), dates (ISO), categorical spelling, and Unicode issues. Returns a manifest of transforms applied. Requires goldenflow: pip install goldenmatch[transform] Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- sensitivity - Parameter-sensitivity analysis: sweep one or more config parameters across a range and report how stable the clustering is at each value (CCMS unchanged %). Use it to find robust thresholds. Auto-configures the file if no config is given. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- incremental - Match a batch of new records against an existing base dataset (without re-running the whole base). Returns matched (new_row_id, base_row_id, score) pairs plus counts. Auto-configures from the base file if no config is given. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- certify_recall - Estimate match RECALL without ground truth (unsupervised). Treats each auto-configured matchkey/pass as a decorrelated system and uses capture-recapture over their overlaps to estimate how many true matches were missed. Returns a point estimate (a safe lower bound additionally needs a small labelled audit; see `goldenmatch evaluate --certify --audit-out`). Needs >=3 decorrelated systems. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- retrieve_similar - Semantic retrieval (#1089): return the records in a CSV most similar to a free-text query, ranked by cosine similarity. Embeds the chosen column and the query with the zero-config in-house embedder (no cloud/torch by default) and runs ANN search. The read side of the RAG entity-canonicalization epic -- fetch candidate records by query without running a full dedupe. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- upload_dataset - Upload a local file's bytes to the server and get back a server-side path to reuse across other tools (analyze_data, auto_configure, agent_deduplicate, ...). No hosting needed. Send base64 (default) or raw text via `encoding`. Uploaded files are ephemeral scratch, reaped after GOLDENMATCH_MCP_UPLOAD_TTL (default 24h); re-upload if you need a path older than that. Max size GOLDENMATCH_MCP_MAX_UPLOAD_BYTES (default 64MB) -- above it, pass a public http(s) URL as file_path instead. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- list_corrections - List stored Learning Memory corrections, optionally filtered by dataset. Returns id_a, id_b, decision, source, trust, reason, matchkey_name, dataset, original_score, created_at. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- add_correction - Add a Learning Memory correction. Two shapes:
  - pair-level: decision='approve' or 'reject', requires id_a + id_b
  - field-level (v1.18.2+): decision='field_correct', requires cluster_id + field_name + corrected_value
Source is 'agent' with trust=0.5 (lower than human steward 1.0). Pair (id_a, id_b) is canonicalized to (min, max) before storage. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- list_plugins - List all registered goldenmatch plugins by category. Includes the 22 v1.18.2 predefined plugins (numeric/format/business/aggregation) plus any user-registered plugins via entry-points or PluginRegistry.register_*(). Each entry includes name, source (builtin or user), category, and the first line of the merge docstring. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- learn_thresholds - Force a MemoryLearner pass over accumulated corrections. Returns the list of LearnedAdjustments produced (matchkey_name, threshold, sample_size, learned_at). Requires >= 10 corrections per matchkey before threshold tuning fires; otherwise returns an empty list. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- memory_stats - Return Learning Memory status: total correction count, last learn time, and current learned adjustments. Cheap; safe for status checks. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- memory_export - Return all corrections as a list of dicts (CSV-shaped). Caller is responsible for writing the file. Optionally filter by dataset. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- memory_import - Import corrections from a list of dicts (the exact shape memory_export returns). Upserts into the store: higher trust wins, same trust = latest wins. Returns the count imported. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_resolve - Resolve a record_id to its durable identity. Returns the full identity view (members, evidence edges, recent events) or null when no identity exists for that record. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_list - List identities, optionally filtered by dataset/status. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_history - Return the temporal event log for an identity. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_conflicts - List evidence edges marked `conflicts_with`. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_merge - Manually merge two identities. All records from `absorb_entity_id` are reassigned to `keep_entity_id`. The merge events are stamped with `actor`/`trust` provenance so the audit log records who merged these and on what authority. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_split - Split a subset of records off an identity into a brand-new identity. The original keeps the remaining records. The split events carry `actor`/`trust` provenance. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_claim - Claim a record into an identity, moving it out of any prior entity ('this record belongs to that identity'). Emits a provenance-stamped `claimed` event on both the gaining and losing entities. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_resolve_conflict - Adjudicate a `conflicts_with` pair: 'same' keeps the entity intact, 'distinct' splits the second record out into a new identity, 'defer' only logs. Records a durable mediation verdict + event with actor/trust provenance, and stops the conflict re-surfacing in the open-conflicts queue. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_audit - Export the append-only identity audit log in commit order: every event with actor / trust / timestamp / reason, so a reviewer can reconstruct exactly which actor changed what, when, and why. Optionally filtered by dataset / actor. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_audit_seal - Anchor the append-only audit log with a tamper-evidence seal: a chained sha256 root over every event since the last seal. Cheap and idempotent (a no-op when nothing new has been logged). Run it periodically (or after a batch of stewardship actions) so the history becomes provably untampered. Optionally scoped to a dataset. Publish/mirror the returned root_hash to make tampering detectable by an external party. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_audit_verify - Verify the append-only audit log against its seal chain. Replays the per-event content hashes and the seal roots to detect content edits, deletion, reordering, and insertion of any sealed event. Returns {ok, events_checked, seals_checked} plus the ids of any content mismatches / broken seals / missing sealed events. Optionally scoped to a dataset. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_show - Fetch the full detail of one identity by entity_id: its member records, evidence edges, and recent event log. Returns {found: false} when no such entity exists. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_profile - MDM profile of one entity: record count + per-source breakdown, golden record, confidence, conflict count, canonical version (structural-event count), and first/last activity. Returns {found: false} when no such entity exists. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_stats - Graph-level summary / health stats: entities by status, total records, records-per-entity distribution, conflict total, source mix, and the largest entities. Optionally scoped to a dataset. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- identity_worklist - Prioritized steward worklist: active entities needing attention (open conflicts and/or confidence below weak_confidence), highest conflict count first. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- plan_routing - Project per-stage distributed routing (scoring/clustering/golden) for a given data shape + cluster. Pure; no controller run. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- explain_routing - Human-readable explanation of why each stage is routed the way it is, with the driver-RAM projection that drove it. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- lint_routing - Flag config/env overrides that force a slow path (e.g. CLUSTERING_THRESHOLD=0 when the edge set fits driver RAM). ERROR at scale; would_refuse mirrors the runtime guard. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- get_stats - Get dataset statistics: record count, cluster count, match rate, cluster sizes. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- find_duplicates - Find duplicate matches for a record. Provide field values to search against the loaded dataset. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- explain_match - Explain why two records match or don't match. Shows per-field score breakdown. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- list_clusters - List duplicate clusters found in the dataset. Returns cluster IDs, sizes, and member counts. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- get_cluster - Get details of a specific cluster: all member records and their field values. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- get_golden_record - Get the merged golden (canonical) record for a cluster. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- match_record - Match a single record against the loaded dataset in real-time. Paste a record's fields and instantly see if it matches any existing record. Uses the configured matchkeys, scorers, and thresholds. Example: {"name": "John Smith", "email": "john@test.com", "zip": "10001"} Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- unmerge_record - Remove a record from its cluster. The record becomes a singleton. Remaining cluster members are re-clustered using stored pair scores. Use this to fix bad merges. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- shatter_cluster - Break an entire cluster into individual records. All members become singletons. Use when a cluster is completely wrong. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- suggest_config - Analyze bad merges and suggest config changes. Provide examples of incorrect merges (pairs that should NOT have matched) and GoldenMatch will identify which fields/thresholds to tighten. Example: [{"record_a": {...}, "record_b": {...}, "reason": "different people"}] Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- review_config - Run the config healer over the loaded dataset: analyze the dedupe run and return ranked, self-verified suggestions for improving the matching config (thresholds, scorers, negative evidence, blocking). Each suggestion carries an id, kind, target, rationale, and a machine-applicable patch. Requires the native kernel (pip install goldenmatch[native]); returns an empty list otherwise. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- profile_data - Get data quality profile: column types, null rates, unique counts, sample values. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- export_results - Export matching results to a file (CSV or JSON). Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- list_domains - List available domain extraction rulebooks (built-in + user-defined). Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- create_domain - Create a custom domain extraction rulebook. Define patterns for a specific data domain (medical devices, automotive parts, real estate, etc.). Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- test_domain - Test a domain extraction rulebook against sample records. Shows what features would be extracted from the loaded data. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- pprl_auto_config - Analyze the loaded dataset and recommend optimal PPRL (privacy-preserving record linkage) configuration. Returns recommended fields, bloom filter parameters, threshold, and explanation. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- pprl_link - Run privacy-preserving record linkage between two parties' data. Computes bloom filters, matches records without sharing raw data. Specify fields, threshold, and security level. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- evaluate - Score the loaded run against ground-truth pairs. Loads a ground-truth CSV (id_a,id_b columns) and returns precision, recall, and F1 for the current clustering. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- analyze_blocking - Diagnose blocking on the loaded dataset: returns ranked blocking key candidates with block counts, max block size, total candidate comparisons, and estimated recall. Use it to explain why matching is slow or produces too many candidate pairs. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- compare_clusters - Compare two ER clustering outcomes on the same dataset without ground truth (CCMS): classifies each cluster as unchanged / merged / partitioned / overlapping and returns the Talburt-Wang Index. Both inputs are JSON cluster files (as written by export-style output). Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- schema_match - Auto-map columns between two files with different schemas. Returns proposed (col_a, col_b) mappings with a confidence score and method (synonym / name_sim / composite). Useful before matching two sources. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- lineage - Field-level provenance for the loaded run: for each scored pair, the per-field scores that produced the match, plus cluster id. Optionally write a lineage JSON to a directory. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- list_runs - List previous dedupe/match runs (for rollback) from the run log. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- rollback - Undo a previous run by DELETING its output files (looked up by run_id in the run log). Destructive: removes the files that run wrote. Use list_runs first to find the run_id. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- config_weaknesses - Diagnose weaknesses in the loaded run's auto-config: columns admitted that shouldn't be (source/provenance labels, per-row IDs), oversized or shared-value blocks, null sinks, low-signal matchkeys, and over-merging. Returns ranked findings, each with a plain-English explanation + a concrete fix, plus a one-paragraph summary. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- dedupe - Alias for `find_duplicates`. Find duplicate matches for a record. Provide field values to search against the loaded dataset. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- match - Alias for `match_record`. Match a single record against the loaded dataset in real-time. Paste a record's fields and instantly see if it matches any existing record. Uses the configured matchkeys, scorers, and thresholds. Example: {"name": "John Smith", "email": "john@test.com", "zip": "10001"} Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- explain_pair - Alias for `explain_match`. Explain why two records match or don't match. Shows per-field score breakdown. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- profile - Alias for `profile_data`. Get data quality profile: column types, null rates, unique counts, sample values. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- explain_cluster - Alias for `agent_explain_cluster`. Explain why records are in the same cluster Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- documents_suggest_schema - Propose a target extraction schema (JSON) from a sample document image/PDF. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/
- documents_ingest - Extract records from documents (PDF/image) against a target schema into rows ready for dedupe_df. Returns records + an ingest report. Endpoint: https://goldenmatch-mcp-production.up.railway.app/mcp/

## Resources
Not captured

## Prompts
- deduplicate-walkthrough - Step-by-step guided deduplication workflow: profile data, configure matching, run, review results, fix bad merges. Arguments: focus
- investigate-cluster - Deep-dive into a specific cluster: explain why records matched, identify potential bad merges, suggest fixes. Arguments: cluster_id
- compare-records - Detailed comparison of two records: field-by-field scoring, match/no-match verdict, explanation. Arguments: record_a, record_b
- data-quality-audit - Full data quality audit: profile columns, identify issues, recommend cleaning steps before matching.
- pprl-setup - Guide through privacy-preserving record linkage setup: assess data sensitivity, recommend PPRL config, run linkage. Arguments: security_level

## Metadata
- Owner: io.github.benseverndev-oss
- Version: 1.28.0
- Runtime: Pypi
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jun 6, 2026
- Source: https://registry.modelcontextprotocol.io
