Skip to main content
Glama
arpeio-mcp

arpeio-mcp

Official
by arpe-io

fasttransfer_preview_transfer

Read-onlyIdempotent

Build and preview a database-to-database transfer command without executing it; view the exact CLI command with masked passwords and get an auto-suggested parallelism method when none is specified.

Instructions

Build and preview a FastTransfer database-to-database transfer command WITHOUT executing it. Shows the exact CLI command with passwords masked. If no parallelism method is specified, one is auto-suggested based on the source database type. Does not test connectivity or execute the transfer. After reviewing, pass the command to fasttransfer_execute_transfer.

Input Schema

NameRequiredDescriptionDefault
sourceYes
targetYes
optionsNo
os_typeNoOperating system where FastTransfer will run. Affects command quoting and path separators. linux: uses single quotes and forward slashes. windows: uses double quotes and backslashes.linux

Output Schema

NameRequiredDescriptionDefault
tipsNoSuggested next tool calls to resolve errors.
errorsNoField-level validation errors (status='error').
statusYes'ok' when the call succeeded; 'error' when the parameters failed validation or execution failed.
commandNoFull CLI argv with real credentials, ready to hand to the execute tool.
warningsNoVersion-compatibility warnings.
explanationNoHuman-readable summary of what the command does.
preview_onlyNoTrue when no binary is configured (execution unavailable).
command_stringNoThe argv joined into one command string (real credentials).
command_displayNoThe command with passwords masked, safe to show the user.
auto_parallelismNoParallelism method auto-suggested when none was given.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.3.9
    • changedInput schema / properties / options / properties / distribute_key_column / description
      Previous value: -"Column name used to partition data across threads. Required when method is RangeId, Random, Ntile, or DataDriven. Should be a high-cardinality column (e.g., primary key) for even distribution. Not needed for Ctid, Rowid, Physloc, or None methods."New value: +"Column name used to partition data across threads. Required when method is RangeId, Random, Ntile, DataDriven or Timepartition. Should be a high-cardinality column (e.g., primary key) for even distribution. For Timepartition (0.18+) it is a tuple of a date column and time parts: '(col,year)', '(col,year,month)', '(col,year,month,day)' or '(col,year,week)'. Not needed for Ctid, Rowid, Physloc, NZDataSlice, DBPartition or None methods."
    • changedInput schema / properties / options / properties / method / description
      Previous value: -"Parallelism method. Ntile: even distribution on numeric key. DataDriven: distinct value partitions, works with any data type. PhysLoc/Physloc: SQL Server physical location (no key needed). Ctid: PostgreSQL physical tuple ID (no key needed). Rowid: Oracle physical ROWID (no key needed). RangeId: numeric min/max range. Random: modulo-based approximate distribution. NZDataSlice: Netezza native slicing. None: single-threaded. Call `fasttransfer_info` with action='parallelism' if unsure."New value: +"Parallelism method. Ntile: even distribution on numeric key. DataDriven: distinct value partitions, works with any data type. PhysLoc/Physloc: SQL Server physical location (no key needed). Ctid: PostgreSQL physical tuple ID (no key needed). Rowid: Oracle physical ROWID (no key needed). RangeId: numeric min/max range. Random: modulo-based approximate distribution. NZDataSlice: Netezza native slicing. DBPartition: one stream per native table partition, biggest first, for SQL Server (mssql, msoledbsql), PostgreSQL (pgsql, pgcopy), Oracle (oraodp), MySQL (mysql) and Teradata (teradata, row partitioning only); needs schema and table (no query), no key; an unpartitioned table falls back to a single stream (FastTransfer 0.18+). Timepartition: one stream per year, month, day or ISO week of a date column, biggest first; distribute_key_column is a tuple such as '(order_date,year,month)'; works with a table or a query (FastTransfer 0.18+). None: single-threaded. Call `fasttransfer_info` with action='parallelism' if unsure."
    • changedInput schema / properties / options / properties / method / enum
      Previous value: -[
      -  "Ctid",
      -  "DataDriven",
      -  "Ntile",
      -  "NZDataSlice",
      -  "None",
      -  "Physloc",
      -  "Random",
      -  "RangeId",
      -  "Rowid"
      -]New value: +[
      +  "Ctid",
      +  "DataDriven",
      +  "Ntile",
      +  "NZDataSlice",
      +  "None",
      +  "Physloc",
      +  "Random",
      +  "RangeId",
      +  "Rowid",
      +  "DBPartition",
      +  "Timepartition"
      +]
  2. Changed3 schema fields changedv0.3.2
    • changedInput schema / properties / options / properties / method / description
      Previous value: -"Parallelism method. Ntile: even distribution on numeric key. DataDriven: distinct value partitions, works with any data type. PhysLoc/Physloc: SQL Server physical location (no key needed). Ctid: PostgreSQL physical tuple ID (no key needed). Rowid: Oracle physical ROWID (no key needed). RangeId: numeric min/max range. Random: modulo-based approximate distribution. NZDataSlice: Netezza native slicing. None: single-threaded. Call `fasttransfer_suggest_parallelism` if unsure."New value: +"Parallelism method. Ntile: even distribution on numeric key. DataDriven: distinct value partitions, works with any data type. PhysLoc/Physloc: SQL Server physical location (no key needed). Ctid: PostgreSQL physical tuple ID (no key needed). Rowid: Oracle physical ROWID (no key needed). RangeId: numeric min/max range. Random: modulo-based approximate distribution. NZDataSlice: Netezza native slicing. None: single-threaded. Call `fasttransfer_info` with action='parallelism' if unsure."
    • changedInput schema / properties / target / properties / type / description
      Previous value: -"Target database connection type (e.g., 'pgsql' for PostgreSQL, 'mssql' for SQL Server, 'oraodp' for Oracle, 'mysql' for MySQL). Use fasttransfer_list_combinations to see valid pairs."New value: +"Target database connection type (e.g., 'pgsql' for PostgreSQL, 'mssql' for SQL Server, 'oraodp' for Oracle, 'mysql' for MySQL). Use `fasttransfer_info` with action='combinations' to see valid pairs."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "auto_parallelism": {
      +      "description": "Parallelism method auto-suggested when none was given.",
      +      "type": "string"
      +    },
      +    "command": {
      +      "description": "Full CLI argv with real credentials, ready to hand to the execute tool.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "command_display": {
      +      "description": "The command with passwords masked, safe to show the user.",
      +      "type": "string"
      +    },
      +    "command_string": {
      +      "description": "The argv joined into one command string (real credentials).",
      +      "type": "string"
      +    },
      +    "errors": {
      +      "description": "Field-level validation errors (status='error').",
      +      "items": {
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "explanation": {
      +      "description": "Human-readable summary of what the command does.",
      +      "type": "string"
      +    },
      +    "preview_only": {
      +      "description": "True when no binary is configured (execution unavailable).",
      +      "type": "boolean"
      +    },
      +    "status": {
      +      "description": "'ok' when the call succeeded; 'error' when the parameters failed validation or execution failed.",
      +      "enum": [
      +        "ok",
      +        "error"
      +      ],
      +      "type": "string"
      +    },
      +    "tips": {
      +      "description": "Suggested next tool calls to resolve errors.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "warnings": {
      +      "description": "Version-compatibility warnings.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.3.1

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotations, the description discloses that passwords are masked, that a parallelism method is auto-suggested when omitted, and that the tool does not test connectivity or execute the transfer. It does not cover input validation or failure behavior, but the key read-only and non-executing traits are explicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences are tightly scoped: the core operation, output presentation, defaulting behavior, and next step are front-loaded. No sentence is redundant, and the limitations are placed where an agent will see them before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with nested source/target/options structures, annotations, and an output schema, the description covers the essential workflow, masking behavior, non-execution guarantee, and follow-up tool. Minor validation details are left to the schema, which is reasonable given its richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 25%, the description compensates only partially: it explains the auto-suggestion behavior for options.method and notes that passwords are masked. It does not add much meaning for the source, target, or os_type parameters beyond what the nested schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Build and preview a FastTransfer database-to-database transfer command.' It emphasizes 'WITHOUT executing it' and names the sibling tool fasttransfer_execute_transfer, so the agent can distinguish preview from execution immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly establishes the preview-before-execute workflow by saying the command should be reviewed and then passed to fasttransfer_execute_transfer. It also explicitly excludes connectivity testing and execution, leaving little ambiguity about when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.