Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Upload Image

upload_image

Turns an image into a public image URL you can pass to any tool that needs one. If the photos are already LOCAL FILES in your own environment (the user attached them to the chat) and you can run shell commands, call upload_image() with no arguments to get an upload_url, POST the files there yourself (curl -sS -F file=@photo1.jpg -F file=@photo2.jpg <upload_url>, up to 10 files), then call upload_image(ticket=...) for the public URLs — the user does not have to drag anything. Otherwise: one public image URL you can pass to any tool that needs one (gbp_create_post image_url, gbp_upload_photo, upload_image_asset, upload_meta_image...). FOUR modes, in the order you should prefer them: (1) source_url=... when the photo is ALREADY somewhere on the web — the customer's own website, a WordPress media library, a Drive or Dropbox share link: we fetch it server-side and re-publish it, so NOTHING has to pass through the chat and the user does not have to do anything. Use this first whenever a URL exists. (2) call with NO arguments to get an upload link — give that link to the user, they drop their files, then call this tool again with the returned ticket. ONE link takes up to 10 photos: the user can drag all of them in at once and the link stays open for 45 minutes, so never ask for several links for several photos. (3) ticket=... to read the drop: returns images (one entry per uploaded file, each with its own public URL) plus count, and tells you whether the user can still add more. (4) image_base64=... only for a SMALL image already in the conversation — a real photo is tens of thousands of characters of base64 and will not fit in one model message, so for anything camera-sized use mode 1 or 2 instead. JPG or PNG, at least 250px on the short edge, up to 5 MB each. URLs stay reachable for 7 days, which is what image hosts like Google need because they fetch them asynchronously.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ticketNo
filenameNo
source_urlNo
image_base64No

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added
  18. Removed
  19. Added
  20. Removed
  21. Added
  22. Removed
  23. Added
  24. Removed
  25. Added
  26. Removed
  27. Added
  28. Removed
  29. Added
  30. Removed
  31. Added
  32. Removed
  33. Added
  34. Removed
  35. Added
  36. Removed
  37. Added
  38. Removed
  39. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only cover the safety profile (readOnly=false, openWorld=true, idempotent=false, destructive=false); the description goes well beyond that with upload-link lifetime (45 min), URL reachability (7 days, justified by Google's async fetch), file caps (10 files, 5 MB each, 250px min edge, JPG/PNG), and what the ticket read returns. No contradiction with the declared annotations.

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?

Front-loads the core purpose and the mode ordering, and each mode earns its place given the genuinely multi-path interface. It loses a point for redundancy ('a public image URL you can pass to any tool that needs one' appears twice) and for the length of the local-files preamble, which could be compressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-param, four-mode tool with an output schema, the description supplies the prerequisites (shell access, user-attached files), the branching logic, the format/size constraints, and the lifetime semantics needed to invoke it correctly. Return values are covered by the output schema and the ticket-mode note.

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 description coverage is 0%, so the description carries the full burden; it does define the semantics of source_url, ticket, and image_base64, including the caveat that base64 will not fit camera-sized photos. The fourth parameter, filename, is never explained (only implicitly via the curl example), so coverage is strong but incomplete.

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?

States a specific verb+resource ('turns an image into a public image URL') and explicitly frames the output as an input to downstream tools, naming several siblings that consume it (gbp_create_post, gbp_upload_photo, upload_image_asset, upload_meta_image). An agent can tell this is the generic image-hosting utility, distinct from the platform-specific upload_* siblings.

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?

Gives an explicit, ordered decision procedure across four modes, including a stated preference ('Use this first whenever a URL exists') and when-not guidance ('only for a SMALL image already in the conversation... for anything camera-sized use mode 1 or 2'). Alternatives and the conditions that select each are spelled out rather than inferred.

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.