Opus Growth

Upload Business Photo

Adds one or SEVERAL PHOTOS to the Google Business Profile listing (visible on Maps/Search) in a single call.

Type
Makes changes
Credits
3
Platform
Business Profile
Approval
Preview first, applied after you approve

What it does

Adds one or SEVERAL PHOTOS to the Google Business Profile listing (visible on Maps/Search) in a single call. Give image_url for one photo, or image_urls for a batch of up to 10 — a batch is the normal case after upload_image, which hands back one public URL per photo the user dropped. Each URL must be a publicly reachable direct image link, because Google downloads it server-side. category applies to every photo in the call: ADDITIONAL (default) | PROFILE (profile picture) | COVER | LOGO | EXTERIOR | INTERIOR | PRODUCT | AT_WORK | FOOD_AND_DRINK | MENU | TEAMS; different categories go in separate calls. LOGO does not work: measured 22 Sep 2026, Google accepted the request, processed it as PROFILE and left every slot unchanged, so the logo has to be set in the Business Profile dashboard by hand. The reply is checked against the slot Google actually wrote to; if it differs from the requested category, the photo is reported as failed with both categories and the credit is refunded. A batch is charged PER PHOTO, exactly as separate calls would be, and a photo Google rejects is not charged. If some photos go up and others fail, both lists come back with the reason for each, so a partial result is never reported as full success. This adds photos to the listing's PHOTO GALLERY; it does NOT attach them to an Update post — to publish a post WITH a photo use gbp_create_post(image_url=...). COVER ASPECT RATIO IS CHECKED BEFORE THE UPLOAD: Google rejects a cover photo whose ratio is wrong with a bare "Request contains an invalid argument." that names no cause and still burns the credit, so the image is measured first and you get the actual pixel size, the ratio and what Google expects (16:9). Pass allow_any_ratio=true to skip that check. SAFETY: confirm=false → preview, confirm=true → publish. location = a gbp_list_locations value or the business name/domain.

MCP: gbp_upload_photo

How to use it

You don't call tools by name. Write what you want in ChatGPT, Claude or another assistant connected to Opus Growth, in your own words; it picks this tool when it fits.

Because this tool changes your account, your assistant first shows a preview of exactly what will change. Nothing is applied until you say yes, and every applied change is written to your audit log.

Parameters

NameTypeRequiredDefault
locationstringRequired·Target location, placement, or Business Profile resource for this operation. Use the exact provider-formatted value or ID returned by the relevant list or search tool.
image_urlstringOptional·Publicly reachable image URL for the creative or resource.
categorystringOptionalADDITIONALADDITIONAL · PROFILE · COVER · LOGO · EXTERIOR · INTERIOR · PRODUCT · AT_WORK · FOOD_AND_DRINK · MENU · TEAMS · Provider category or conversion/content category accepted by this operation.
image_urlsarrayOptional·Image urls value for gbp upload photo. Follow the documented provider format and use values returned by Opus Growth discovery tools where possible.
confirmbooleanOptionalfalseSafety confirmation for a state-changing operation. Leave false to preview or validate; set true only after the user explicitly approves the shown change.
allow_any_ratiobooleanOptionalfalseWhether to enable allow any ratio for this operation.