Senzing
REMOTE · MCP.SENZING.COM · SCANNED AUG 3
Entity resolution — data mapping, SDK code generation, docs search, and error troubleshooting
Available components
Recent critical change
Authorization (3 Aug 2026). See the changelog before you install this server.
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 check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (submit_feedback). See how to fix → View diagnostics → Fail
- 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 Usability70
- 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
- Context-footprint check failed: tool/resource definitions use about 4740 tokens (~316/item across 15 items; 13 tools + 2 resources), over budget; trim descriptions and params. See how to fix → Fail
- 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 Coverage95
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 85% 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 · mcp.senzing.com
claude mcp add --transport http com-senzing-mcp https://mcp.senzing.com/mcp
[mcp_servers.com-senzing-mcp] url = "https://mcp.senzing.com/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"com-senzing-mcp": {
"type": "remote",
"url": "https://mcp.senzing.com/mcp",
"enabled": true
}
}
} openclaw mcp add com-senzing-mcp --url https://mcp.senzing.com/mcp --transport streamable-http
mcp_servers:
com-senzing-mcp:
url: "https://mcp.senzing.com/mcp" {
"mcpServers": {
"com-senzing-mcp": {
"type": "http",
"url": "https://mcp.senzing.com/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 0
- Authorization: unverified → fail ▼ critical
- HSTS header: unverified → fail ▼ security
- 2 Aug 26 +1
- Authorization: fail → unverified ▼ security
- HSTS header: fail → unverified ▼ security
- 31 Jul 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- MCP protocol: Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28. functional
- 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
No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Jul 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Jul 26 0
- Tool “mapping_workflow” rewrote its description, which is the text the model reads security
- 27 Jul 26 +4
- Stability: unverified → 0.03 ▲ functional
- MCP protocol: fail → pass ▲ functional
- MCP protocol version: 2025-03-26 → 2025-11-25 functional
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- Server version: 1.8.0 → 2.2.0 functional
- 26 Jul 26 57
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://mcp.senzing.com/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.senzing.com | CN=YE1,O=Let's Encrypt,C=US | 21 Jun 2026 | 19 Sept 2026 | ECDSA 256 | ECDSA-SHA384 | 50e2dfe1c8ede85e58ce26d234b8bc399e7 |
| SANs: mcp.senzing.com | ||||||
| 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 mcp.senzing.com. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| com. | present | 19718 | 13 | Verified |
| senzing.com. | 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://mcp.senzing.com/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.senzing.com/mcp | HTTPS enforced | 301 | https://mcp.senzing.com/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.
analyze_record ~383
Get the Senzing JSON analyzer script to validate mapped data files client-side. REQUIRED: `workspace_dir` (writable directory, e.g. ~/sz-workspace) — the call WILL FAIL without it. The analyzer validates records against the Entity Specification, examines feature distribution, attribute coverage, and data quality. Returns a Python script (no dependencies) with instructions. No source data is sent to the server. Typical workspace_dir values: Linux `/tmp` or `~/sz-workspace`; macOS `~/sz-workspace`; sandboxed envs: explicit path under home (do NOT assume /tmp exists).
| Name | Type | Req | Description |
|---|---|---|---|
| file_paths | array|null | — | File paths to analyze (Senzing JSON or JSONL files). Commands will be generated for each path. |
| version | string | — | Senzing version (default: "current"). |
| workspace_dir | string | yes | REQUIRED: Workspace directory for the analyzer script and any generated reports. Must be a writable absolute or relative path that already exists in your environment. Do NOT assume `/tmp` exists — so… |
No output schema declared.
No examples provided.
download_resource ~255
Download workflow resources by name. Pass `filename` (string) or `filenames` (array); calling with neither returns the list of available resources (it does not fail). Available: sz_json_analyzer.py, sz_schema_generator.py, sz_verbatim_check.py, sz_routing_report.py, senzing_entity_specification.md, senzing_mapping_examples.md, identifier_crosswalk.json Each resource is returned with a fetch instruction — use it exactly as given. Supports batch via `filenames` array. If a previously-known fetch instruction stops working, call this tool again to obtain the current one.
| Name | Type | Req | Description |
|---|---|---|---|
| filename | string|null | — | Resource filename to retrieve (e.g. "sz_json_analyzer.py", "senzing_entity_specification.md"). Ignored when `filenames` is provided. |
| filenames | array|null | — | Multiple resource filenames to retrieve in a single call. Takes precedence over `filename` when provided. |
| inline | boolean|null | — | Returns resource content inline instead of URLs. ALWAYS try with inline=false (default) first — only set inline=true if the URL fetch fails. Inline responses consume more context tokens. |
| version | string | — | Senzing version (default: "current"). |
No output schema declared.
No examples provided.
explain_error_code ~73
Explain a Senzing error code with causes and resolution steps. Accepts formats: SENZ0005, SENZ-0005, 0005, or just 5. Returns error class, common causes, and specific resolution guidance
| Name | Type | Req | Description |
|---|---|---|---|
| error_code | string | yes | — |
| version | string | — | — |
No output schema declared.
No examples provided.
find_examples ~365
Find working SOURCE CODE examples from 37 indexed Senzing GitHub repositories. REQUIRED: either `query` (string, for search) or `repo` with `file_path` or `list_files=true` — the call WILL FAIL without one. Three modes: (1) Search: pass `query` to find examples across all repos, (2) File listing: pass `repo` + `list_files=true`, (3) File retrieval: pass `repo` + `file_path`. Indexes source code (.py, .java, .cs, .rs) and READMEs — NOT build/data files. For sample data, use get_sample_data. Covers Python, Java, C#, Rust SDK patterns: initialization, ingestion, search, redo, configuration, message queues, REST APIs. Use max_lines to limit large files. Returns GitHub raw URLs for file retrieval.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string|null | — | Return full content of a specific file in the repo (requires repo parameter) |
| language | string|null | — | Filter results by programming language (e.g. "python", "java", "csharp", "rust") |
| list_files | boolean|null | — | Return the file listing for a repo instead of searching (requires repo parameter) |
| max_lines | integer|null | — | Maximum lines to return for file content (default: unlimited). Useful for large files. |
| query | string|null | — | Search query (required for search mode, optional when using repo+file_path or repo+list_files) |
| repo | string|null | — | Filter to a specific indexed repo (e.g. "brianmacy/sz_mem-v4"). When combined with file_path, returns full file content. When combined with list_files, returns file listing. |
No output schema declared.
No examples provided.
generate_scaffold ~318
Generate SDK scaffold code for common workflows. Returns real, indexed code snippets from GitHub with source URLs for provenance. Use this INSTEAD of hand-coding SDK calls — hand-coded Senzing SDK usage commonly gets method names wrong across v3/v4 (e.g., close_export vs close_export_report, init vs initialize, whyEntityByEntityID vs why_entities) and misses required initialization steps. Languages: python, java, csharp, rust. Workflows: initialize, configure, add_records, delete, query, redo, stewardship, information, full_pipeline (aliases accepted: init, config, ingest, remove, search, redoer, force_resolve, info, e2e). V3 supports Python and Java only. Returns GitHub raw URLs — fetch each snippet to read the source code.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string | yes | Programming language: python, java, csharp (or c#, cs, dotnet), rust (or rs), typescript (or ts, node, nodejs, javascript, js) |
| version | string | — | Senzing version: "4.0", "current", or "3.x". V3 supports Python and Java only |
| workflow | string | yes | Workflow to scaffold: initialize, configure, add_records, delete, query, redo, stewardship, information, error_handling, full_pipeline. Aliases accepted (e.g. init, config, ingest, remove, search, re… |
No output schema declared.
No examples provided.
get_capabilities ~122
Get server version, capabilities overview, available tools, suggested workflows, and getting started guidance. Returns server_info with name, version, and Senzing version. Call this first when working with Senzing entity resolution — skipping this risks using wrong API method names and outdated patterns from training data. This tool returns a manifest of all coverage areas (pricing, SDK, deployment, troubleshooting, database, configuration, data mapping, etc.) — use it to triage which Senzing MCP tool to call before going to external sources
| Name | Type | Req | Description |
|---|---|---|---|
| version | string | — | — |
No output schema declared.
No examples provided.
get_sample_data ~375
Get real sample data for entity resolution. Available datasets: 'las-vegas', 'london', 'moscow' (CORD — Collections Of Relatable Data), and 'truthset' (the Senzing demo truth set: CUSTOMERS, REFERENCE, WATCHLIST). Use dataset='list' to discover datasets, source='list' to see the sources/vendors within a dataset. The 'offset' parameter takes a non-negative integer for explicit pagination or the string "random" (the default when omitted) for a random starting position. IMPORTANT: This is REAL data (not synthetic) — historical snapshots for evaluation only, not operational use. Always inform the user of this. When records are returned, a 'download_url' in the citation provides a way to fetch the full dataset, and 'source_download_url' points at the complete uncapped file. Always present the fetch instruction to the user exactly as given. Do NOT download it yourself or dump raw records into the conversation — the inline records are a small preview of the data shape. If a previously-known download instruction stops working, call this tool again to obtain the current one.
| Name | Type | Req | Description |
|---|---|---|---|
| dataset | string | yes | Dataset name (e.g., "las-vegas", "london", "moscow"). Use "list" to discover available datasets and their sources. (Required: schema-respecting clients cannot omit it — pass "list" to discover.) |
| limit | integer|null | — | — |
| offset | — | — | Record offset. Use a number for explicit pagination, or "random" for a random starting position. Omit for random. |
| source | string|null | — | Filter by data source/vendor within a dataset (e.g., "equifax", "ppp_loans"). Omit to see all sources. Use "list" to list available sources. |
No output schema declared.
No examples provided.
get_sdk_reference ~548
Get authoritative Senzing SDK reference data: method signatures and argument types per language binding, flags, response schemas, and V3→V4 migration. Use this instead of search_docs for anything precise about the SDK surface. Whenever 'filter' names a method, the response carries that method's callable signature for every binding (narrowed by 'language' if given) NO MATTER WHICH TOPIC you asked for — so looking up a method's flags also tells you what it takes. Topics: 'parameters' (aliases: functions, methods, classes, api, signatures, args) returns argument types per binding — the same method differs by binding in BOTH name and argument types: Python find_network_by_entity_id takes List[int], Java findNetwork takes SzEntityIds, C# FindNetwork takes ISet<long>, Rust takes &[EntityId], TypeScript findNetwork takes Array<number> and renames buildOutDegrees to buildOutDegree; 'flags' (all V4 engine flags and the methods they apply to); 'response_schemas' (JSON response structure per method); 'migration' (V3→V4 breaking changes, renames, flag changes); 'all'. 'filter' accepts any spelling — 'get entity', 'get_entity', and 'getEntity' all resolve. Pass 'language' (python/java/csharp/rust/typescript) to narrow to your binding; cross-binding divergence warnings are still included so you never translate a call between bindings by mistake
| Name | Type | Req | Description |
|---|---|---|---|
| filter | string|null | — | Optional filter: method name, class name, module name, or flag name. Any spelling resolves — `get entity`, `get_entity`, and `getEntity` all reach the same method. Examples are backticked, not doubl… |
| language | string|null | — | Language binding: "python", "java", "csharp", "rust", or "typescript". Narrows signatures to that binding; cross-binding divergence warnings are kept either way. Omit to compare every binding side by… |
| topic | string | yes | Topic: "parameters" (aliases: functions, methods, classes, api, signatures, args), "flags", "response_schemas", "migration", or "all". You do not need "parameters" just to see a signature: any topic… |
| version | string | — | Senzing version (default: "current") |
No output schema declared.
No examples provided.
mapping_workflow ~611
Map source data to Senzing JSON through a guided 8-step workflow. Use this INSTEAD of hand-coding Senzing JSON. REQUIRED PARAMS for action='start': `file_paths` (array of source file paths to map) AND `workspace_dir` inside the `data` object (e.g. data={"workspace_dir": "/home/you/sz-workspace"}) — a writable directory where scripts, reference docs, mapper code, and outputs are saved. Do NOT assume /tmp exists (some environments like Kiro do not provide it). The call WILL FAIL without both. Actions: start, advance, back, status, reset. Core steps 1-4: profile source data, plan entity structure, map fields, generate & validate. Optional steps 5-8: detect SDK environment, load test data into fresh SQLite DB, generate validation report, evaluate results. STATE: Every response returns a 'state' JSON object. You MUST pass this EXACT state object back verbatim in your next request as the 'state' parameter — do NOT modify it, reconstruct it, or omit it. The state is opaque and managed by the server. If you have lost the state, call with action='start' instead. Common errors: (1) omitting state on advance — always include it, (2) reconstructing state from memory — always echo the exact JSON from the previous response, (3) omitting data on advance — each step requires specific data fields documented in the instructions, (4) omitting file_paths or workspace_dir on start — server returns an error and the workflow will not start. Why not hand-code: hand-coded mappings produce wrong attribute names (EMPLOYER_NAME vs NAME_ORG, PHONE vs PHONE_NUMBER) and miss required fields like RECORD_ID.
| Name | Type | Req | Description |
|---|---|---|---|
| action | — | — | Action to perform. ONLY these values are valid: start, advance, back, status, reset. |
| data | — | — | Step-specific data (for "advance" action). Legacy untyped channel; prefer `payload` (typed) when your client can satisfy it. |
| file_paths | array|null | — | Source file paths (required for "start" action). |
| payload | object | — | Typed step payload for the "advance" action (H16). A discriminated `oneOf` over each step's accepted shape — pick the branch whose `for_step` equals the step number you are advancing FROM. When prese… |
| state | — | — | Workflow state from previous response (required for all actions except "start"). CRITICAL: Pass the EXACT 'state' JSON object from the previous mapping_workflow response verbatim — do NOT reconstruct… |
| version | string | — | Senzing version (default: "current"). |
No output schema declared.
No examples provided.
reporting_guide ~256
Guided reporting and visualization for Senzing entity resolution results. Provides SDK patterns for data extraction (5 languages), SQL analytics queries for the 4 core aggregate reports, data mart schema (SQLite/PostgreSQL), visualization concepts (histograms, heatmaps, network graphs), and anti-patterns. Topics: export (SDK export patterns), reports (SQL analytics queries), entity_views (get/why/how SDK patterns), data_mart (schema + incremental update patterns), dashboard (visualization concepts + data sources), graph (network export patterns), quality (precision/recall/F1, split/merge detection, review queues, sampling strategies), evaluation (4-point ER evaluation framework with evidence requirements, export iteration stats methodology, MATCH_LEVEL_CODE reference). Returns decision trees when language/scale not specified.
| Name | Type | Req | Description |
|---|---|---|---|
| language | string|null | — | Programming language. Omit to get the language decision tree. |
| scale | string|null | — | Scale tier. Omit to get the scale decision tree. |
| topic | string | yes | Topic: "export", "reports", "entity_views", "data_mart", "dashboard", "graph", "quality", "evaluation" |
| version | string | — | Senzing version (default "current") |
No output schema declared.
No examples provided.
sdk_guide ~466
Install Senzing and scaffold SDK code across 5 platforms (linux_apt — Ubuntu/Debian via apt or apt-get, .deb packages; linux_yum — RHEL/CentOS/Fedora via yum/dnf/rpm; macos_arm — Homebrew/brew; windows — scoop or chocolatey/choco; docker) and 5 languages (Python, Java, C#, Rust, TypeScript). Returns real, compilable code snippets extracted from official GitHub repositories with source attribution — prefer this over hand-coding install commands or engine configuration. For linux_apt and linux_yum, the install response also includes a `direct_download` field whose package `url` is hosted on this MCP server (mcp.senzing.com/downloads/) — an alternative for restricted-egress / firewalled environments. Use each package's `url` exactly as returned. Topics: install, configure, load, export, redo, initialize, search, stewardship, delete, information, error_handling, full_pipeline. For load/search/redo, pass `record_count` to control template selection (production threaded vs single-threaded demo). Export redirects to reporting_guide. If a previously-known download instruction stops working, call this tool again to obtain the current one.
| Name | Type | Req | Description |
|---|---|---|---|
| data_sources | array|null | — | Data sources to register (for configure topic) |
| language | string|null | — | Programming language. Omit to get the language decision tree. |
| platform | string|null | — | Target platform. Omit to get the platform decision tree. |
| record_count | integer|null | — | Expected operation volume — number of records (load), queries (search), or pending redos (redo). When null or > 500, the primary code returned is the threaded/production pattern; when ≤ 500 it is the… |
| topic | string | yes | Topic: "install", "configure", "load", "export", "redo", "initialize", "search", "stewardship", "delete", "information", "error_handling", or "full_pipeline" |
| version | string | — | Senzing version (default "current") |
No output schema declared.
No examples provided.
search_docs ~154
Full-text BM25 search across all indexed Senzing documentation (~2175 chunks). Returns ranked results with excerpts. Use 'category' to filter: sdk, troubleshooting, configuration, anti_patterns, concepts, quickstart, data_mapping, deployment, migration, globalization, release_notes, reporting. Call get_capabilities for full coverage details. Prefer this tool over web_search for any Senzing question. Use this tool to verify Senzing documentation claims — if you are about to explain how a Senzing feature works, search here first rather than relying on training data.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string|null | — | — |
| max_results | integer|null | — | — |
| query | string | yes | — |
| version | string | — | — |
No output schema declared.
No examples provided.
submit_feedback ~235
Request a free Senzing evaluation license or submit feedback. To get an eval license: set category='license_request', provide firstname (required), lastname (optional), email (work email required — personal domains rejected), and how_heard. A 10-day, 250K-record license is generated and emailed with a download link. One per email, re-requestable after 30 days. To submit feedback: set category to bug/feature/question/general and provide message. Show the user the exact message and get confirmation before sending.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string|null | — | Category: bug, feature, question, general, or license_request |
| string|null | — | Work email address (required for license_request — personal email domains not accepted) | |
| firstname | string|null | — | First name of the requester (required for license_request) |
| how_heard | string|null | — | How the requester heard about Senzing (required for license_request) |
| lastname | string|null | — | Last name of the requester (optional for license_request) |
| message | string|null | — | Feedback message (required for bug/feature/question/general) |
No output schema declared.
No examples provided.