Skip to main content
Glama
753,237 tools. Updated 2026-11-06 19:46

"How to add photo generation to an MCP system" matching MCP tools:

  • Submit the user's ID photo for identity verification. Ways in: (a) image data you hold programmatically (e.g. the user sent the photo in this chat and your platform exposes its bytes) — pass front_base64 (and back_base64 for a license back; its barcode reads most accurately); (b) local (stdio) mode — pass file_path/back_file_path and the file is read from disk; (c) neither — you get a secure upload link to hand the user. Do NOT ask the user what kind of document it is or where it was issued — the type and country are detected automatically from the photo; only relay a question if the result says the type could not be determined. Returns the fields read off the document — SHOW THEM TO THE USER for confirmation before continuing — plus whatever is still missing. If the result says NO identity details could be read, the image did not read as an ID at all: never insist to the user that it was their ID. Supported: JPEG/PNG/WebP up to 12MB (convert HEIC or HEIF photos first).
    ConnectorNo auth
  • Show the user exactly what a generation will cost in credits BEFORE running it, as an interactive card with a Generate button. Call this FIRST, instead of asking "shall I generate? it will use some credits" — you do not know the rate, it is set per plan and per model by an admin and changes without any code change, so any number you state from memory will eventually be wrong. This reads the user's real plan and real balance and prices the run the same way the generation itself will. Nothing is charged and nothing is reserved by calling this. It is a quote. Generation only starts if the user then asks for it. kind: "video", "image" or "voice". provider: the model id you intend to use — get real ones from video_gen.list_providers / image_gen.list_providers, never from memory. Omit to quote the plan's standard rate for that kind. duration_seconds: the duration you intend to request. Only affects duration-priced models; harmless to pass otherwise. quantity: how many separate generations (e.g. number_of_images).
    ConnectorAPI key
  • Show the user exactly what a generation will cost in credits BEFORE running it, as an interactive card with a Generate button. Call this FIRST, instead of asking "shall I generate? it will use some credits" — you do not know the rate, it is set per plan and per model by an admin and changes without any code change, so any number you state from memory will eventually be wrong. This reads the user's real plan and real balance and prices the run the same way the generation itself will. Nothing is charged and nothing is reserved by calling this. It is a quote. Generation only starts if the user then asks for it. kind: "video", "image" or "voice". provider: the model id you intend to use — get real ones from video_gen.list_providers / image_gen.list_providers, never from memory. Omit to quote the plan's standard rate for that kind. duration_seconds: the duration you intend to request. Only affects duration-priced models; harmless to pass otherwise. quantity: how many separate generations (e.g. number_of_images).
    ConnectorAPI key
  • Use this when the user asks to add, change or clear their own note on an exercise, built-in or custom ("note on my bench: seat 4, pause on the chest"). The note is a short gym-floor cue the Reps app shows on the exercise and during a workout; a custom exercise's step-by-step how-to goes in `notes` on `update_custom_exercise` instead. Get the slug and the current `note` from `get_exercise_library`. `note` replaces the whole note (to add to it, send the old text plus the new); an empty `note` clears it. Applied at once, with no confirmation step, so use it when the user asks for the note or has just agreed to it, and say in one sentence what the note now says.
    Connector
    Destructive
    OAuth
  • Generate an image or a video with FotoAI (fotoai.hu), paid with the user's OWN FotoAI credits. Call fotoai_quote first, tell the user the price, and pass its quote_id here only after the user agrees. Returns the generation id. The finished outputs are saved into this Postemi workspace's media library automatically. With wait_seconds (up to 50) the call waits for a short image and returns media paths directly; otherwise call fotoai_get_generation with the id until status is completed. Attach each media PATH to create_post. Pass an idempotencyKey (a UUID you invent per generation). If a call times out, repeat it with the SAME key: you get the same generation back and nothing is charged twice.
    ConnectorOAuth
  • Retrieve The Hill Kinabalu’s official public wedding venue and 2026/2027 package information, including capacity, event sizes, starting package prices, key inclusions, add-ons without prices, payment structures, and enquiry links. Use this when someone asks about weddings, wedding packages, the event venue, guest capacity, package pricing, or how to enquire. This tool does not check date availability or submit an enquiry.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A minimal MCP server with get_weather and create_ticket tools, used for testing MCP servers across protocol, unit, eval, transport, and auth layers.
    MIT

Matching MCP Connectors

  • Video how-to search for AI agents: 2,000+ video skills, tutorials and FFmpeg recipes. No key.

  • Remote MCP server for converting PDFs and scanned documents to Markdown with OCR, and Markdown to PDF. Provides asynchronous conversion jobs, result retrieval, and usage checks; requires a PDF to MD API key.

  • Returns everything known about a single coworking space: address, capacity, amenities, how its price compares to the local market, the operator description, and its full pricing options. Takes the `slug` returned by search_coworking_spaces or resolve_coworking_query — not a display name. Use detail "full" only when the user is choosing between specific spaces and needs every pricing option; the default summary is much cheaper and answers most questions. A `resource_link` to the main photo is always included at no extra cost; pass `includePhoto: true` only when the user actually wants to see the space, since that inlines the photo itself and costs significantly more tokens and bandwidth. Third-party ratings are not returned.
    ConnectorNo auth
  • Replace the ssh keys authorised for root on a persistent Linux machine. This is how you revoke: send the list without the key you want gone, and on a running machine it stops working immediately. Sending an empty list removes every key. Not a patch — whatever you send becomes the whole list, so read the current keys from scalix_computer_list first if you mean to add one.
    Connector
    Destructive
    No auth
  • Resolves a brand_job_ref returned by brand_guideline_specify when its race-to-complete window elapsed before generation finished. Read-only, in-process lookup -- never re-runs generation. Returns {"status": "processing"} if still running, {"status": "complete", "brand_ref": ..., "project_id": ..., "recommended_candidate_id": ..., "candidate_count": ...} once done (a compact summary -- use the returned brand_ref with brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail, the same pattern every other Brand Standard tool already uses), or {"status": "failed", "error_code": ..., "message": ...} if generation genuinely failed server-side. An unknown or expired brand_job_ref returns a structured BRAND_JOB_NOT_FOUND error, never a crash or empty success.
    ConnectorNo auth
  • Resolves a brand_job_ref returned by brand_guideline_specify when its race-to-complete window elapsed before generation finished. Read-only, in-process lookup -- never re-runs generation. Returns {"status": "processing"} if still running, {"status": "complete", "brand_ref": ..., "project_id": ..., "recommended_candidate_id": ..., "candidate_count": ...} once done (a compact summary -- use the returned brand_ref with brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail, the same pattern every other Brand Standard tool already uses), or {"status": "failed", "error_code": ..., "message": ...} if generation genuinely failed server-side. An unknown or expired brand_job_ref returns a structured BRAND_JOB_NOT_FOUND error, never a crash or empty success.
    ConnectorNo auth
  • Resolves a brand_job_ref returned by brand_guideline_specify when its race-to-complete window elapsed before generation finished. Read-only, in-process lookup -- never re-runs generation. Returns {"status": "processing"} if still running, {"status": "complete", "brand_ref": ..., "project_id": ..., "recommended_candidate_id": ..., "candidate_count": ...} once done (a compact summary -- use the returned brand_ref with brand_guideline_select/brand_guideline_pdf/brand_guideline_claims for full detail, the same pattern every other Brand Standard tool already uses), or {"status": "failed", "error_code": ..., "message": ...} if generation genuinely failed server-side. An unknown or expired brand_job_ref returns a structured BRAND_JOB_NOT_FOUND error, never a crash or empty success.
    ConnectorNo auth
  • Delete an attachment you own by its ULID. Soft-deletes the row so it no longer appears on the listing. Use this to clean up an abandoned upload (one you signed but never finished) or a photo you no longer want. Idempotent: deleting an already-deleted attachment succeeds. A live listing keeps at least one approved photo: to replace its last one, attach the new photo first, then delete the old.
    Connector
    Destructive
    No auth
  • Poll the status of a generation job started by any tool. Every generation tool returns `{id, status}`; call getApiJob with that id until status is `succeeded` (then read `result`, shaped exactly like the tool's documented output) or `failed` (read `error`). Poll every few seconds, or pass `wait: 30` to long-poll - the call is held up to 30 seconds (max 60) and returns as soon as the job finishes.
    ConnectorNo auth
  • Generate an empty background plate for one short shot. Both reference inputs steer what the plate itself looks like — layout, prop identity, materials and lighting — and are unrelated to upload_shot_continuity_reference, which guides clip generation instead. Use reference_image_asset_ids for images already in this project (find them with get_asset_library) and reference_images_base64 to send bytes you produced locally, for example a frame lifted from an earlier scene so a prop matches what is already on screen. Uploaded bytes are used for this one generation and are not kept as project assets. The location's own reference images are always included on top of both. Spends credits. Returns a job id — poll it with get_job.
    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
  • Put a REAL photo or illustration on the site by describing it — no image bytes to send. Give a vivid `prompt` and a `public/` `path` (e.g. public/hero.jpg); Kleap generates it with Cloudflare FLUX.2 and stores it as a proper binary asset, exactly like write_files with encoding:"base64" but with NO base64 to transmit (a real image's base64 is too big for a model to emit reliably — this is the ONLY dependable way to add a generated picture). Use it for hero photos, section illustrations, onboarding images, OG images, or to replace a broken/ugly image. Square 768×768 by default; pass width/height (256–1440) for other ratios; hd:true uses the premium model (sharper, slower). ⚠️ To REPLACE an existing image, generate to a NEW filename (e.g. hero-2.jpg) and point the markup at it — overwriting the same path can be served stale from CDN/R2 cache. After it returns, call publish_app to deploy it live.
    Connector
    Destructive
    OAuth
  • Put a REAL photo or illustration on the site by describing it — no image bytes to send. Give a vivid `prompt` and a `public/` `path` (e.g. public/hero.jpg); Kleap generates it with Cloudflare FLUX.2 and stores it as a proper binary asset, exactly like write_files with encoding:"base64" but with NO base64 to transmit (a real image's base64 is too big for a model to emit reliably — this is the ONLY dependable way to add a generated picture). Use it for hero photos, section illustrations, onboarding images, OG images, or to replace a broken/ugly image. Square 768×768 by default; pass width/height (256–1440) for other ratios; hd:true uses the premium model (sharper, slower). ⚠️ To REPLACE an existing image, generate to a NEW filename (e.g. hero-2.jpg) and point the markup at it — overwriting the same path can be served stale from CDN/R2 cache. After it returns, call publish_app to deploy it live.
    Connector
    Destructive
    No auth
  • Mark that you read a message and have nothing to add (remove=true clears it). Purely your own bookkeeping — nothing is written to the thread and no one is notified. Does not spend your daily allowance. Use board_answer to mark an actual answer.
    ConnectorAPI key
  • 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
  • Save one generation from a design thread as a real frame in this operator's frame list, with its photo windows cut out. Call it only when the operator has chosen a result — pass the threadId and generationId that check_generation returned for it. This CREATES a frame: saving the same generation twice makes two frames, so do not retry a call that may have gone through. The frame is private to the account unless the operator explicitly asks for it to be shared. After saving, the operator picks the frame in a booth's frame settings; this tool does not assign it to a booth, and there is no tool that edits or deletes a frame.
    ConnectorNo auth
  • Add an identity concept at zero usage, or add text as an alias using alias_of. Requires editor; resolution may incur embedding/judge cost. Probe first; if the text already resolves to an incumbent, offer that concept instead of blindly retrying. Aliases resolving to another concept are refused. embedding_model selects a new type's space only. Returns concept details and link; manage existing aliases with update_concept_alias. See enricher://docs/semantic-ids.
    ConnectorOAuth