GoldenMatch
REMOTE · GOLDENMATCH-MCP-PRODUCTION.UP.RAILWAY.APP · 2 COMPONENTS · SCANNED AUG 3
Find duplicate records in 30 seconds. Zero-config entity resolution, 97.2% F1 out of the box.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →
Endpoint Security57
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 77 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Tool/resource definitions use about 7291 tokens (~94/item across 77 items; 77 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
- Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage86
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 59% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
remote · goldenmatch-mcp-production.up.railway.app
claude mcp add --transport http benseverndev-oss-goldenmatch https://goldenmatch-mcp-production.up.railway.app/mcp/
[mcp_servers.benseverndev-oss-goldenmatch] url = "https://goldenmatch-mcp-production.up.railway.app/mcp/"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"benseverndev-oss-goldenmatch": {
"type": "remote",
"url": "https://goldenmatch-mcp-production.up.railway.app/mcp/",
"enabled": true
}
}
} openclaw mcp add benseverndev-oss-goldenmatch --url https://goldenmatch-mcp-production.up.railway.app/mcp/ --transport streamable-http
mcp_servers:
benseverndev-oss-goldenmatch:
url: "https://goldenmatch-mcp-production.up.railway.app/mcp/" {
"mcpServers": {
"benseverndev-oss-goldenmatch": {
"type": "http",
"url": "https://goldenmatch-mcp-production.up.railway.app/mcp/"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 3 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 1 Aug 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Jul 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 30 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Jul 26 +1
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 26 Jul 26 61
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 3 Aug 2026 · Probed https://goldenmatch-mcp-production.up.railway.app/mcp/
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=*.up.railway.app | CN=YE1,O=Let's Encrypt,C=US | 29 Jul 2026 | 27 Oct 2026 | ECDSA 256 | ECDSA-SHA384 | 6da79bb561da3efeb0e751ca21abd3999fe |
| SANs: *.up.railway.app, up.railway.app | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
DNSSEC insecure
Validation of goldenmatch-mcp-production.up.railway.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| railway.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://goldenmatch-mcp-production.up.railway.app/mcp/ | Verified | 200 | |
| http (plaintext) | http://goldenmatch-mcp-production.up.railway.app/mcp/ | HTTPS enforced | 301 | https://goldenmatch-mcp-production.up.railway.app/mcp/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.
list_corrections ~85
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.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | — | Optional dataset filter (e.g. file path). |
| path | string | — | SQLite memory DB path. Default: .goldenmatch/memory.db |
No output schema declared.
No examples provided.
list_domains ~21
List available domain extraction rulebooks (built-in + user-defined).
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
list_plugins ~83
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | — | — |
No output schema declared.
No examples provided.
list_runs ~32
List previous dedupe/match runs (for rollback) from the run log.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | string | — | — |
No output schema declared.
No examples provided.
match ~125
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": "[email protected]", "zip": "10001"}
| Name | Type | Req | Description |
|---|---|---|---|
| record | object | yes | Record fields to match against the dataset |
| threshold | number | — | Minimum score to consider a match (default: use config threshold) |
| top_k | integer | — | Max matches to return (default 5) |
No output schema declared.
No examples provided.
match_record ~120
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": "[email protected]", "zip": "10001"}
| Name | Type | Req | Description |
|---|---|---|---|
| record | object | yes | Record fields to match against the dataset |
| threshold | number | — | Minimum score to consider a match (default: use config threshold) |
| top_k | integer | — | Max matches to return (default 5) |
No output schema declared.
No examples provided.
memory_export ~63
Return all corrections as a list of dicts (CSV-shaped). Caller is responsible for writing the file. Optionally filter by dataset.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | — | — |
| path | string | — | SQLite memory DB path. Default: .goldenmatch/memory.db |
No output schema declared.
No examples provided.
memory_import ~82
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.
| Name | Type | Req | Description |
|---|---|---|---|
| corrections | array | yes | Correction dicts, as returned by memory_export. |
| path | string | — | SQLite memory DB path. Default: .goldenmatch/memory.db |
No output schema declared.
No examples provided.
memory_stats ~54
Return Learning Memory status: total correction count, last learn time, and current learned adjustments. Cheap; safe for status checks.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | — | SQLite memory DB path. Default: .goldenmatch/memory.db |
No output schema declared.
No examples provided.
plan_routing ~70
Project per-stage distributed routing (scoring/clustering/golden) for a given data shape + cluster. Pure; no controller run.
| Name | Type | Req | Description |
|---|---|---|---|
| cluster | object | — | — |
| driver_mem_gb | number | — | — |
| estimated_pair_count | integer | yes | — |
| n_rows | integer | yes | — |
No output schema declared.
No examples provided.
pprl_auto_config ~76
Analyze the loaded dataset and recommend optimal PPRL (privacy-preserving record linkage) configuration. Returns recommended fields, bloom filter parameters, threshold, and explanation.
| Name | Type | Req | Description |
|---|---|---|---|
| security_level | string | — | Security level (default: high) |
| use_llm | boolean | — | Use LLM for enhanced recommendations (requires API key) |
No output schema declared.
No examples provided.
pprl_link ~191
Run privacy-preserving record linkage between two parties' data. Computes bloom filters, matches records without sharing raw data. Specify fields, threshold, and security level.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | Encoding of *_content (default base64) |
| fields | array | yes | Field names to match on (e.g. ['first_name', 'last_name', 'zip_code']) |
| file_a | string | — | Path to party A's CSV file |
| file_a_content | string | — | Alternative to file_a: base64/text bytes |
| file_a_name | string | — | — |
| file_b | string | — | Path to party B's CSV file |
| file_b_content | string | — | Alternative to file_b: base64/text bytes |
| file_b_name | string | — | — |
| security_level | string | — | — |
| threshold | number | — | Match threshold (default: auto-detected) |
No output schema declared.
No examples provided.
profile ~30
Alias for `profile_data`. Get data quality profile: column types, null rates, unique counts, sample values.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
profile_data ~25
Get data quality profile: column types, null rates, unique counts, sample values.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
retrieve_similar ~286
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.
| Name | Type | Req | Description |
|---|---|---|---|
| column | string | yes | Column of the corpus to embed + search |
| encoding | string | — | Encoding of *_content (default base64) |
| file_content | string | — | Alternative to file_path: file bytes (base64 default, or raw with encoding='text') |
| file_path | string | — | CSV/Parquet corpus to search |
| filename | string | — | Original filename when using file_content |
| filters | object | — | Optional {column: value} equality pre-filter applied before embedding |
| k | integer | — | Max records to return (default 20) |
| model | string | — | Embedder id (default 'inhouse' -- local, deterministic, no cloud/torch). Also 'all-MiniLM-L6-v2', a Vertex/OpenAI model, etc. |
| query | string | yes | Free-text query to search for |
| threshold | number | — | Minimum cosine similarity in [-1, 1] (default 0.0) |
No output schema declared.
No examples provided.
review_config ~84
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
rollback ~66
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.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | string | — | — |
| run_id | string | yes | — |
No output schema declared.
No examples provided.
run_transforms ~148
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]
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | Encoding of *_content (default base64) |
| file_content | string | — | Alternative to file_path: file bytes (base64 default, or raw with encoding='text') |
| file_path | string | — | Path to the CSV file to transform |
| filename | string | — | Original filename when using file_content |
| output_path | string | — | Optional path to save the transformed CSV. If omitted, returns summary only. |
No output schema declared.
No examples provided.
scan_quality ~133
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]
| Name | Type | Req | Description |
|---|---|---|---|
| domain | string | — | Optional domain hint (healthcare, finance, ecommerce) |
| encoding | string | — | Encoding of *_content (default base64) |
| file_content | string | — | Alternative to file_path: file bytes (base64 default, or raw with encoding='text') |
| file_path | string | — | Path to the CSV file to scan |
| filename | string | — | Original filename when using file_content |
No output schema declared.
No examples provided.
schema_match ~142
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.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | Encoding of *_content (default base64) |
| file_a | string | — | — |
| file_a_content | string | — | Alternative to file_a: base64/text bytes |
| file_a_name | string | — | — |
| file_b | string | — | — |
| file_b_content | string | — | Alternative to file_b: base64/text bytes |
| file_b_name | string | — | — |
| min_score | number | — | — |
No output schema declared.
No examples provided.
sensitivity ~189
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.
| Name | Type | Req | Description |
|---|---|---|---|
| config | string | — | Optional config YAML path |
| encoding | string | — | Encoding of *_content (default base64) |
| file_content | string | — | Alternative to file_path: file bytes (base64 default, or raw with encoding='text') |
| file_path | string | — | CSV/Parquet to analyze |
| filename | string | — | Original filename when using file_content |
| sample_size | integer | — | Optional: randomly sample N records before sweeping |
| sweep | array | yes | Sweep specs as 'field:start:stop:step', e.g. 'threshold:0.70:0.95:0.05'. One or more. |
No output schema declared.
No examples provided.
shatter_cluster ~44
Break an entire cluster into individual records. All members become singletons. Use when a cluster is completely wrong.
| Name | Type | Req | Description |
|---|---|---|---|
| cluster_id | integer | yes | Cluster ID to shatter |
No output schema declared.
No examples provided.
suggest_config ~88
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"}]
| Name | Type | Req | Description |
|---|---|---|---|
| bad_merges | array | yes | List of bad merge examples with record_a, record_b, and optional reason |
No output schema declared.
No examples provided.
suggest_pprl ~81
Check if data needs privacy-preserving matching
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | Encoding of *_content (default base64) |
| file_content | string | — | Alternative to file_path: file bytes (base64 default, or raw with encoding='text') |
| file_path | string | — | — |
| filename | string | — | Original filename when using file_content |
No output schema declared.
No examples provided.
test_domain ~62
Test a domain extraction rulebook against sample records. Shows what features would be extracted from the loaded data.
| Name | Type | Req | Description |
|---|---|---|---|
| domain_name | string | yes | Name of the domain rulebook to test |
| sample_size | integer | — | Number of records to test (default 10) |
No output schema declared.
No examples provided.
unmerge_record ~58
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.
| Name | Type | Req | Description |
|---|---|---|---|
| record_id | integer | yes | Row ID of the record to unmerge |
No output schema declared.
No examples provided.
upload_dataset ~182
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.
| Name | Type | Req | Description |
|---|---|---|---|
| encoding | string | — | Encoding of file_content (default base64) |
| file_content | string | yes | File bytes, base64-encoded (or raw text with encoding='text') |
| filename | string | yes | Original filename (extension preserved for format sniffing) |
No output schema declared.
No examples provided.