Skip to content

File upload support (multipart) in custom tool builder #645

Description

@tashage

Problem

Is your feature request related to a problem? Please describe.
The custom tool builder supports multipart/form-data as a Request Body encoding, but every Input Parameter type available (string, number, integer, boolean, array, object) sends its value as text. There's no way to make a parameter carry an actual file. This means any API endpoint that requires a genuine file upload — not just a text field — can't be built as a working tool, even though the encoding option implies it should be possible.

Steps to reproduce

  1. Built a tool for Etsy's uploadListingImage endpoint (POST /shops/{shop_id}/listings/{listing_id}/images), which requires a real multipart file upload.
  2. Set Method to POST, Encoding to multipart/form-data, and added an image parameter (type: string) intended to hold a public image URL.
  3. Called the tool with a real, public image URL as the image value.
  4. Etsy rejected the request: 400 Bad Request — "Either a valid image file or a listing_image_id must be provided."

The request went out as a text field containing a URL string, not as an actual file attachment, so Etsy correctly didn't recognize it as an upload.

Proposed Solution

Describe the solution you'd like
A parameter type (e.g. "file" or "file from URL") available when Encoding is set to multipart/form-data, where the value provided is a public URL that the connector fetches server-side and attaches to the request as a real file part — rather than passing the URL through as plain text.

Alternatives Considered

Describe alternatives you've considered
No workaround exists within the current builder — every parameter type sends as text regardless of encoding. The only current option is uploading files manually outside the tool.

Area

Connectors (REST, SOAP, GraphQL, Database, MCP Bridge)

Additional Context

Additional context
This isn't Etsy-specific — any API requiring real file uploads (images, documents, etc.) would hit the same wall. A single "file from URL" parameter type would unblock all of them.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions