Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "find_examples"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Find working SOURCE CODE examples from5253 indexed Senzing GitHub repositories. REQUIRED: either `query` ⟨112 unchanged words⟩
Changed the definition of "download_resource" and "mapping_workflow"
DownloadReturnsworkflowresourceresourcesURLs/contentbyinname.this response; it does NOT write any files. Each resource comes back with a ready `fetch` shell command — run it yourself to save the file to its `dest`. Use inline=true only when a `fetch` command could not reach the server; the content then arrives in this response and you must write it to `dest`. Pass `filename` (string) or `filenames` (array);, plus `workspace_dir` (the mapping workflow's) so `dest` matches the workflow's paths; calling with neither filename returns the list of available resources (it does ⟨6 unchanged words⟩ , sz_verbatim_check.py, sz_routing_report.py, senzing_entity_specification.md, senzing_mapping_examples.md, identifier_crosswalk.jsonEachmapping_workflowresourceand
Changed the definition of "get_sample_data", "mapping_workflow" and "sdk_guide"
⟨38 unchanged words⟩ string"},"limit":{"default":null,"description":"Number of records to PREVIEW inline in this response — at most 5; a\nlarger value is capped. The inline records are a preview, NOT the\ndataset: for N records use the response's `download_url` (or its\nextract command when running locally), which delivers the full file —\nthen take the first N lines (`head -n N`), one JSON record per line.","format":"uint","minimum":0,"type" ⟨95 unchanged words⟩
before
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it."},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.","items":{"type":"string"},"type":["array","null"]},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"state":{"default":null,"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."},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"},"workspace_dir":{"default":null,"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.","type":["string","null"]}},"type":"object"}Changed the definition of "search_docs"
⟨137 unchanged words⟩ "]},"max_results":{"default":null,"description":"Maximum number of results to return (default 10, maximum 50). A larger\nvalue is clamped to 50 and the response carries a `max_results_notice`.","format":"uint","minimum":0,"type" ⟨14 unchanged words⟩
Changed the definition of "find_examples"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Find working SOURCE CODE examples from5452 indexed Senzing GitHub repositories. REQUIRED: either `query` ⟨112 unchanged words⟩
Changed the definition of "find_examples", "generate_scaffold", "get_sample_data" and 1 more
⟨99 unchanged words⟩ REST APIs. Use max_lines to limit large files.ReturnsFileGitHubretrievalrawreturnsURLstheforfile'sfilelocationretrieval.instead of its content: follow the returned `resources` / `access_steps` exactly as given.
Changed the definition of "find_examples" and "get_sample_data"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Find working SOURCE CODE examples from5354 indexed Senzing GitHub repositories. REQUIRED: either `query` ⟨100 unchanged words⟩
Getrealsample data for entity resolution. Available datasets: 'las-vegas', 'london', 'moscow' (CORD — Collections Of Relatable Data), REAL historical data) and 'truthset' (the
Changed the definition of "find_examples"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Find working SOURCE CODE examples from4253 indexed Senzing GitHub repositories. REQUIRED: either `query` ⟨100 unchanged words⟩
Changed the definition of "mapping_workflow"
before
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it."},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action).","items":{"type":"string"},"type":["array","null"]},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"state":{"default":null,"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."},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"}},"type":"object"}Changed the definition of "mapping_workflow"
{"$defs":{"WorkflowAction":{"description":"Actions the client can perform on the workflow.","enum":["start","advance","back","status","reset"],"type":"string"}},"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"anyOf":[{"$ref":"#/$defs/WorkflowAction"},{"type":"null"}],"default":null,"description":"Action to perform. ⟨5 unchanged words⟩ : start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description" ⟨921 unchanged words⟩
Changed the definition of "download_resource" and "mapping_workflow"
⟨74 unchanged words⟩ 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.","type":["boolean","null"]},"offset":{"default":null,"description":"Character offset into the resource for `inline=true` pagination. Pass the\n`next_offset` from a previous truncated response. Default 0.","format":"uint","minimum":0,"type":["integer","null"]},"version":{"default" ⟨12 unchanged words⟩
⟨11 unchanged words⟩ Changed the definition of "mapping_workflow"
⟨66 unchanged words⟩ it). The call WILL FAIL without both. NO READABLE FILE, NO SHELL, NO PROBLEM — START ANYWAY: `file_paths` is a LABEL. The server NEVER opens it. Pass the name(s) the user gave you even if the file does not exist on your machine, and pass any writable directory as `workspace_dir`. If the user only DESCRIBED their columns, or you have no shell to run the profiler, step 1 accepts a `profile_summary` you write yourself from what they told you (`record_count` may be 0). An unreadable source file is NOT a reason to hand-code a mapping instead. Actions: start, advance, back, status, reset. ⟨167 unchanged words⟩
Changed the definition of "get_sample_data"
⟨115 unchanged words⟩ fetch instruction to the user exactly as given. DownloadingDotheNOTdatasetdownloadTO DISK is expected and encouraged whenever the user wants the data — fetch ityourselfwith a shell command (curl/wget) to a file and work from that file. What you must NOT do is pull the dataset INTO THE CONVERSATION: never echo, cat, paste ordumpsummarise raw records back intothecontext,
Certificate recorded, valid to 2026-11-18
Authorization not required
First tool surface recorded: 13 tools (server version 2.2.0)
Showing the latest 16 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨53 unchanged words⟩ description":"Returns resource content inline instead ofURLs.`fetch`ALWAYScommands.tryNEVERwiththeinline=falsefirst(default)call:firstrun—theonlyresource's `fetch` command first, and set inline=true only if that command could not reach theURLserver.fetchThisfails.tool writes no files in either mode — inline content must then be written to `dest` by you. Inline responses consume more context tokens. Large resources ⟨84 unchanged words⟩ \"current\").","type":"string"},"workspace_dir":{"default":null,"description":"Directory the resources belong in — the mapping workflow's `workspace_dir`. Each resource's `dest` is `<workspace_dir>/<filename>`; omitted, `dest` is relative to your shell's current directory. Pass it so a fallback writes to the same paths the workflow uses.","type":["string","null"]}},"type":"object"}
⟨51 unchanged words⟩ is not readable from here), AND `workspace_dir`inside the `data` object(e.g.data={"workspace_dir":workspace_dir="/home/you/sz-workspace"}) — a writable directory where scripts, reference ⟨27 unchanged words⟩ it does NOT need the file to exist. OPTIONAL on start: `output_path` — the output file the USER ASKED FOR, if any (a .jsonl path; a directory ending in / for one <schema_name>.jsonl per schema; or a per-schema map {"<schema_name>": "<path>.jsonl"}). Omit it for the default <workspace_dir>/<name>_output.jsonl. Start arguments are accepted at the top level or inside `payload`. NO READABLE FILE, NO SHELL — START ⟨177 unchanged words⟩ from the previous response, (3) omittingdatapayload on advance — each step requires specificdatapayload fields documented in the instructions (`data` is a legacy alias of `payload`), (4) omitting the file_paths or workspace_dir ⟨34 unchanged words⟩
before
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it.","type":"object"},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.","items":{"type":"string"},"type":["array","null"]},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"payload_file":{"default":null,"description":"LOCAL SERVER ONLY (this server runs on your machine) — the preferred route for a large `advance`\npayload (e.g. the step-3 mapping): the path of a JSON file you already\nwrote inside the workflow's workspace_dir, e.g.\n`<workspace_dir>/mapping_spec.json`. The server reads it from disk, so\nthe payload never leaves this host and you do not hand-serialize a\nmulti-KB object into the call. It is used exactly like `payload` (it\nwins over `data`); send `payload` OR `payload_file`, not both. A remote\nserver refuses it — send the payload inline as a JSON object.","type":["string","null"]},"state":{"default":null,"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.","type":"object"},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"},"workspace_dir":{"default":null,"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.","type":["string","null"]}},"type":"object"}after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it.","type":"object"},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.","items":{"type":"string"},"type":["array","null"]},"output_path":{"anyOf":[{"type":"string"},{"additionalProperties":{"type":"string"},"type":"object"}],"default":null,"description":"Optional, \"start\" only: the output file the USER ASKED FOR, if any — the\nSenzing JSONL the mapper writes at step 4. Omit it to use the default\n`<workspace_dir>/<name>_output.jsonl`. Forms: a file path ending in\n`.jsonl` (absolute, or relative to workspace_dir; no `..`); a directory\nending in `/` (one `<dir>/<schema_name>.jsonl` per source schema); or a\nper-schema map `{\"<schema_name>\": \"<path>.jsonl\"}`. Accepted at the top\nlevel or inside `payload`/`data`, like workspace_dir."},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"state":{"default":null,"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.","type":"object"},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"},"workspace_dir":{"default":null,"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.","type":["string","null"]}},"type":"object"}after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it.","type":"object"},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.","items":{"type":"string"},"type":["array","null"]},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"payload_file":{"default":null,"description":"LOCAL SERVER ONLY (this server runs on your machine) — the preferred route for a large `advance`\npayload (e.g. the step-3 mapping): the path of a JSON file you already\nwrote inside the workflow's workspace_dir, e.g.\n`<workspace_dir>/mapping_spec.json`. The server reads it from disk, so\nthe payload never leaves this host and you do not hand-serialize a\nmulti-KB object into the call. It is used exactly like `payload` (it\nwins over `data`); send `payload` OR `payload_file`, not both. A remote\nserver refuses it — send the payload inline as a JSON object.","type":["string","null"]},"state":{"default":null,"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.","type":"object"},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"},"workspace_dir":{"default":null,"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.","type":["string","null"]}},"type":"object"}⟨24 unchanged words⟩ — Homebrew/brew; windows — scoop or chocolatey/choco; docker). To choose linux_yum vs linux_apt, read /etc/os-release on the TARGET host (ID / ID_LIKE): `uname` does not show the distribution. If `platform` is omitted for install and5thislanguagesserver runs on the install host itself, it detects the platform from that host's os-release. Languages: 5 (Python, Java, C#, Rust, TypeScript). ⟨34 unchanged words⟩ (.deb for linux_apt, .rpm for linux_yum,andthe macOS packages for macos_arm, and the .deb runtime + setup for a plain Linux container under docker), the install response also includes a `direct_download` ⟨77 unchanged words⟩
⟨38 unchanged words⟩ {"default":null,"description":"Target platform. Choose linux_yum vs linux_apt from /etc/os-release on the\nTARGET host (ID / ID_LIKE), not from `uname`. Omit to get theplatformplatform\ndecisiondecisiontreetree.— or, when the server runs locally (stdio), the platform\ndetected from this host's os-release.","type":["string","null"]} ⟨142 unchanged words⟩
⟨89 unchanged words⟩ , e2e). V3 supports Python only. ReturnsGitHubeachrawsnippet'sURLslocation rather than its content —fetchfolloweachthesnippetreturned `resources` / `access_steps` exactly as given to read the source code.
⟨181 unchanged words⟩ encouraged whenever the user wants the data —fetchrunitthewithreturned download instruction in a shellcommand(a URL to fetch with curl/wget, or a local command) to write it to a file, and work from that file. What you must ⟨91 unchanged words⟩
⟨56 unchanged words⟩ this over hand-coding install commands or engine configuration.ForWhenlinux_aptthisandserverlinux_yum,carries theinstallSDKresponsepackagesalsoforincludestheachosen`direct_download`platformfield(.debwhoseforpackagelinux_apt,`url`.rpmisforhostedlinux_yum,onandthistheMCPmacOSserverpackages(mcp.senzing.com/downloads/for macos_arm), the install response also includes a `direct_download` field — an alternative for restricted-egress / firewalledenvironments.environments that needs no package-repository configuration. Use each package's `url` exactly asreturned.returned, and pick the packages whose `arch` matches the host. Topics: install, configure, load, export, ⟨42 unchanged words⟩
after
{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"action":{"default":null,"description":"Action to perform. ONLY these values are valid: start, advance, back, status, reset.","enum":["start","advance","back","status","reset",null],"type":["string","null"]},"data":{"default":null,"description":"Step-specific data (for \"advance\" action). Legacy untyped channel; prefer\n`payload` (typed) when your client can satisfy it."},"file_paths":{"default":null,"description":"Source file paths (required for \"start\" action). Also accepted inside\n`data` — see `workspace_dir` for why both placements are honoured.","items":{"type":"string"},"type":["array","null"]},"payload":{"default":null,"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`.","oneOf":[{"additionalProperties":false,"properties":{"capped_files":{"items":{"type":"string"},"type":"array"},"for_step":{"const":1},"profile_summary":{"description":"One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":["schema_name","record_count","field_count"],"type":"object"},"minItems":1,"type":"array"},"workspace_dir":{"type":"string"}},"required":["profile_summary","for_step"],"title":"advance from step 1 (profile_source_data)","type":"object"},{"additionalProperties":false,"properties":{"decisions":{"type":"array"},"for_step":{"const":2},"master_schemas":{"description":"The main/primary entities (disposition 'master'). At least one is required — the slot IS the master disposition, so NO `disposition` field here.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"data_source":{"description":"UPPERCASE data source code","type":"string"},"field_count":{"type":"integer"},"record_id_source":{"description":"field name of the stable natural key (PREFERRED), or RECORD_HASH only when no stable unique field exists","type":"string"},"record_type":{"enum":["PERSON","ORGANIZATION","VESSEL","AIRCRAFT"]},"schema_name":{"type":"string"}},"required":["schema_name","data_source","record_type","record_id_source"],"type":"object"},"minItems":1,"type":"array"},"questions":{"type":"array"},"support_schemas":{"description":"Lookups, relationships, and child schemas that fold into the masters.","items":{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"enum":["lookup","relationship","child"]},"field_count":{"type":"integer"},"from_key":{"type":"string"},"join_key":{"type":"string"},"key_field":{"type":"string"},"role":{"type":"string"},"schema_name":{"type":"string"},"to_key":{"type":"string"}},"required":["schema_name","disposition"],"type":"object"},"type":"array"}},"required":["master_schemas","support_schemas","for_step"],"title":"advance from step 2 (plan_entity_structure) — master-slot shape (master-less plan ungeneratable; required/enum/minItems subset, no contains/if-then)","type":"object"},{"properties":{"decisions":{"type":"array"},"for_step":{"const":3},"questions":{"type":"array"},"schema_mappings":{"items":{"properties":{"code_mappings":{"type":"object"},"field_mappings":{"items":{"oneOf":[{"additionalProperties":false,"properties":{"attribute":{"description":"attribute code, e.g. NAME_FULL","type":"string"},"confidence":{"maximum":1,"minimum":0,"type":"number"},"custom":{"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.","type":"boolean"},"disposition":{"const":"feature"},"feature":{"description":"feature family, e.g. NAME","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"},"usage_type":{"type":["string","null"]}},"required":["disposition","feature","attribute"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"payload"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"ignore"},"reason":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"derived_as":{"enum":["DATA_SOURCE","RECORD_ID","RECORD_TYPE","REL_ANCHOR","REL_POINTER"],"type":"string"},"disposition":{"const":"derived"},"domain":{"description":"for REL_ANCHOR/REL_POINTER","type":"string"},"justification":{"description":"provenance for a constant derived RECORD_TYPE (validator-enforced)","type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"role":{"description":"for REL_POINTER","type":"string"},"source":{"type":"string"},"source_field":{"type":"string"},"value":{"type":"string"}},"required":["disposition","derived_as"],"type":"object"},{"additionalProperties":false,"properties":{"confidence":{"maximum":1,"minimum":0,"type":"number"},"disposition":{"const":"extract"},"expected_features":{"items":{"type":"string"},"type":"array"},"extraction_notes":{"type":"string"},"ref":{"type":"string"},"ref_citation":{"type":"string"},"source_field":{"type":"string"}},"required":["disposition","source_field","expected_features"],"type":"object"}]},"type":"array"},"schema_name":{"type":"string"},"type_discriminator":{"type":"object"}},"required":["schema_name","field_mappings"],"type":"object"},"minItems":1,"type":"array"}},"required":["schema_mappings","for_step"],"title":"advance from step 3 (map_fields)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":4},"output_path":{"type":"string"},"records_output":{"minimum":0,"type":"integer"},"verdict":{"enum":["approve","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 4 (generate_validate)","type":"object"},{"additionalProperties":false,"properties":{"decision":{"enum":["skip","test_load"],"type":"string"},"for_step":{"const":5},"senzing_config":{"type":"object"}},"required":["decision","for_step"],"title":"advance from step 5 (detect_environment)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":6},"load_errors":{"minimum":0,"type":"integer"},"records_loaded":{"minimum":0,"type":"integer"}},"required":["records_loaded","for_step"],"title":"advance from step 6 (load_test_data)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":7},"report_generated":{"const":true},"report_path":{"type":"string"}},"required":["report_generated","for_step"],"title":"advance from step 7 (validation_report)","type":"object"},{"additionalProperties":false,"properties":{"for_step":{"const":8},"verdict":{"enum":["approve","marginal","rework_mapping","rework_code"],"type":"string"}},"required":["verdict","for_step"],"title":"advance from step 8 (evaluate_results)","type":"object"}],"type":"object"},"state":{"default":null,"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."},"version":{"default":"current","description":"Senzing version (default: \"current\").","type":"string"},"workspace_dir":{"default":null,"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.","type":["string","null"]}},"type":"object"}⟨152 unchanged words⟩ "One entry per source schema (table) discovered. Writable from the user's own description of their data — a readable file is not required.","items":{"additionalProperties":false,"properties":{"field_count":{"description":"Distinct fields/columns in this schema — countable from a pasted column list even when the file itself was never read.","minimum":0,"type":"integer"},"record_count":{"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.","minimum":0,"type":"integer"},"schema_name":{"description":"Name of the source schema/table (for one flat file, its base name).","type":"string"}},"required":[" ⟨683 unchanged words⟩