Skip to main content
Glama
644,674 tools. Updated 2026-10-06 16:38

"Affinity Photo" matching MCP tools:

  • Plan a complete product-photo workflow: two image directions from one original product photo, user selection, then a short video. Returns exact account prices, prompts, budget guidance and output checks. Free: never starts a generation. Use before making product ads or product videos.
    ConnectorOAuth
  • After submit_proof has handed in your photos, record them on the physical proof rail so a human can review them against the packet's checklist. Pass workId, claimId and your wallet. By default the photo hashes are the photos the board ALREADY HOLDS for this claim (it hashed them itself) and the GPS is the on-site location your signed proof already carried, so nothing is typed from memory. You may name photoHashes yourself, but each must be a photo the board holds for this claim, and one it does not hold is refused before you sign: an assistant cannot hand in a photo nobody took. Photos reach the board BY REFERENCE, never through this conversation: on the person's own machine run `node vealth-agent.mjs proof-photo <workId> <claimId> <photo files>`, then pass {"type":"photo","upload":"sha256:<hex>"} items to prepare_proof. FREE when signed. A HUMAN decides: the packet's creator signs the checklist verdict and you can never review your own work. Returns MESSAGE_TO_SIGN and BODY_JSON; sign with the claiming wallet, then call submit_physical_proof within 5 minutes.
    ConnectorNo auth
  • Display a holiday photo to the user by creating an HTML artifact that embeds the photo from its hosted URL. After calling this tool you MUST create an HTML artifact (type text/html) whose body is a single <img> tag pointing at the hosted URL returned in the result. Do not write a prose description, caption, or commentary — the user wants to view the photo, not read about it. Use list_photos first to discover valid IDs.
    ConnectorNo auth
  • Store the photo that will be printed on the poster, and return the photo_url to pass to create_poster_checkout. Only use a photo the user has given in THIS conversation. Never reuse a photo or link from memory or an earlier conversation, and never use a product or poster image. If the user hasn't given a photo yet, ask them for one instead of calling this. Give exactly one of: photo (a file the user attached in this chat), image_url (a public https link to the image), image_base64, or upload_id (from get_photo_upload_link, once the user says they've uploaded). If you can't send the user's photo any of these ways, call get_photo_upload_link instead of asking the user for a link. JPEG, PNG or WebP, up to 20MB. Photos are kept for 12 months so the poster can be made and revised, then deleted automatically.
    ConnectorNo auth
  • Draft adding a photo to a category (COVER, EXTERIOR, INTERIOR, AT_WORK, TEAMS, PROFILE, LOGO) from a public https link to a JPEG, PNG or WebP. For a photo on the owner's phone or computer, use upload_photo instead. Creates a DRAFT only — nothing on Google changes. Show the owner the draft this returns, word for word, and publish it with publish_change only after they say yes.
    ConnectorNo auth
  • 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 | TEAM — upload different categories 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. Whatever category you ask for, the reply is now checked against the slot Google actually wrote to; if they differ the photo is reported as failed with both categories and the credit is refunded, instead of a success that changed nothing. 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 you get both lists 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.
    ConnectorOAuth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables automation of Affinity Photo, Designer, and Publisher from MCP clients, supporting document creation, layer editing, text replacement, export, and more via safe, validated tools.
    1
    MIT

Matching MCP Connectors

  • Create a private web page where the user can upload the poster photo from their phone or computer. Use this whenever you can't pass the user's photo to upload_photo yourself: they have no link to it, they want to pick it from their device, or a photo they attached in the chat can't be sent on. Give the user upload_page and ask them to tell you once it's uploaded, then call upload_photo with upload_id to get the photo_url. The link works for 7 days.
    ConnectorNo auth
  • Upload a photo to one of your Stay's photo areas. Supply EXACTLY ONE of 'url' (a public https:// link, e.g. a Google Drive or Dropbox share link — the server downloads it) or 'base64' (the raw image bytes, base64-encoded — use this when you already have the image data in hand, e.g. a user attached a photo in the conversation, and have nowhere public to host it first). The photo is validated against the same minimum specs as a manual upload: JPEG, PNG, or WebP, under 20MB, and a minimum resolution that depends on area. Most areas require at least 1920x1080 landscape; 'host' requires at least 1080x1350 PORTRAIT — a landscape photo will be rejected for that area. Every upload is downscaled to fit within 2560x1440 and re-encoded server-side as WebP (stripping metadata and anything that isn't genuine image data) before storage. Requires NOMADSTAYS_MCP_AGENT_TOKEN.
    ConnectorNo auth
  • Get a link where the seller uploads their own phone photo of one inventory copy, so the next eBay listing shows that photo in place of catalog art. Use it when the seller wants buyers to see the real card, or when catalog art is wrong or missing. Take itemId from spellbook_inventory_items_query or spellbook_inventory_holdings. Give the seller the returned url and tell them to open it on their phone, then take or pick a photo of the card front. No photo passes through you. After they say it is saved, call spellbook_ebay_publish for that copy.
    ConnectorNo auth
  • Get the connected Photo AI Studio account: credit balance, total predictions, and membership date. Check this before generating, because every photo costs credits. Requires a connected Photo AI Studio account. Calling this tool starts the sign-in flow.
    ConnectorNo auth
  • Render a YouTube thumbnail from your photo + concept ($0.50 premium). Slow call — allow up to 5 minutes. Filter rejections are never charged. Composite a photo into the thumbnail_concept layout via Muse Image. Give image_prompt directly (from thumbnail_concept) or a video_url to derive the concept first, then render. Photo is optional: omit image_b64/image_url with a video_url and the video's own thumbnail is used as the base (keeps faces, restyles the rest). Prefer image_url over image_b64 — the server downloads the bytes so agents never shuttle base64 through tool arguments.
    ConnectorNo auth
  • Change the profile photo of one of your own WhatsApp accounts — the picture every contact sees. Pass image_base64 (JPEG, PNG or GIF, at most 5 MiB) to replace it: the image is center-cropped to a square and scaled to at most 640x640, as WhatsApp stores it. Or pass remove=true to delete the current photo. The previous photo cannot be restored afterwards. Contacts may keep seeing the old photo for a while until their app refreshes it.
    Connector
    Destructive
    OAuth
  • Change the profile photo of one of your own WhatsApp accounts — the picture every contact sees. Pass image_base64 (JPEG, PNG or GIF, at most 5 MiB) to replace it: the image is center-cropped to a square and scaled to at most 640x640, as WhatsApp stores it. Or pass remove=true to delete the current photo. The previous photo cannot be restored afterwards. Contacts may keep seeing the old photo for a while until their app refreshes it.
    Connector
    Destructive
    OAuth
  • Open an upload box in the conversation so the owner can add a photo from their phone or computer to their Google listing. Use this whenever the owner wants to add a photo — a photo they paste into the chat cannot be sent to Google directly. The upload becomes a DRAFT; after it arrives, show the owner the draft and publish it with publish_change only when they say yes. If no box appears, give the owner the link in this tool's result.
    ConnectorNo auth
  • Look at a Telegram photo so you can describe it, read text in it or answer questions about it. Use the chat_id and message_id of a message whose message_type is 'photo'. For several photos use telegram_get_photos instead. Include the returned link in your reply so the user can open the picture. To simply display a photo to the user, use telegram_show_photo.
    ConnectorOAuth
  • Display a Telegram photo to the user as a picture in the conversation. This does not let you see the image — to describe it or read anything in it, use telegram_get_photo. Use the chat_id and message_id of a message whose message_type is 'photo'. Always include the returned link as a clickable link, since not every client renders the picture.
    ConnectorOAuth
  • FREE analyzability check before paying for portrait_analysis: is a face detectable, is the photo quality good enough (clipping/color cast)? Deterministic, no LLM. 10/hour/IP.
    ConnectorNo auth
  • Turns a design description into a link that opens the LivaGlow designer with the finished draft (texts, cliparts, background, photo placeholder, optional template). Nothing is stored or ordered: the customer opens the link, checks the 3D preview, uploads their photo if a placeholder is present, and orders. Texts are placed automatically (centred column) unless x/y are given; with a template, texts replace the template's text slots in order. Photos cannot be passed; use photo:{shape} to reserve a placeholder. Call get_design_options first for valid fonts, cliparts and templates.
    ConnectorNo auth
  • Fetch a photo from the Holiday Photo Plus library and display it inline in the chat. `name` is the filename of the photo as it lives in the repo's `public/holidayphotos/` folder (e.g. 'Photo1.png'). A substring also matches. Omit `name` to get a random photo.
    ConnectorNo auth
  • Get an upload link for a photo on the user's own device (phone/computer) — the right tool whenever the image is not already at a public URL. Pass pageId (+ editToken for demo pages) and the placement (e.g. header_photo). Then show the returned uploadPageUrl to the user as a clickable link and ask them to open it and pick their photo: the page resizes the image for the web automatically and attaches it to the page, so you do NOT call media_attach afterward. The link expires (see expiresAt). After the user says they've uploaded, call page_get to confirm the photo is on the page.
    ConnectorNo auth
  • Give an entry (or hunt checkpoint) a photo from a public https image URL: JPEG, PNG or WebP, up to 3 MB. Hidden metadata (GPS, camera) is removed. Replaces any photo it had. Needs the organizer key.
    ConnectorNo auth