Skip to main content
Glama
sjk4425

ncloud-mcp-server

by sjk4425

ncloud_ncs_copy_object

Copy an object between Ncloud Storage buckets or keys, optionally changing its storage class. Supports versioning, encryption, and metadata replacement.

Instructions

[Ncloud Storage] Copy an object within Ncloud Storage (PUT /{key} with x-amz-copy-source). Optionally change the storage class (STANDARD (default): Standard Class | ONEZONE_IA: One Zone-IA (Infrequent Access) Class | DEEP_ARCHIVE: Archive Class) — copying an object onto itself with a new class is how an existing object's class is changed. Source objects up to 5 GB; larger ones need ncloud_ncs_upload_part_copy. A DEEP_ARCHIVE source must be restored first.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
keyYesDestination object key (path)
bucketNameYesDestination bucket name
copySourceYesSource object as {sourceBucket}/{sourceKey} (a leading slash is tolerated)
contentTypeNoContent-Type for the copy (applied with metadataDirective=REPLACE)
storageClassNox-amz-storage-class for the copy — STANDARD (default): Standard Class | ONEZONE_IA: One Zone-IA (Infrequent Access) Class | DEEP_ARCHIVE: Archive Class. Omit to use STANDARD
objectLockModeNox-amz-object-lock-mode for the copy
metadataDirectiveNoCOPY (default) keeps the source metadata; REPLACE uses the headers given in this request (contentType)
copySourceVersionIdNoVersion ID of the source object to copy (versioning-enabled buckets)
objectLockLegalHoldNox-amz-object-lock-legal-hold for the copy — ON | OFF
serverSideEncryptionNox-amz-server-side-encryption for the copy — AES256 | aws:kms
objectLockRetainUntilDateNox-amz-object-lock-retain-until-date for the copy, ISO 8601

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv1.15.0
    • addedInput schema / properties / contentType
      Added value: +{
      +  "description": "Content-Type for the copy (applied with metadataDirective=REPLACE)",
      +  "type": "string"
      +}
    • changedInput schema / properties / copySource / description
      Previous value: -"Source object path in format: /{sourceBucket}/{sourceKey}"New value: +"Source object as {sourceBucket}/{sourceKey} (a leading slash is tolerated)"
    • addedInput schema / properties / copySourceVersionId
      Added value: +{
      +  "description": "Version ID of the source object to copy (versioning-enabled buckets)",
      +  "type": "string"
      +}
    • addedInput schema / properties / metadataDirective
      Added value: +{
      +  "description": "COPY (default) keeps the source metadata; REPLACE uses the headers given in this request (contentType)",
      +  "enum": [
      +    "COPY",
      +    "REPLACE"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / objectLockLegalHold
      Added value: +{
      +  "description": "x-amz-object-lock-legal-hold for the copy — ON | OFF",
      +  "enum": [
      +    "ON",
      +    "OFF"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / objectLockMode
      Added value: +{
      +  "description": "x-amz-object-lock-mode for the copy",
      +  "enum": [
      +    "GOVERNANCE",
      +    "COMPLIANCE"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / objectLockRetainUntilDate
      Added value: +{
      +  "description": "x-amz-object-lock-retain-until-date for the copy, ISO 8601",
      +  "type": "string"
      +}
    • addedInput schema / properties / serverSideEncryption
      Added value: +{
      +  "description": "x-amz-server-side-encryption for the copy — AES256 | aws:kms",
      +  "enum": [
      +    "AES256",
      +    "aws:kms"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / storageClass / description
      Previous value: -"Storage class for the copy — STANDARD (default): Standard Class | ONEZONE_IA: One Zone-IA (Infrequent Access) Class | DEEP_ARCHIVE: Archive Class. Sent as the x-amz-storage-class header; omit to use STANDARD. Copying an object onto itself with a different class is the way to change an existing object's storage class"New value: +"x-amz-storage-class for the copy — STANDARD (default): Standard Class | ONEZONE_IA: One Zone-IA (Infrequent Access) Class | DEEP_ARCHIVE: Archive Class. Omit to use STANDARD"
  2. Changed1 schema field changedv1.11.0
    • addedInput schema / properties / storageClass
      Added value: +{
      +  "description": "Storage class for the copy — STANDARD (default): Standard Class | ONEZONE_IA: One Zone-IA (Infrequent Access) Class | DEEP_ARCHIVE: Archive Class. Sent as the x-amz-storage-class header; omit to use STANDARD. Copying an object onto itself with a different class is the way to change an existing object's storage class",
      +  "enum": [
      +    "STANDARD",
      +    "ONEZONE_IA",
      +    "DEEP_ARCHIVE"
      +  ],
      +  "type": "string"
      +}
  3. First observedv1.10.1

TDQS

A4.6/5.0
Behavior4/5

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

With empty annotations, the description carries the full behavioral burden. It discloses the 5 GB limit, the self-copy technique for class changes, and the DEEP_ARCHIVE restore requirement. It does not mention error cases or the synchronous nature, but covers the most critical behavioral constraints.

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?

A single, well-structured paragraph of about 4 sentences. It front-loads the main purpose, then covers optional behavior, constraints, and alternatives without redundancy. Every sentence earns its place.

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 an 11-parameter tool with no output schema, the description covers the essential operational context: size limits, class change, restoration, and the alternative for large objects. It does not describe return values or error handling, but given the schema's thorough parameter documentation, it is reasonably complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining storageClass enum values, the meaning of metadataDirective (COPY vs REPLACE), and the copySource format. It also clarifies that contentType applies with metadataDirective=REPLACE, going beyond the schema.

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 clearly states the verb 'Copy an object' and the resource 'within Ncloud Storage', and specifies the underlying HTTP method (PUT /{key} with x-amz-copy-source). It distinguishes this tool from siblings like ncloud_copy_object by naming the Ncloud Storage scope and the specific operation details, making it unambiguous.

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?

Explicitly provides usage context: explains the storage class change via self-copy, sets a 5 GB size limit and routes larger objects to ncloud_ncs_upload_part_copy, and notes the DEEP_ARCHIVE restore prerequisite. This tells an agent when to use this tool versus the alternative.

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

Deploy Server

Other Tools