Senzing
Ce que fait ce MCP
Supports Senzing entity-resolution workflows through data mapping, validation scripts, SDK scaffolding, documentation search, sample data, and troubleshooting.
Outils
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['workspace_dir'], 'properties': {'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default: "current").'}, 'file_paths': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'default': None, 'description': 'File paths to analyze (Senzing JSON or JSONL files).\nCommands will be generated for each path.'}, 'workspace_dir': {'type': 'string', 'description': 'REQUIRED: Workspace directory for the analyzer script and any\ngenerated reports. Must be a writable absolute or relative path that\nalready exists in your environment. Do NOT assume `/tmp` exists —\nsome environments (e.g. Kiro) do not provide it. Typical values:\nLinux: `/tmp` or `~/sz-workspace`; macOS: `~/sz-workspace`;\nKiro/sandboxed: an explicit path under `~`, e.g. `~/sz-workspace`.\n\nDeclared as a non-optional `String` (no `#[serde(default)]`) so it\nappears in the generated JSON `inputSchema` `required` array. The prose\nhas always said REQUIRED, but as an `Option` it was schema-optional, so\nschema-respecting clients omitted it and looped on the `needs_param`\nguidance. An empty string still deserializes; the handler catches that\nand returns the guidance as an `isError` result.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'inline': {'type': ['boolean', 'null'], 'default': None, 'description': '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. Large resources come back in BOUNDED CHUNKS: a truncated response carries `truncated: true`, `next_offset` and `total_chars` — call again with `offset` = `next_offset` to continue. For the Entity Specification prefer `search_docs`: it serves the same document already split by section, which is cheaper than paging through 75 KB.'}, 'offset': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0, 'description': 'Character offset into the resource for `inline=true` pagination. Pass the\n`next_offset` from a previous truncated response. Default 0.'}, 'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default: "current").'}, 'filename': {'type': ['string', 'null'], 'default': None, 'description': 'Resource filename to retrieve (e.g. "sz_json_analyzer.py",\n"senzing_entity_specification.md"). Ignored when `filenames` is provided.'}, 'filenames': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'default': None, 'description': 'Multiple resource filenames to retrieve in a single call.\nTakes precedence over `filename` when provided.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['error_code'], 'properties': {'version': {'type': 'string', 'default': 'current'}, 'error_code': {'type': 'string'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'repo': {'type': ['string', 'null'], 'description': 'Filter to a specific indexed repo (e.g. "brianmacy/sz_mem-v4"). When combined with\nfile_path, returns full file content. When combined with list_files, returns file listing.'}, 'query': {'type': ['string', 'null'], 'default': None, 'description': 'Search query (required for search mode, optional when using repo+file_path or repo+list_files)'}, 'language': {'type': ['string', 'null'], 'description': 'Filter results by programming language (e.g. "python", "java", "csharp", "rust")'}, 'file_path': {'type': ['string', 'null'], 'description': 'Return full content of a specific file in the repo (requires repo parameter)'}, 'max_lines': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0, 'description': 'Maximum lines to return for file content (default: unlimited). Useful for large files.'}, 'list_files': {'type': ['boolean', 'null'], 'default': None, 'description': 'Return the file listing for a repo instead of searching (requires repo parameter)'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['language', 'workflow'], 'properties': {'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version: "4.0", "current", or "3.x". V3 supports Python and Java only'}, 'language': {'type': 'string', 'description': 'Programming language: python, java, csharp (or c#, cs, dotnet), rust (or rs), typescript (or ts, node, nodejs, javascript, js)'}, 'workflow': {'type': 'string', 'description': '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, redoer, force_resolve, info, error, retry, e2e)'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'version': {'type': 'string', 'default': 'current'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['dataset'], 'properties': {'limit': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0}, 'offset': {'oneOf': [{'type': 'integer', 'minimum': 0, 'description': 'Explicit zero-based record offset for pagination.'}, {'const': 'random', 'description': 'Start at a pseudo-random offset (same as omitting the field).'}, {'type': 'null', 'description': 'Random start (same as omitting the field).'}], 'default': None, 'description': 'Record offset. Use a number for explicit pagination, or "random" for a random starting position. Omit for random.'}, 'source': {'type': ['string', 'null'], 'description': 'Filter by data source/vendor within a dataset (e.g., "equifax", "ppp_loans").\nOmit to see all sources. Use "list" to list available sources.'}, 'dataset': {'type': 'string', 'description': 'Dataset name (e.g., "las-vegas", "london", "moscow").\nUse "list" to discover available datasets and their sources.\n(Required: schema-respecting clients cannot omit it — pass "list" to discover.)'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['topic'], 'properties': {'topic': {'enum': ['parameters', 'params', 'parameter', 'signatures', 'signature', 'arguments', 'args', 'functions', 'function', 'methods', 'method', 'classes', 'class', 'api', 'flags', 'response_schemas', 'response_schema', 'responses', 'migration', 'all'], 'type': 'string', 'description': 'Topic: "parameters" (aliases: functions, methods, classes, api,\nsignatures, args), "flags", "response_schemas", "migration", or "all".\n\nYou do not need "parameters" just to see a signature: any topic filtered\nby a method name returns that method\'s signature in `method_signatures`.'}, 'filter': {'type': ['string', 'null'], 'default': None, 'description': "Optional filter: method name, class name, module name, or flag name.\nAny spelling resolves — `get entity`, `get_entity`, and `getEntity` all\nreach the same method.\n\nExamples are backticked, not double-quoted, on purpose: downstream\nclients derive a property's valid-value set from the double-quoted\ntokens in this description, so quoting examples here would advertise\nthem as the only accepted filters."}, 'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default: "current")'}, 'language': {'type': ['string', 'null'], 'default': None, 'description': 'Language binding: "python", "java", "csharp", "rust", or "typescript".\nNarrows signatures to that binding; cross-binding divergence warnings\nare kept either way. Omit to compare every binding side by side.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'data': {'default': None, 'description': 'Step-specific data (for "advance" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it.'}, 'state': {'default': None, 'description': 'Workflow state from previous response (required for all actions except "start").\nCRITICAL: Pass the EXACT \'state\' JSON object from the previous mapping_workflow\nresponse verbatim — do NOT reconstruct, modify, or omit any fields.\nIf you have lost the state, call with action=\'start\' instead.'}, 'action': {'enum': ['start', 'advance', 'back', 'status', 'reset', None], 'type': ['string', 'null'], 'default': None, 'description': 'Action to perform. ONLY these values are valid: start, advance, back, status, reset.'}, 'payload': {'type': 'object', 'oneOf': [{'type': 'object', 'title': 'advance from step 1 (profile_source_data)', 'required': ['profile_summary', 'for_step'], 'properties': {'for_step': {'const': 1}, 'capped_files': {'type': 'array', 'items': {'type': 'string'}}, 'workspace_dir': {'type': 'string'}, 'profile_summary': {'type': 'array', 'items': {'type': 'object', 'required': ['schema_name', 'record_count', 'field_count'], 'properties': {'field_count': {'type': 'integer', 'minimum': 0, 'description': 'Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.'}, 'schema_name': {'type': 'string', 'description': 'Name of the source schema/table (for one flat file, its base name).'}, 'record_count': {'type': 'integer', 'minimum': 0, 'description': "Records in this schema. Use the profiler's count when it ran. If you could NOT read the file (the user only listed columns, or you have no shell), use the count the user stated, else 0. Zero is a legitimate, expected value — it means 'not measured', it is not fabrication, and it does not degrade the mapping."}}, 'additionalProperties': False}, 'minItems': 1, 'description': "One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required."}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)', 'required': ['master_schemas', 'support_schemas', 'for_step'], 'properties': {'for_step': {'const': 2}, 'decisions': {'type': 'array'}, 'questions': {'type': 'array'}, 'master_schemas': {'type': 'array', 'items': {'type': 'object', 'required': ['schema_name', 'data_source', 'record_type', 'record_id_source'], 'properties': {'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'data_source': {'type': 'string', 'description': 'UPPERCASE data source code'}, 'field_count': {'type': 'integer'}, 'record_type': {'enum': ['PERSON', 'ORGANIZATION', 'VESSEL', 'AIRCRAFT']}, 'schema_name': {'type': 'string'}, 'record_id_source': {'type': 'string', 'description': 'field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists'}}, 'additionalProperties': False}, 'minItems': 1, 'description': "The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here."}, 'support_schemas': {'type': 'array', 'items': {'type': 'object', 'required': ['schema_name', 'disposition'], 'properties': {'role': {'type': 'string'}, 'to_key': {'type': 'string'}, 'from_key': {'type': 'string'}, 'join_key': {'type': 'string'}, 'key_field': {'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'disposition': {'enum': ['lookup', 'relationship', 'child']}, 'field_count': {'type': 'integer'}, 'schema_name': {'type': 'string'}}, 'additionalProperties': False}, 'description': 'Lookups, relationships, and child schemas that fold into the masters.'}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 3 (map_fields)', 'required': ['schema_mappings', 'for_step'], 'properties': {'for_step': {'const': 3}, 'decisions': {'type': 'array'}, 'questions': {'type': 'array'}, 'schema_mappings': {'type': 'array', 'items': {'type': 'object', 'required': ['schema_name', 'field_mappings'], 'properties': {'schema_name': {'type': 'string'}, 'code_mappings': {'type': 'object'}, 'field_mappings': {'type': 'array', 'items': {'oneOf': [{'type': 'object', 'required': ['disposition', 'feature', 'attribute'], 'properties': {'ref': {'type': 'string'}, 'custom': {'type': 'boolean', 'description': 'set true to deliberately map to a CUSTOM attribute not in the default Senzing spec (your schema added it); declare it via custom_attributes. Omit/false for standard catalog attributes.'}, 'feature': {'type': 'string', 'description': 'feature family, e.g. NAME'}, 'attribute': {'type': 'string', 'description': 'attribute code, e.g. NAME_FULL'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'usage_type': {'type': ['string', 'null']}, 'disposition': {'const': 'feature'}, 'ref_citation': {'type': 'string'}, 'source_field': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['disposition', 'source_field'], 'properties': {'ref': {'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'disposition': {'const': 'payload'}, 'ref_citation': {'type': 'string'}, 'source_field': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['disposition', 'source_field'], 'properties': {'ref': {'type': 'string'}, 'reason': {'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'disposition': {'const': 'ignore'}, 'ref_citation': {'type': 'string'}, 'source_field': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['disposition', 'derived_as'], 'properties': {'ref': {'type': 'string'}, 'role': {'type': 'string', 'description': 'for REL_POINTER'}, 'value': {'type': 'string'}, 'domain': {'type': 'string', 'description': 'for REL_ANCHOR/REL_POINTER'}, 'source': {'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'derived_as': {'enum': ['DATA_SOURCE', 'RECORD_ID', 'RECORD_TYPE', 'REL_ANCHOR', 'REL_POINTER'], 'type': 'string'}, 'disposition': {'const': 'derived'}, 'ref_citation': {'type': 'string'}, 'source_field': {'type': 'string'}, 'justification': {'type': 'string', 'description': 'provenance for a constant derived RECORD_TYPE (validator-enforced)'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['disposition', 'source_field', 'expected_features'], 'properties': {'ref': {'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1.0, 'minimum': 0.0}, 'disposition': {'const': 'extract'}, 'ref_citation': {'type': 'string'}, 'source_field': {'type': 'string'}, 'extraction_notes': {'type': 'string'}, 'expected_features': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}]}}, 'type_discriminator': {'type': 'object'}}}, 'minItems': 1}}}, {'type': 'object', 'title': 'advance from step 4 (generate_validate)', 'required': ['verdict', 'for_step'], 'properties': {'verdict': {'enum': ['approve', 'rework_mapping', 'rework_code'], 'type': 'string'}, 'for_step': {'const': 4}, 'output_path': {'type': 'string'}, 'records_output': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 5 (detect_environment)', 'required': ['decision', 'for_step'], 'properties': {'decision': {'enum': ['skip', 'test_load'], 'type': 'string'}, 'for_step': {'const': 5}, 'senzing_config': {'type': 'object'}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 6 (load_test_data)', 'required': ['records_loaded', 'for_step'], 'properties': {'for_step': {'const': 6}, 'load_errors': {'type': 'integer', 'minimum': 0}, 'records_loaded': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 7 (validation_report)', 'required': ['report_generated', 'for_step'], 'properties': {'for_step': {'const': 7}, 'report_path': {'type': 'string'}, 'report_generated': {'const': True}}, 'additionalProperties': False}, {'type': 'object', 'title': 'advance from step 8 (evaluate_results)', 'required': ['verdict', 'for_step'], 'properties': {'verdict': {'enum': ['approve', 'marginal', 'rework_mapping', 'rework_code'], 'type': 'string'}, 'for_step': {'const': 8}}, 'additionalProperties': False}], 'default': None, 'description': 'Typed step payload for the "advance" action (H16). A discriminated `oneOf`\nover each step\'s accepted shape — pick the branch whose `for_step` equals\nthe step number you are advancing FROM. When present it is merged over\n`data` (payload wins); when absent, behavior is identical to sending `data`.'}, 'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default: "current").'}, 'file_paths': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'default': None, 'description': 'Source file paths (required for "start" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.'}, 'workspace_dir': {'type': ['string', 'null'], 'default': None, 'description': 'Writable output directory (required for "start" action). Historically\nthis lived ONLY inside `data` while `file_paths` lived ONLY at the top\nlevel, so the two arguments of a single call sat in different places.\nClients reliably put both in one place — either place — and the half\nthat landed in the "wrong" one was silently dropped, producing a\n"required" error for an argument that WAS sent and forcing a retry.\nBoth placements are now accepted for both arguments; top level wins\nwhen a value is present in both.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['topic'], 'properties': {'scale': {'type': ['string', 'null'], 'default': None, 'description': 'Scale tier. Omit to get the scale decision tree.'}, 'topic': {'enum': ['export', 'extract', 'reports', 'report', 'aggregate', 'summary', 'analytics', 'entity_views', 'entity', 'get', 'why', 'how', 'compare', 'data_mart', 'datamart', 'mart', 'schema', 'database', 'dashboard', 'visualization', 'visualize', 'chart', 'charts', 'graph', 'network', 'relationships', 'quality', 'accuracy', 'precision', 'recall', 'f1', 'audit', 'splits', 'merges', 'truth', 'evaluation', 'eval', 'er_quality', 'validation', 'evaluate', 'assessment'], 'type': 'string', 'description': 'Topic: "export", "reports", "entity_views", "data_mart", "dashboard", "graph", "quality", "evaluation"'}, 'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default "current")'}, 'language': {'type': ['string', 'null'], 'default': None, 'description': 'Programming language. Omit to get the language decision tree.'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['topic'], 'properties': {'topic': {'enum': ['install', 'setup', 'configure', 'config', 'configuration', 'load', 'ingest', 'add_records', 'add', 'export', 'extract', 'dump', 'redo', 'redo_records', 'initialize', 'init', 'startup', 'search', 'find', 'lookup', 'get_entity', 'stewardship', 'steward', 'flag', 'flags', 'delete', 'remove', 'purge', 'information', 'info', 'stats', 'diagnostics', 'error_handling', 'errors', 'exceptions', 'full_pipeline', 'e2e', 'end_to_end', 'pipeline', 'full'], 'type': 'string', 'description': 'Topic: "install", "configure", "load", "export", "redo", "initialize", "search",\n"stewardship", "delete", "information", "error_handling", or "full_pipeline"'}, 'version': {'type': 'string', 'default': 'current', 'description': 'Senzing version (default "current")'}, 'language': {'type': ['string', 'null'], 'default': None, 'description': 'Programming language. Omit to get the language decision tree.'}, 'platform': {'type': ['string', 'null'], 'default': None, 'description': 'Target platform. Omit to get the platform decision tree.'}, 'data_sources': {'type': ['array', 'null'], 'items': {'type': 'string'}, 'default': None, 'description': 'Data sources to register (for configure topic)'}, 'record_count': {'type': ['integer', 'null'], 'format': 'uint64', 'default': None, 'minimum': 0, 'description': 'Expected operation volume — number of records (load), queries (search), or\npending redos (redo). When null or > 500, the primary code returned is the\nthreaded/production pattern; when ≤ 500 it is the single-threaded demo.\nValues > 500 also surface license guidance (default Senzing license limit).'}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string'}, 'version': {'type': 'string', 'default': 'current'}, 'category': {'type': ['string', 'null'], 'description': "Optional category boost: results from this category rank first, then are\nbackfilled from all categories — it is NOT a hard filter, and an unknown\nvalue degrades to a broad search with a warning. Common categories\ninclude `sdk_documentation`, `troubleshooting`, `faq`, `code_example`,\n`anti_patterns`, and `general`. Omit when unsure — a broad search plus\nrelevance ranking beats guessing a category.\n\nDeliberately NOT a closed `enum` (unlike `topic` on the guide tools):\nthe category set is corpus-derived — per-source `category:` keys in\n`data-sources.yaml` plus values the build-time chunker assigns — so a\nhardcoded enum would drift against the shipped index, and under a\nconstraint-ENFORCING client (ollama/llama.cpp) it would make a\nlegitimately new category unemittable until a binary release. Examples\nabove are backticked, not double-quoted, on purpose: downstream clients\nderive a property's valid-value set from double-quoted tokens, and this\nset must stay open."}, 'max_results': {'type': ['integer', 'null'], 'format': 'uint', 'default': None, 'minimum': 0}}}
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'email': {'type': ['string', 'null'], 'default': None, 'description': 'Work email address (required for license_request — personal email domains not accepted)'}, 'message': {'type': ['string', 'null'], 'default': None, 'description': 'Feedback message (required for bug/feature/question/general)'}, 'category': {'type': ['string', 'null'], 'default': None, 'description': 'Category: bug, feature, question, general, or license_request'}, 'lastname': {'type': ['string', 'null'], 'default': None, 'description': 'Last name of the requester (optional for license_request)'}, 'firstname': {'type': ['string', 'null'], 'default': None, 'description': 'First name of the requester (required for license_request)'}, 'how_heard': {'type': ['string', 'null'], 'default': None, 'description': 'How the requester heard about Senzing (required for license_request)'}}}
Modifications récentes des outils
Serveurs MCP similaires
Thousand API
Provides deterministic data conversion, validation, JSON transformation, statistical calculations, date and schedule utilities, i…
HubVibe: Pay-per-Call Tools for AI Agents: Web Search, Email Verify, KYC, Stocks, Crypto, News, Data
Offers paid utilities for web audits, HTTP fetching and extraction, BigQuery analysis, LLM processing, code execution, blockchain…
Blixtworks
Offers pay-per-call utilities for text, image processing and analysis, data conversion, validation, web inspection, cryptography,…
Qiniso
Provides deterministic formatting, parsing, holiday and tax lookups, address handling, and checksum or structure validation for i…
Scalix Cloud
Provides managed databases, SQL tools, container builds, persistent Linux machines, domains, scheduled functions, storage, and pr…
RationalBloks
Creates, deploys, manages, and searches schema-based REST API projects and Neo4j knowledge graphs across staging and production e…
RationalBloks
Creates, deploys, manages, and queries REST API and Neo4j graph projects from JSON schemas, including graph data modeling, versio…
Wakatime
Provides WakaTime coding-activity data, including durations, projects, commits, goals, heartbeats, editor usage, leaders, and use…