The parser is the compiler
Deterministic facts, identical every runAST blocks, input/output datasets, cross-file lineage, and target schemas come from source-specific deterministic parsers. Re-run it 100 times and you get the exact same code.
Bounded AI Harness · MCP Servers · BYO Model or Air-Gapped
Deterministic parsers convert 90%+ of SAS, COBOL, and legacy ETL without touching an LLM. When a block fails row-level parity, our bounded AI harness proposes a targeted fix from the mismatch log, waits for a named engineer’s diff approval, and re-validates every row. Plus, MCP servers let Cursor, GitHub Copilot, Claude, and Databricks agents invoke our parsers directly on local files.
1 · Why Parser-First
An enterprise migration spans thousands of blocks, datasets that flow across files, and implicit rounding or date rules. Pasting raw legacy code into an LLM prompt sees none of that—and produces different code on every run. MigryX separates deterministic compilation from bounded AI exception handling.
The parser is the compiler
Deterministic facts, identical every runAST blocks, input/output datasets, cross-file lineage, and target schemas come from source-specific deterministic parsers. Re-run it 100 times and you get the exact same code.
The AI harness is for exceptions
Invoked only where parity failsAI is never used where a deterministic parser already succeeded. It is called only on unresolved edge cases or row-level parity mismatches, pulling parser lineage and the exception diff via tools.
Verification-gated acceptance
Human approval + row-level re-checkThe harness enforces your project RBAC, requires a named engineer to approve the before/after diff, and rejects the change unless row-by-row Data Matching passes.
| Capability | Raw LLM prompting or generic coding assistant | MigryX (Deterministic Parsers + Bounded AI Harness) |
|---|---|---|
| 90%+ standard code | LLM re-generates every line from scratch; output changes between runs. | Converted by deterministic parsers—repeatable, fast, zero LLM tokens required. |
| Cross-file lineage | Missed when files exceed context windows or are prompted one by one. | Extracted up front by the parser so table dependencies and wave order are exact. |
| Exception remediation | Engineer copy-pastes stack traces into chat and hopes the rewrite works. | Bounded AI harness reads the original source AST, lineage, and exact row mismatch delta. |
| Row-by-row validation | Manual spot-checking by eye. | Automated Data Matching checks every row and aggregate before and after any AI fix. |
| Audit & model-risk evidence | Ephemeral chat history on a developer’s laptop. | Signed evidence pack recording the parity result, code diff, model used, and named approver. |
2 · Human-in-the-Loop Governance
Confirms the engineer’s own login token and project permissions before reading any block.
Pulls the source block, cross-file lineage, schema, and exact row-level parity mismatch.
Reasons against the original legacy source and presents a side-by-side before/after diff.
A named engineer allows or denies the write, then Data Matching re-validates every row.
Every run ends with one honest status
Beforedf = spark.table(src)
out = df.filter(
col('amt') > 0)
out.write.save(t)
Afterdf = spark.table(src)
out = df.filter(
col('amt').isNotNull()
& (col('amt') > 0))
out.write.save(t)
parity.resultrow-by-row match against the original: rows, columns, exceptionsauth.checkwhich engineer, which projectmodel.selectedwhich approved model proposed the changecode.changeexact before and after diffpermission.decisionallow or deny, signed by a named engineerparity.recheckvalidated again after the save (0 exceptions)3 · MCP Servers & REST API
Every MigryX parser is packaged as a local Model Context Protocol (MCP) server and REST API. Your IDE or agent passes a local file path; the deterministic parser runs on disk and writes converted SQL, PySpark, notebooks, lineage, and gap reports to a shared work folder. Only file paths and status cross MCP—your source code and converted code never pass through the LLM context window.
What an agent can call
parse_*List what a source contains: jobs, mappings, scripts, blocks, stored procedures.analyze_*Complexity, dependencies, and the constructs that need review. Also workload assessment, readiness, and gap reports.atlas_bundleSource-to-target mapping and lineage, written beside the converted code. Also lineage reports for dbt projects and BusinessObjects.convert_*Deterministic conversion to SQL, PySpark, notebooks, or dbt, for the dialect you choose.validate_*Checks on generated SQL, dbt projects, and migrated scripts.Each server reads and writes only inside the folder you give it.
One config entry per server
// mcp.json in Cursor, VS Code, Claude, or your agent { "mcpServers": { "datastage": { "type": "stdio", "command": "python", "args": ["/path/to/datastage_parser/mcp/datastage_server.py"], "env": { "DATASTAGE_SHARED_ROOT": "/path/to/workdir" } } } }
Deploys next to MigryX with Docker, Podman, Kubernetes, or OpenShift, or locally alongside your IDE. In your own installation, nothing leaves your network.
Every MCP or API call carries the caller’s own token and project rights. Writes still wait for a named engineer.
Calls from outside agents land in the same record as MigryX AI: the diff, the approver, and the parity result.
IDE & Notebook Workflow
Click any legacy source on the left (or watch it cycle). Your AI client calls the MigryX MCP server, which parses structure, lineage, and dependencies on disk and writes the converted SQL and Python notebook.
Anything the deterministic parser cannot convert is flagged explicitly in the gap report—never silently guessed.
Supported MCP Servers
Each server wraps a deterministic MigryX parser. Tool names below are what your IDE or agent sees; target dialects are set per call.
| Source | An agent can call | Produces |
|---|---|---|
extract_jobsparse_jobsconvert_dsxanalyze_dsxsql_to_datastage | SQL or PySpark for Databricks, Snowflake, BigQuery, Oracle, or Fabric. Analysis reports, mapping bundles, and Databricks Asset Bundles. | |
convert_powercenteranalyze_mappingextract_mapping_sql | SQL for Databricks, Snowflake, BigQuery, Oracle, Polars, or Fabric. | |
convert_workflowconvert_tsqlparse_stored_procedureintegrate_sttmvalidate_sql | SQL or PySpark for Databricks, Snowflake, BigQuery, or Fabric. Source-to-target mapping. | |
analyze_jobsextract_sql_mock | Job analysis and extracted SQL. | |
parse_odiconvert_odi_to_sqlmigrate_to_idmc | SQL, or a migration to Informatica IDMC. | |
convert_packageconvert_tsqlgap_report | Databricks code, plus a report of what needs review. | |
convert_plsqlsplit_blocksconvert_tsql | Converted procedures and split blocks. | |
parse_scriptsconvert_scriptsconvert_schemamigrate_datavalidate_migration | Converted scripts and schema, data movement, and a validation step. | |
extract_appconvert_scripts | SQL for Databricks, Snowflake, BigQuery, Oracle, or Fabric. | |
convert_job | SQL, Python, and an HTML report. | |
| SAP Data Services | convert_workflowparse_biar | SQL for Databricks, Snowflake, BigQuery, or Oracle. BusinessObjects lineage. |
convert_fileconvert_directoryanalyze_jclassess_workloadreadiness_reportequivalence | PySpark or Polars, notebooks, and assessment reports. Easytrieve too. | |
| SQLForge | translateconvert_dialectoptimizegenerate_dbt | SQL in your target dialect, optimized, or as a dbt project. |
run_projectgenerate_projectvalidate_projectlineage_report | dbt projects, local validation, and a lineage report. |
SAS is converted and remediated through the MigryX platform and Desktop analyzer. Row-by-row Data Matching runs in the MigryX Enterprise Platform.
4 · Approved Models & Air-Gapped Mode
MigryX AI calls the model endpoint you configure inside your own cloud tenant. A private self-hosted model inside your VPC works out of the box, and every change is still checked row by row.
Air-gapped estates can run with AI turned off (`AI_ENABLED=false`). The deterministic parsers still convert 90%+ of the workload and Data Matching still validates every row.
Databricks ISV Partner
Every legacy source lands as native Databricks codeMigryX works alongside Databricks Lakebridge to emit native PySpark, Delta Lake SQL, Unity Catalog table names, and Databricks Asset Bundles—with the same row-level parity check whether a block came from a deterministic parser or the AI harness.
Preview all source → target routes → · Self-hosted deployment specs →
Run local analysis with MigryX Desktop for free, or bring a legacy file to a 30-minute Platform Demo.