Skip to main content
Glama

Upload many files (images, fonts, a build)

upload_files
Destructive

Use for images, fonts and other binary files, many files at once, or a whole build (Vite/Astro/Next export): send files (text, base64 or a link), or no files to get an upload link you POST a .zip of the build to with curl. note is required: what you changed and why.

Input Schema

NameRequiredDescriptionDefault
noteYesREQUIRED. 1–2 plain sentences: what you changed and why, e.g. "Rebuilt the menu page, added lunch prices, moved contact to the footer." The owner sees it in Ginta's editor; Ginta's own AI reads it.
filesNoFiles to add or replace. Omit to get an upload link for a .zip.
deleteNoPaths to delete.
site_idYesThe site id: the first part of the site URL, e.g. "bella-roma" for https://bella-roma.ginta.page (see list_sites).
replace_allNoThe upload becomes the whole site: files not in it are deleted (for a fresh build). Default false (merge).

Output Schema

NameRequiredDescriptionDefault
urlNoThe site's address (after an upload).
modeNo
textYesThe answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).
checkNoGinta's visitor check of the site: forms, parts, links.
changedNoFiles changed.
commandNoWithout files: the command that uploads the build.
deletedNoFiles deleted.
noticesNoSentences to tell the owner word for word.
versionNoThe new live version (after an upload).
warningsNoThings to look at.
expires_atNo
max_zip_mbNo
upload_urlNoWithout files: where to POST the .zip.
images_swappedNoOutside images that didn't load and were replaced with Ginta photos.
owner_next_stepsNoOnce per account: what the owner gets with a plan and how to start it. Follow its instruction.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / owner_next_steps / properties / trial / description
      Previous value: -"true = the €1 trial."New value: +"true = the €1 + VAT trial."
  2. Changed1 schema field changed
    • addedOutput schema / properties / owner_next_steps
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Once per account: what the owner gets with a plan and how to start it. Follow its instruction.",
      +  "properties": {
      +    "checkout_url": {
      +      "type": "string"
      +    },
      +    "example_domain": {
      +      "type": "string"
      +    },
      +    "instruction": {
      +      "description": "How to say it.",
      +      "type": "string"
      +    },
      +    "lang": {
      +      "type": "string"
      +    },
      +    "plan": {
      +      "type": "string"
      +    },
      +    "say": {
      +      "description": "What to tell the owner, in their language.",
      +      "type": "string"
      +    },
      +    "trial": {
      +      "description": "true = the €1 trial.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "say",
      +    "plan",
      +    "trial",
      +    "checkout_url",
      +    "example_domain",
      +    "lang",
      +    "instruction"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / text
      Added value: +{
      +  "description": "The answer in words, the same as the text content: read it (for get_guide the whole guide, for get_site the files' contents).",
      +  "type": "string"
      +}
    • addedOutput schema / required
      Added value: +[
      +  "text"
      +]
  4. Changed1 schema field changed
    • addedOutput schema / properties / images_swapped
      Added value: +{
      +  "description": "Outside images that didn't load and were replaced with Ginta photos.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "path": {
      +        "description": "The page or stylesheet.",
      +        "type": "string"
      +      },
      +      "photo": {
      +        "description": "The Ginta photo search put in its place (\"\" = removed, the image next to it shows).",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "The image URL that didn't load.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "path",
      +      "url",
      +      "photo"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  5. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare destructive=true and non-idempotent, so the safety bar is partly met; the description adds genuinely useful non-obvious behavior: the no-files mode returns an upload link that must be POSTed a .zip with curl. It does not restate the destructive consequences (that replace_all wipes unlisted files) or note any auth/rate-limit context, which keeps it off a 5.

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

Conciseness4/5

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

Two short, front-loaded sentences with no filler; the primary use case leads and the note requirement is deliberately last. The first sentence is a long comma-spliced run-on that takes a second pass to parse.

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?

With full schema description coverage, rich annotations, and an output schema, the description only needs to explain the non-obvious contract, and it does explain the zip-link workflow and mandatory note. It is slightly thin on the destructive replace_all branch for a tool flagged destructiveHint=true.

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

Parameters2/5

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

The description clarifies the three input modes for files (text, base64, or a link) and that omitting files yields an upload link, which adds a little meaning beyond the schema. The critical replace_all semantics (upload becomes the whole site, other files deleted) and the delete array are not mentioned at all in the description, so the riskiest parameters are left entirely to the schema.

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

Purpose4/5

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

"Use for images, fonts and other binary files, many files at once, or a whole build (Vite/Astro/Next export)" names the resource and the scope (bulk/binary/build), which implicitly separates it from the singular sibling attach_image. It never names attach_image explicitly, so the separation is inferred rather than stated.

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

Usage Guidelines4/5

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

Gives a clear selection rule: use this for multiple files, binary assets, or a full build export, and describes the alternative in-tool path (omit files to get a zip upload link for curl). No explicit "do not use for X, use sibling Y" exclusion is stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources