Amazon S3 · Capability

Amazon S3 REST API — Multipart Upload

Amazon S3 REST API — Multipart Upload. 4 operations. Lead operation: Amazon S3 Upload Part. Self-contained Naftiko capability covering one Amazon S3 business surface.

Run with Naftiko Amazon S3Multipart Upload

What You Can Do

PUT
Uploadpart — Amazon S3 Upload Part
/v1/{bucket}/{key-partnumber-partnumber-uploadid-uploadid}
POST
Completemultipartupload — Amazon S3 Complete Multipart Upload
/v1/{bucket}/{key-uploadid-uploadid}
DELETE
Abortmultipartupload — Amazon S3 Abort Multipart Upload
/v1/{bucket}/{key-uploadid-uploadid}
POST
Createmultipartupload — Amazon S3 Create Multipart Upload
/v1/{bucket}/key-uploads

MCP Tools

amazon-s3-upload-part

Amazon S3 Upload Part

idempotent
amazon-s3-complete-multipart-upload

Amazon S3 Complete Multipart Upload

amazon-s3-abort-multipart-upload

Amazon S3 Abort Multipart Upload

idempotent
amazon-s3-create-multipart-upload

Amazon S3 Create Multipart Upload

Capability Spec

rest-multipart-upload.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Amazon S3 REST API — Multipart Upload
  description: 'Amazon S3 REST API — Multipart Upload. 4 operations. Lead operation: Amazon S3 Upload Part. Self-contained
    Naftiko capability covering one Amazon S3 business surface.'
  tags:
  - Amazon S3
  - Multipart Upload
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    AMAZON_S3_API_KEY: AMAZON_S3_API_KEY
capability:
  consumes:
  - type: http
    namespace: rest-multipart-upload
    baseUri: https://s3.{region}.amazonaws.com
    description: Amazon S3 REST API — Multipart Upload business capability. Self-contained, no shared references.
    resources:
    - name: Bucket-Key+}?partNumber={partNumber}&uploadId={uploadId
      path: /{Bucket}/{Key+}?partNumber={partNumber}&uploadId={uploadId}
      operations:
      - name: uploadpart
        method: PUT
        description: Amazon S3 Upload Part
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: partNumber
          in: query
          type: integer
          description: Part number identifying the part (1 to 10,000).
          required: true
        - name: uploadId
          in: query
          type: string
          description: Upload ID identifying the multipart upload.
          required: true
        - name: Content-Length
          in: header
          type: integer
          description: Size of the part in bytes.
        - name: Content-MD5
          in: header
          type: string
          description: The base64-encoded 128-bit MD5 digest of the part data.
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows they will be charged.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: Bucket-Key+}?uploadId={uploadId
      path: /{Bucket}/{Key+}?uploadId={uploadId}
      operations:
      - name: completemultipartupload
        method: POST
        description: Amazon S3 Complete Multipart Upload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: uploadId
          in: query
          type: string
          description: Upload ID identifying the multipart upload.
          required: true
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows they will be charged.
        - name: x-amz-checksum-crc32
          in: header
          type: string
          description: CRC32 checksum of the object.
        - name: x-amz-checksum-crc32c
          in: header
          type: string
          description: CRC32C checksum of the object.
        - name: x-amz-checksum-sha1
          in: header
          type: string
          description: SHA-1 digest of the object.
        - name: x-amz-checksum-sha256
          in: header
          type: string
          description: SHA-256 digest of the object.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
      - name: abortmultipartupload
        method: DELETE
        description: Amazon S3 Abort Multipart Upload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: uploadId
          in: query
          type: string
          description: Upload ID identifying the multipart upload to abort.
          required: true
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows they will be charged.
    - name: Bucket-Key+}?uploads
      path: /{Bucket}/{Key+}?uploads
      operations:
      - name: createmultipartupload
        method: POST
        description: Amazon S3 Create Multipart Upload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Cache-Control
          in: header
          type: string
          description: Specifies caching behavior along the request/reply chain.
        - name: Content-Disposition
          in: header
          type: string
          description: Specifies presentational information for the object.
        - name: Content-Encoding
          in: header
          type: string
          description: Specifies content encodings applied to the object.
        - name: Content-Type
          in: header
          type: string
          description: A standard MIME type describing the format of the object data.
        - name: x-amz-acl
          in: header
          type: string
          description: The canned ACL to apply to the object.
        - name: x-amz-storage-class
          in: header
          type: string
          description: The storage class for the object.
        - name: x-amz-server-side-encryption
          in: header
          type: string
          description: The server-side encryption algorithm.
        - name: x-amz-server-side-encryption-aws-kms-key-id
          in: header
          type: string
          description: Specifies the KMS key ID.
        - name: x-amz-tagging
          in: header
          type: string
          description: The tag-set for the object.
        - name: x-amz-object-lock-mode
          in: header
          type: string
          description: Specifies the Object Lock mode.
        - name: x-amz-object-lock-retain-until-date
          in: header
          type: string
          description: Object Lock retention expiry.
        - name: x-amz-object-lock-legal-hold
          in: header
          type: string
          description: Specifies whether a legal hold will be applied.
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-checksum-algorithm
          in: header
          type: string
          description: Algorithm for object checksum.
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.AMAZON_S3_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: rest-multipart-upload-rest
    port: 8080
    description: REST adapter for Amazon S3 REST API — Multipart Upload. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/{bucket}/{key-partnumber-partnumber-uploadid-uploadid}
      name: bucket-key-partnumber-partnumber-uploadid-uploadid
      description: REST surface for Bucket-Key+}?partNumber={partNumber}&uploadId={uploadId.
      operations:
      - method: PUT
        name: uploadpart
        description: Amazon S3 Upload Part
        call: rest-multipart-upload.uploadpart
        with:
          partNumber: rest.partNumber
          uploadId: rest.uploadId
          Content-Length: rest.Content-Length
          Content-MD5: rest.Content-MD5
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-request-payer: rest.x-amz-request-payer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/{bucket}/{key-uploadid-uploadid}
      name: bucket-key-uploadid-uploadid
      description: REST surface for Bucket-Key+}?uploadId={uploadId.
      operations:
      - method: POST
        name: completemultipartupload
        description: Amazon S3 Complete Multipart Upload
        call: rest-multipart-upload.completemultipartupload
        with:
          uploadId: rest.uploadId
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-checksum-crc32: rest.x-amz-checksum-crc32
          x-amz-checksum-crc32c: rest.x-amz-checksum-crc32c
          x-amz-checksum-sha1: rest.x-amz-checksum-sha1
          x-amz-checksum-sha256: rest.x-amz-checksum-sha256
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: abortmultipartupload
        description: Amazon S3 Abort Multipart Upload
        call: rest-multipart-upload.abortmultipartupload
        with:
          uploadId: rest.uploadId
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-request-payer: rest.x-amz-request-payer
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/{bucket}/key-uploads
      name: bucket-key-uploads
      description: REST surface for Bucket-Key+}?uploads.
      operations:
      - method: POST
        name: createmultipartupload
        description: Amazon S3 Create Multipart Upload
        call: rest-multipart-upload.createmultipartupload
        with:
          Cache-Control: rest.Cache-Control
          Content-Disposition: rest.Content-Disposition
          Content-Encoding: rest.Content-Encoding
          Content-Type: rest.Content-Type
          x-amz-acl: rest.x-amz-acl
          x-amz-storage-class: rest.x-amz-storage-class
          x-amz-server-side-encryption: rest.x-amz-server-side-encryption
          x-amz-server-side-encryption-aws-kms-key-id: rest.x-amz-server-side-encryption-aws-kms-key-id
          x-amz-tagging: rest.x-amz-tagging
          x-amz-object-lock-mode: rest.x-amz-object-lock-mode
          x-amz-object-lock-retain-until-date: rest.x-amz-object-lock-retain-until-date
          x-amz-object-lock-legal-hold: rest.x-amz-object-lock-legal-hold
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-checksum-algorithm: rest.x-amz-checksum-algorithm
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: rest-multipart-upload-mcp
    port: 9090
    transport: http
    description: MCP adapter for Amazon S3 REST API — Multipart Upload. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: amazon-s3-upload-part
      description: Amazon S3 Upload Part
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: rest-multipart-upload.uploadpart
      with:
        partNumber: tools.partNumber
        uploadId: tools.uploadId
        Content-Length: tools.Content-Length
        Content-MD5: tools.Content-MD5
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-request-payer: tools.x-amz-request-payer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-complete-multipart-upload
      description: Amazon S3 Complete Multipart Upload
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: rest-multipart-upload.completemultipartupload
      with:
        uploadId: tools.uploadId
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-request-payer: tools.x-amz-request-payer
        x-amz-checksum-crc32: tools.x-amz-checksum-crc32
        x-amz-checksum-crc32c: tools.x-amz-checksum-crc32c
        x-amz-checksum-sha1: tools.x-amz-checksum-sha1
        x-amz-checksum-sha256: tools.x-amz-checksum-sha256
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-abort-multipart-upload
      description: Amazon S3 Abort Multipart Upload
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: rest-multipart-upload.abortmultipartupload
      with:
        uploadId: tools.uploadId
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-request-payer: tools.x-amz-request-payer
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-create-multipart-upload
      description: Amazon S3 Create Multipart Upload
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: rest-multipart-upload.createmultipartupload
      with:
        Cache-Control: tools.Cache-Control
        Content-Disposition: tools.Content-Disposition
        Content-Encoding: tools.Content-Encoding
        Content-Type: tools.Content-Type
        x-amz-acl: tools.x-amz-acl
        x-amz-storage-class: tools.x-amz-storage-class
        x-amz-server-side-encryption: tools.x-amz-server-side-encryption
        x-amz-server-side-encryption-aws-kms-key-id: tools.x-amz-server-side-encryption-aws-kms-key-id
        x-amz-tagging: tools.x-amz-tagging
        x-amz-object-lock-mode: tools.x-amz-object-lock-mode
        x-amz-object-lock-retain-until-date: tools.x-amz-object-lock-retain-until-date
        x-amz-object-lock-legal-hold: tools.x-amz-object-lock-legal-hold
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-checksum-algorithm: tools.x-amz-checksum-algorithm
      outputParameters:
      - type: object
        mapping: $.