Amazon S3 · Capability

Amazon S3 REST API — Objects

Amazon S3 REST API — Objects. 7 operations. Lead operation: Amazon S3 Get Object. Self-contained Naftiko capability covering one Amazon S3 business surface.

Run with Naftiko Amazon S3Objects

What You Can Do

GET
Getobject — Amazon S3 Get Object
/v1/{bucket}/{key}
PUT
Putobject — Amazon S3 Put Object
/v1/{bucket}/{key}
DELETE
Deleteobject — Amazon S3 Delete Object
/v1/{bucket}/{key}
HEAD
Headobject — Amazon S3 Head Object
/v1/{bucket}/{key}
PUT
Copyobject — Amazon S3 Copy Object
/v1/{bucket}/key-copy
POST
Deleteobjects — Amazon S3 Delete Objects
/v1/bucket-delete
GET
Listobjectsv2 — Amazon S3 List Objects V2
/v1/bucket-list-type-2

MCP Tools

amazon-s3-get-object

Amazon S3 Get Object

read-only idempotent
amazon-s3-put-object

Amazon S3 Put Object

idempotent
amazon-s3-delete-object

Amazon S3 Delete Object

idempotent
amazon-s3-head-object

Amazon S3 Head Object

amazon-s3-copy-object

Amazon S3 Copy Object

idempotent
amazon-s3-delete-objects

Amazon S3 Delete Objects

amazon-s3-list-objects-v2

Amazon S3 List Objects V2

read-only idempotent

Capability Spec

rest-objects.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Amazon S3 REST API — Objects
  description: 'Amazon S3 REST API — Objects. 7 operations. Lead operation: Amazon S3 Get Object. Self-contained Naftiko capability
    covering one Amazon S3 business surface.'
  tags:
  - Amazon S3
  - Objects
  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-objects
    baseUri: https://s3.{region}.amazonaws.com
    description: Amazon S3 REST API — Objects business capability. Self-contained, no shared references.
    resources:
    - name: Bucket-Key+
      path: /{Bucket}/{Key+}
      operations:
      - name: getobject
        method: GET
        description: Amazon S3 Get Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: response-cache-control
          in: query
          type: string
          description: Sets the Cache-Control header of the response.
        - name: response-content-disposition
          in: query
          type: string
          description: Sets the Content-Disposition header of the response.
        - name: response-content-encoding
          in: query
          type: string
          description: Sets the Content-Encoding header of the response.
        - name: response-content-language
          in: query
          type: string
          description: Sets the Content-Language header of the response.
        - name: response-content-type
          in: query
          type: string
          description: Sets the Content-Type header of the response.
        - name: response-expires
          in: query
          type: string
          description: Sets the Expires header of the response.
        - name: versionId
          in: query
          type: string
          description: VersionId used to reference a specific version of the object.
        - name: partNumber
          in: query
          type: integer
          description: Part number of the object being read for a multipart object.
        - name: Range
          in: header
          type: string
          description: Downloads the specified range bytes of an object. For more information, see RFC 9110 Section 14.2.
        - name: If-Match
          in: header
          type: string
          description: Return the object only if its entity tag (ETag) matches the specified tag.
        - name: If-None-Match
          in: header
          type: string
          description: Return the object only if its entity tag (ETag) differs from the specified tag.
        - name: If-Modified-Since
          in: header
          type: string
          description: Return the object only if it has been modified since the specified time.
        - name: If-Unmodified-Since
          in: header
          type: string
          description: Return the object only if it has not been modified since the specified time.
        - name: x-amz-server-side-encryption-customer-algorithm
          in: header
          type: string
          description: Specifies the algorithm to use to when decrypting the object (AES256).
        - name: x-amz-server-side-encryption-customer-key
          in: header
          type: string
          description: Specifies the customer-provided encryption key for Amazon S3 used to encrypt the data.
        - name: x-amz-server-side-encryption-customer-key-MD5
          in: header
          type: string
          description: Specifies the 128-bit MD5 digest of the encryption key according to RFC 1321.
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows that they will be charged for the request.
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-checksum-mode
          in: header
          type: string
          description: To retrieve the checksum, this mode must be enabled. Set to ENABLED.
      - name: putobject
        method: PUT
        description: Amazon S3 Put Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: Cache-Control
          in: header
          type: string
          description: Can be used to specify 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 what content encodings have been applied to the object.
        - name: Content-Language
          in: header
          type: string
          description: The language the content is in.
        - name: Content-Length
          in: header
          type: integer
          description: Size of the body in bytes. This parameter is useful when the size of the body cannot be determined
            automatically.
        - name: Content-MD5
          in: header
          type: string
          description: The base64-encoded 128-bit MD5 digest of the message.
        - name: Content-Type
          in: header
          type: string
          description: A standard MIME type describing the format of the contents.
        - name: Expires
          in: header
          type: string
          description: The date and time at which the object is no longer cacheable.
        - 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: Amazon S3 storage class to use for storing the object.
        - name: x-amz-server-side-encryption
          in: header
          type: string
          description: The server-side encryption algorithm used when storing this object in Amazon S3.
        - name: x-amz-server-side-encryption-aws-kms-key-id
          in: header
          type: string
          description: If x-amz-server-side-encryption is aws:kms or aws:kms:dsse, specifies the ID of the KMS key.
        - name: x-amz-server-side-encryption-context
          in: header
          type: string
          description: Specifies the AWS KMS Encryption Context to use for object encryption.
        - name: x-amz-server-side-encryption-bucket-key-enabled
          in: header
          type: boolean
          description: Specifies whether S3 should use an S3 Bucket Key for object encryption with server-side encryption
            using AWS KMS.
        - name: x-amz-server-side-encryption-customer-algorithm
          in: header
          type: string
          description: Specifies the algorithm to use to encrypt the object (AES256).
        - name: x-amz-server-side-encryption-customer-key
          in: header
          type: string
          description: Specifies the customer-provided encryption key.
        - name: x-amz-server-side-encryption-customer-key-MD5
          in: header
          type: string
          description: Specifies the 128-bit MD5 digest of the encryption key.
        - name: x-amz-tagging
          in: header
          type: string
          description: The tag-set for the object. Must be encoded as URL query parameters.
        - name: x-amz-object-lock-mode
          in: header
          type: string
          description: The Object Lock mode that you want to apply to the uploaded object.
        - name: x-amz-object-lock-retain-until-date
          in: header
          type: string
          description: The date and time when you want the Object Lock retention period to expire.
        - name: x-amz-object-lock-legal-hold
          in: header
          type: string
          description: Specifies whether a legal hold will be applied to the uploaded object.
        - 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: Indicates the algorithm used to create the checksum for the object.
        - name: x-amz-checksum-crc32
          in: header
          type: string
          description: The base64-encoded, 32-bit CRC32 checksum of the object.
        - name: x-amz-checksum-crc32c
          in: header
          type: string
          description: The base64-encoded, 32-bit CRC32C checksum of the object.
        - name: x-amz-checksum-sha1
          in: header
          type: string
          description: The base64-encoded, 160-bit SHA-1 digest of the object.
        - name: x-amz-checksum-sha256
          in: header
          type: string
          description: The base64-encoded, 256-bit SHA-256 digest of the object.
        - 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: deleteobject
        method: DELETE
        description: Amazon S3 Delete Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: versionId
          in: query
          type: string
          description: VersionId used to reference a specific version of the object.
        - name: x-amz-mfa
          in: header
          type: string
          description: 'The concatenation of the authentication device serial number, a space, and the value displayed on
            your authentication device. Required for permanently deleting '
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows they will be charged.
        - name: x-amz-bypass-governance-retention
          in: header
          type: boolean
          description: Indicates whether S3 Object Lock should bypass governance-mode restrictions to process this operation.
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
      - name: headobject
        method: HEAD
        description: Amazon S3 Head Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: versionId
          in: query
          type: string
          description: VersionId used to reference a specific version of the object.
        - name: Range
          in: header
          type: string
          description: HeadObject returns only the metadata for an object. A Range header in a HeadObject request will return
            the Content-Length for the range.
        - name: If-Match
          in: header
          type: string
          description: Return the object only if its ETag matches the specified tag.
        - name: If-None-Match
          in: header
          type: string
          description: Return the object only if its ETag differs from the specified tag.
        - name: If-Modified-Since
          in: header
          type: string
          description: Return the object only if modified since the specified time.
        - name: If-Unmodified-Since
          in: header
          type: string
          description: Return the object only if not modified since the specified time.
        - 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-mode
          in: header
          type: string
          description: To retrieve the checksum, set to ENABLED.
        - name: partNumber
          in: query
          type: integer
          description: Part number of the object being read for multipart objects.
    - name: Bucket-Key+}?copy
      path: /{Bucket}/{Key+}?copy
      operations:
      - name: copyobject
        method: PUT
        description: Amazon S3 Copy Object
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: x-amz-copy-source
          in: header
          type: string
          description: Specifies the source object for the copy operation, in the form /sourcebucket/sourcekey. URL-encode
            the path.
          required: true
        - name: x-amz-copy-source-if-match
          in: header
          type: string
          description: Copies the object only if its ETag matches the specified value.
        - name: x-amz-copy-source-if-none-match
          in: header
          type: string
          description: Copies the object only if its ETag does not match the specified value.
        - name: x-amz-copy-source-if-modified-since
          in: header
          type: string
          description: Copies the object only if it has been modified since the specified time.
        - name: x-amz-copy-source-if-unmodified-since
          in: header
          type: string
          description: Copies the object only if it has not been modified since the specified time.
        - name: x-amz-metadata-directive
          in: header
          type: string
          description: Specifies whether the metadata is copied from the source object or replaced with metadata provided
            in the request.
        - name: x-amz-tagging-directive
          in: header
          type: string
          description: Specifies whether the object tag-set is copied or replaced.
        - name: x-amz-server-side-encryption
          in: header
          type: string
          description: The server-side encryption algorithm used.
        - name: x-amz-storage-class
          in: header
          type: string
          description: Amazon S3 storage class for the destination object.
        - name: x-amz-acl
          in: header
          type: string
          description: The canned ACL to apply to the object.
        - name: x-amz-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected bucket owner.
        - name: x-amz-source-expected-bucket-owner
          in: header
          type: string
          description: The account ID of the expected source bucket owner.
    - name: Bucket}?delete
      path: /{Bucket}?delete
      operations:
      - name: deleteobjects
        method: POST
        description: Amazon S3 Delete Objects
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: x-amz-mfa
          in: header
          type: string
          description: The concatenation of the authentication device serial number, a space, and the value displayed on your
            authentication device.
        - name: x-amz-request-payer
          in: header
          type: string
          description: Confirms that the requester knows they will be charged.
        - name: x-amz-bypass-governance-retention
          in: header
          type: boolean
          description: Indicates whether S3 Object Lock should bypass governance-mode restrictions.
        - 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: The algorithm used to create the checksum.
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: true
    - name: Bucket}?list-type=2
      path: /{Bucket}?list-type=2
      operations:
      - name: listobjectsv2
        method: GET
        description: Amazon S3 List Objects V2
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: list-type
          in: query
          type: integer
          description: Set to 2 to use the ListObjectsV2 API.
          required: true
        - name: continuation-token
          in: query
          type: string
          description: ContinuationToken indicates to S3 that the list is being continued on this bucket with a token returned
            in a previous response.
        - name: delimiter
          in: query
          type: string
          description: A delimiter is a character that you use to group keys. All keys that contain the same string between
            the prefix and the first occurrence of the delimiter are gr
        - name: encoding-type
          in: query
          type: string
          description: Encoding type used by Amazon S3 to encode object keys in the response.
        - name: fetch-owner
          in: query
          type: boolean
          description: Set to true to include the owner field in the response.
        - name: max-keys
          in: query
          type: integer
          description: Sets the maximum number of keys returned in the response. By default, the action returns up to 1,000
            key names.
        - name: prefix
          in: query
          type: string
          description: Limits the response to keys that begin with the specified prefix.
        - name: start-after
          in: query
          type: string
          description: StartAfter is where you want Amazon S3 to start listing from. S3 starts listing after this specified
            key.
        - 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 for the request.
        - name: x-amz-optional-object-attributes
          in: header
          type: string
          description: Specifies the optional metadata attributes to include in the response.
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.AMAZON_S3_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: rest-objects-rest
    port: 8080
    description: REST adapter for Amazon S3 REST API — Objects. One Spectral-compliant resource per consumed operation, prefixed
      with /v1.
    resources:
    - path: /v1/{bucket}/{key}
      name: bucket-key
      description: REST surface for Bucket-Key+.
      operations:
      - method: GET
        name: getobject
        description: Amazon S3 Get Object
        call: rest-objects.getobject
        with:
          response-cache-control: rest.response-cache-control
          response-content-disposition: rest.response-content-disposition
          response-content-encoding: rest.response-content-encoding
          response-content-language: rest.response-content-language
          response-content-type: rest.response-content-type
          response-expires: rest.response-expires
          versionId: rest.versionId
          partNumber: rest.partNumber
          Range: rest.Range
          If-Match: rest.If-Match
          If-None-Match: rest.If-None-Match
          If-Modified-Since: rest.If-Modified-Since
          If-Unmodified-Since: rest.If-Unmodified-Since
          x-amz-server-side-encryption-customer-algorithm: rest.x-amz-server-side-encryption-customer-algorithm
          x-amz-server-side-encryption-customer-key: rest.x-amz-server-side-encryption-customer-key
          x-amz-server-side-encryption-customer-key-MD5: rest.x-amz-server-side-encryption-customer-key-MD5
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-checksum-mode: rest.x-amz-checksum-mode
        outputParameters:
        - type: object
          mapping: $.
      - method: PUT
        name: putobject
        description: Amazon S3 Put Object
        call: rest-objects.putobject
        with:
          Cache-Control: rest.Cache-Control
          Content-Disposition: rest.Content-Disposition
          Content-Encoding: rest.Content-Encoding
          Content-Language: rest.Content-Language
          Content-Length: rest.Content-Length
          Content-MD5: rest.Content-MD5
          Content-Type: rest.Content-Type
          Expires: rest.Expires
          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-server-side-encryption-context: rest.x-amz-server-side-encryption-context
          x-amz-server-side-encryption-bucket-key-enabled: rest.x-amz-server-side-encryption-bucket-key-enabled
          x-amz-server-side-encryption-customer-algorithm: rest.x-amz-server-side-encryption-customer-algorithm
          x-amz-server-side-encryption-customer-key: rest.x-amz-server-side-encryption-customer-key
          x-amz-server-side-encryption-customer-key-MD5: rest.x-amz-server-side-encryption-customer-key-MD5
          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
          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
          x-amz-request-payer: rest.x-amz-request-payer
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: deleteobject
        description: Amazon S3 Delete Object
        call: rest-objects.deleteobject
        with:
          versionId: rest.versionId
          x-amz-mfa: rest.x-amz-mfa
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-bypass-governance-retention: rest.x-amz-bypass-governance-retention
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
        outputParameters:
        - type: object
          mapping: $.
      - method: HEAD
        name: headobject
        description: Amazon S3 Head Object
        call: rest-objects.headobject
        with:
          versionId: rest.versionId
          Range: rest.Range
          If-Match: rest.If-Match
          If-None-Match: rest.If-None-Match
          If-Modified-Since: rest.If-Modified-Since
          If-Unmodified-Since: rest.If-Unmodified-Since
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-checksum-mode: rest.x-amz-checksum-mode
          partNumber: rest.partNumber
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/{bucket}/key-copy
      name: bucket-key-copy
      description: REST surface for Bucket-Key+}?copy.
      operations:
      - method: PUT
        name: copyobject
        description: Amazon S3 Copy Object
        call: rest-objects.copyobject
        with:
          x-amz-copy-source: rest.x-amz-copy-source
          x-amz-copy-source-if-match: rest.x-amz-copy-source-if-match
          x-amz-copy-source-if-none-match: rest.x-amz-copy-source-if-none-match
          x-amz-copy-source-if-modified-since: rest.x-amz-copy-source-if-modified-since
          x-amz-copy-source-if-unmodified-since: rest.x-amz-copy-source-if-unmodified-since
          x-amz-metadata-directive: rest.x-amz-metadata-directive
          x-amz-tagging-directive: rest.x-amz-tagging-directive
          x-amz-server-side-encryption: rest.x-amz-server-side-encryption
          x-amz-storage-class: rest.x-amz-storage-class
          x-amz-acl: rest.x-amz-acl
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-source-expected-bucket-owner: rest.x-amz-source-expected-bucket-owner
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/bucket-delete
      name: bucket-delete
      description: REST surface for Bucket}?delete.
      operations:
      - method: POST
        name: deleteobjects
        description: Amazon S3 Delete Objects
        call: rest-objects.deleteobjects
        with:
          x-amz-mfa: rest.x-amz-mfa
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-bypass-governance-retention: rest.x-amz-bypass-governance-retention
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-checksum-algorithm: rest.x-amz-checksum-algorithm
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/bucket-list-type-2
      name: bucket-list-type-2
      description: REST surface for Bucket}?list-type=2.
      operations:
      - method: GET
        name: listobjectsv2
        description: Amazon S3 List Objects V2
        call: rest-objects.listobjectsv2
        with:
          list-type: rest.list-type
          continuation-token: rest.continuation-token
          delimiter: rest.delimiter
          encoding-type: rest.encoding-type
          fetch-owner: rest.fetch-owner
          max-keys: rest.max-keys
          prefix: rest.prefix
          start-after: rest.start-after
          x-amz-expected-bucket-owner: rest.x-amz-expected-bucket-owner
          x-amz-request-payer: rest.x-amz-request-payer
          x-amz-optional-object-attributes: rest.x-amz-optional-object-attributes
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: rest-objects-mcp
    port: 9090
    transport: http
    description: MCP adapter for Amazon S3 REST API — Objects. One tool per consumed operation, routed inline through this
      capability's consumes block.
    tools:
    - name: amazon-s3-get-object
      description: Amazon S3 Get Object
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: rest-objects.getobject
      with:
        response-cache-control: tools.response-cache-control
        response-content-disposition: tools.response-content-disposition
        response-content-encoding: tools.response-content-encoding
        response-content-language: tools.response-content-language
        response-content-type: tools.response-content-type
        response-expires: tools.response-expires
        versionId: tools.versionId
        partNumber: tools.partNumber
        Range: tools.Range
        If-Match: tools.If-Match
        If-None-Match: tools.If-None-Match
        If-Modified-Since: tools.If-Modified-Since
        If-Unmodified-Since: tools.If-Unmodified-Since
        x-amz-server-side-encryption-customer-algorithm: tools.x-amz-server-side-encryption-customer-algorithm
        x-amz-server-side-encryption-customer-key: tools.x-amz-server-side-encryption-customer-key
        x-amz-server-side-encryption-customer-key-MD5: tools.x-amz-server-side-encryption-customer-key-MD5
        x-amz-request-payer: tools.x-amz-request-payer
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-checksum-mode: tools.x-amz-checksum-mode
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-put-object
      description: Amazon S3 Put Object
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: rest-objects.putobject
      with:
        Cache-Control: tools.Cache-Control
        Content-Disposition: tools.Content-Disposition
        Content-Encoding: tools.Content-Encoding
        Content-Language: tools.Content-Language
        Content-Length: tools.Content-Length
        Content-MD5: tools.Content-MD5
        Content-Type: tools.Content-Type
        Expires: tools.Expires
        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-server-side-encryption-context: tools.x-amz-server-side-encryption-context
        x-amz-server-side-encryption-bucket-key-enabled: tools.x-amz-server-side-encryption-bucket-key-enabled
        x-amz-server-side-encryption-customer-algorithm: tools.x-amz-server-side-encryption-customer-algorithm
        x-amz-server-side-encryption-customer-key: tools.x-amz-server-side-encryption-customer-key
        x-amz-server-side-encryption-customer-key-MD5: tools.x-amz-server-side-encryption-customer-key-MD5
        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
        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
        x-amz-request-payer: tools.x-amz-request-payer
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-delete-object
      description: Amazon S3 Delete Object
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: rest-objects.deleteobject
      with:
        versionId: tools.versionId
        x-amz-mfa: tools.x-amz-mfa
        x-amz-request-payer: tools.x-amz-request-payer
        x-amz-bypass-governance-retention: tools.x-amz-bypass-governance-retention
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-head-object
      description: Amazon S3 Head Object
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: rest-objects.headobject
      with:
        versionId: tools.versionId
        Range: tools.Range
        If-Match: tools.If-Match
        If-None-Match: tools.If-None-Match
        If-Modified-Since: tools.If-Modified-Since
        If-Unmodified-Since: tools.If-Unmodified-Since
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-request-payer: tools.x-amz-request-payer
        x-amz-checksum-mode: tools.x-amz-checksum-mode
        partNumber: tools.partNumber
      outputParameters:
      - type: object
        mapping: $.
    - name: amazon-s3-copy-object
      description: Amazon S3 Copy Object
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: rest-objects.copyobject
      with:
        x-amz-copy-source: tools.x-amz-copy-source
        x-amz-copy-source-if-match: tools.x-amz-copy-source-if-match
        x-amz-copy-source-if-none-match: tools.x-amz-copy-source-if-none-match
        x-amz-copy-source-if-modified-since: tools.x-amz-copy-source-if-modified-since
        x-amz-copy-source-if-unmodified-since: tools.x-amz-copy-source-if-unmodified-since
        x-amz-metadata-directive: tools.x-amz-metadata-directive
        x-amz-tagging-directive: tools.x-amz-tagging-directive
        x-amz-server-side-encryption: tools.x-amz-server-side-encryption
        x-amz-storage-class: tools.x-amz-storage-class
        x-amz-acl: tools.x-amz-acl
        x-amz-expected-bucket-owner: tools.x-amz-expected-bucket-owner
        x-amz-source-expected-bucket-owner: tools.x-amz-source-expected-bucket-own

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/amazon-s3/refs/heads/main/capabilities/rest-objects.yaml