Skip to content

UGC Fans

by ugc.fans · remote · no sign-in to list tools · v1.0.0 · published by fans.ugc

Make ads, images and video from a URL; every paid generation is quoted in credits first

Deletes · 1Final · 1Changes · 19

30 tools: 1 can delete or cancel things, 1 do something that can't be undone, 19 change things and 9 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http make https://mcp.ugc.fans/mcp

Findings

Matches of fixed checks, with the text they matched.

2 warn1 info
  • The server marks "ugcfans_read_business" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "ugcfans_read_business" says "read": a word for reading.

    What this check looks for
  • The server marks "ugcfans_read_reference" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ugcfans_read_reference" says "read": a word for reading.

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...sion of a film to an MP4 with a content credential, and returns a job; when it is done the..."

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

30 tools

Deletes or cancels 1Claude Code: deny
  • ugcfans_cancel_jobStops a job that has not yet reached a provider; a cancelled job is not charged.No findings

    Why it is in this group

    • The name "ugcfans_cancel_job" says "cancel": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Stops a job that has not yet reached a provider; a cancelled job is not charged. A job that is already with a provider cannot be stopped and the call says so. Free.

    Annotations the server declares

    • title: Cancel a job
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • ugcfans_capture_websiteOpens a public web page in a sandboxed browser, records its text, pictures and layout, and returns a job whose result is a capture id.No findings

    Why it is in this group

    • The name "ugcfans_capture_website" says "capture": a word that usually means money moves, which cannot be taken back.
    Description, as the server wrote it
    Opens a public web page in a sandboxed browser, records its text, pictures and layout, and returns a job whose result is a capture id. A capture is the raw material of ugcfans_make_launch_film and ugcfans_make_site_sting. Free of credits. Calling it confirms the person has the right to reuse the page's content in their own films. Only http and https pages on ports 80 and 443 can be captured.

    Annotations the server declares

    • title: Photograph a website for a film
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 19Claude Code: ask
  • ugcfans_ad_to_filmMakes an editable film from a finished video ad, so its captions and end card can be changed, and returns the film and its first revision.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes an editable film from a finished video ad, so its captions and end card can be changed, and returns the film and its first revision. The ad must be finished, must not already be a film, must be a video and at most 96 MiB. Free of credits.

    Annotations the server declares

    • title: Turn a finished ad into an editable film
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_estimatePrices a request without making it: the most it can cost in credits, the dollar figures behind it, any warnings, and a quote that is good for about 10 minutes.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Prices a request without making it: the most it can cost in credits, the dollar figures behind it, any warnings, and a quote that is good for about 10 minutes. Free. The body takes the same fields as ugcfans_make_ad, ugcfans_make_image or ugcfans_make_video, without the quote; the make tool takes the quote back and refuses it if any field changed.

    Annotations the server declares

    • title: Price an ad, image or video
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_export_filmRenders one revision of a film to an MP4 with a content credential, and returns a job; when it is done the result carries a link to the file.1 finding

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...sion of a film to an MP4 with a content credential, and returns a job; when it is done the..."

      What this check looks for
    Description, as the server wrote it
    Renders one revision of a film to an MP4 with a content credential, and returns a job; when it is done the result carries a link to the file. Free of credits. A film with an unresolved rendering requirement cannot be exported.

    Annotations the server declares

    • title: Export a film to MP4
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_finish_clipRuns up to 6 finishing operations in order on a clip of the library, each on the file the one before made: trim, reformat to another frame, burn in captions, overlay a brand logo, …No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Runs up to 6 finishing operations in order on a clip of the library, each on the file the one before made: trim, reformat to another frame, burn in captions, overlay a brand logo, close with an end card, or mix in music. Returns the last job, whose result links the finished file. A call that runs past 4 minutes returns the job it is on and the operations still to run. Free of credits. The clip must already be in the library: upload footage at https://ugc.fans/library, then find its address with ugcfans_list_files. mix confirms the person may use the music file.

    Annotations the server declares

    • title: Trim, reformat, caption and brand a clip
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_adMakes a UGC-style ad from a product and a template or feature (testimonial, talking presenter, product video and others) and returns a job; when it is done the result lists the ad'…No findings

    Why it is in this group

    • The input takes a statement or command to run (input.script), which can change anything it can reach.
    Description, as the server wrote it
    Makes a UGC-style ad from a product and a template or feature (testimonial, talking presenter, product video and others) and returns a job; when it is done the result lists the ad's files as links. Spends the account's credits; the cost depends on the feature and its length, so call ugcfans_estimate first and pass its quote. Without a quote this returns the cost and makes nothing. A presenter must be saved, have a portrait and, for a real person, recorded consent at https://ugc.fans/library.

    Annotations the server declares

    • title: Make a UGC ad
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_imageMakes a picture from a prompt, optionally following reference pictures, and returns a job; when it is done the result links the picture and a small one is shown inline.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes a picture from a prompt, optionally following reference pictures, and returns a job; when it is done the result links the picture and a small one is shown inline. Spends the account's credits per picture (ugcfans_list_models gives each model's price). Call ugcfans_estimate first and pass its quote; without a quote this returns the cost and makes nothing.

    Annotations the server declares

    • title: Make an image
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_launch_filmMakes a 12-second launch film of the page's headline, button and picture from a finished capture, in the chosen frame, and returns a job.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes a 12-second launch film of the page's headline, button and picture from a finished capture, in the chosen frame, and returns a job. The result is an editable film; ugcfans_export_film renders it to MP4. Free of credits. A launch film has no text layers: its words are pictures of the page.

    Annotations the server declares

    • title: Make a launch film from a capture
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_performancePuts a saved person on screen and returns a job: talking has them speak a line, motion has them move as a reference clip moves, swap puts them in place of the person in a clip, and…No findings

    Why it is in this group

    • The description's first verb is "put": a word for a change.
    • The input takes a statement or command to run (input.script), which can change anything it can reach.
    Description, as the server wrote it
    Puts a saved person on screen and returns a job: talking has them speak a line, motion has them move as a reference clip moves, swap puts them in place of the person in a clip, and product shows them holding a product (a picture). Without a quote, returns the cost and makes nothing. With a held quote, spends the account's credits; a talking clip costs about what its avatar model costs (ugcfans_list_models, kind avatar). The person must be saved with a portrait and, if real, recorded consent at https://ugc.fans/library. motion and swap need rights_confirmed: true, given only after the person confirms they may use the source clip.

    Annotations the server declares

    • title: Make a clip of a saved person
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_site_stingMakes a 12-second, 8-scene film from the page parts you choose (node_ids from ugcfans_get_capture), in the chosen frame.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes a 12-second, 8-scene film from the page parts you choose (node_ids from ugcfans_get_capture), in the chosen frame. Unlike a launch film its page text stays as editable text, so ugcfans_set_film_words can change it. Free of credits. Returns the film and its first revision at once.

    Annotations the server declares

    • title: Make a sting from chosen website parts
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_speechSpeaks a line or a saved script in a saved voice and returns a job whose result links the audio.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.script), which can change anything it can reach.
    Description, as the server wrote it
    Speaks a line or a saved script in a saved voice and returns a job whose result links the audio. Spends a few of the account's credits. Without a quote the call returns the cost and makes nothing; pass the quote with the same request after the person confirms it; a voice that cannot be priced ahead cannot be made here. A cloned voice needs its owner's recorded consent.

    Annotations the server declares

    • title: Speak a line in a saved voice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_make_videoMakes a video clip from a prompt, optionally beginning on a still, and returns a job; when it is done the result links the clip.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes a video clip from a prompt, optionally beginning on a still, and returns a job; when it is done the result links the clip. Spends the account's credits per clip (ugcfans_list_models gives each model's price). Call ugcfans_estimate first and pass its quote; without a quote this returns the cost and makes nothing.

    Annotations the server declares

    • title: Make a video clip
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_read_businessReads a business's website page by page (up to 25 pages) and writes its profile (business.md, every line with the page it came from) and its canonical facts (name, logo, colours, t…1 finding

    Why it is in this group

    • The name "ugcfans_read_business" says "read": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "ugcfans_read_business" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}; The name "ugcfans_read_business" says "read": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Reads a business's website page by page (up to 25 pages) and writes its profile (business.md, every line with the page it came from) and its canonical facts (name, logo, colours, tagline, products with prices, claims; each with its page, and held for a yes where pages disagree or a claim has no proof). Returns a job whose result is a business id; read it with ugcfans_get_business. Free of credits.

    Annotations the server declares

    • title: Read a business's website
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
  • ugcfans_read_referenceReads a reference video of up to 3 minutes in the library and returns a job whose result is its breakdown: hook, structure, shots, pacing and look, with still frames, and none of i…1 finding

    Why it is in this group

    • The name "ugcfans_read_reference" says "read": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "ugcfans_read_reference" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "ugcfans_read_reference" says "read": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Reads a reference video of up to 3 minutes in the library and returns a job whose result is its breakdown: hook, structure, shots, pacing and look, with still frames, and none of its footage, sound or words. Without a quote, returns the cost and makes nothing. A held quote spends a few of the account's credits; rights_confirmed records the person's permission to study the file. Upload the video at https://ugc.fans/library first.

    Annotations the server declares

    • title: Break down a reference video
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_save_assetSaves a brand kit, a product, a generated presenter or a stock voice to the library for reuse in ads, and returns its id.No findings

    Why it is in this group

    • The name "ugcfans_save_asset" says "save": a word for a change.
    Description, as the server wrote it
    Saves a brand kit, a product, a generated presenter or a stock voice to the library for reuse in ads, and returns its id. Free. Only generated presenters (described in words, not a real person) and stock voices can be saved here: a real person's face or voice needs the consent the person records at https://ugc.fans/library. A new presenter has no picture until its portrait is drawn there.

    Annotations the server declares

    • title: Save a brand, product, presenter or voice
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_save_businessSaves the facts that stand (taken from the site, or confirmed by the person) as a brand kit and products with their pictures, and keeps business.md and facts.json in the library fo…No findings

    Why it is in this group

    • The name "ugcfans_save_business" says "save": a word for a change.
    Description, as the server wrote it
    Saves the facts that stand (taken from the site, or confirmed by the person) as a brand kit and products with their pictures, and keeps business.md and facts.json in the library for later makers. Facts that wait for a yes are not saved. Free.

    Annotations the server declares

    • title: Save a business as a brand kit and products
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_set_film_wordsChanges text in a film: every text layer whose words contain find gets replace, and the result is saved as a new revision; the earlier revision stays as it was.No findings

    Why it is in this group

    • The name "ugcfans_set_film_words" says "set": a word for a change.
    Description, as the server wrote it
    Changes text in a film: every text layer whose words contain find gets replace, and the result is saved as a new revision; the earlier revision stays as it was. Films made by ugcfans_make_launch_film have no text layers, so nothing changes in them. Free of credits.

    Annotations the server declares

    • title: Change the words of a film
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_share_fileMakes a link that opens one file of the library for anyone who holds it, without signing in.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Makes a link that opens one file of the library for anyone who holds it, without signing in. A link lasts 6 hours; a showcase page, which carries the Made with UGCFans badge, lasts 30 days. Free. Anyone with the link can see the file until it expires.

    Annotations the server declares

    • title: Make a link for a file
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_transcribeWrites out the words of an audio or video file in the library, up to 10 minutes long, with the built-in speech model, and returns a job; when it is done the result has the transcri…No findings

    Why it is in this group

    • The description's first verb is "write": a word for a change.
    Description, as the server wrote it
    Writes out the words of an audio or video file in the library, up to 10 minutes long, with the built-in speech model, and returns a job; when it is done the result has the transcript id, its text, the language and the length. The transcript id feeds the captions operation of ugcfans_finish_clip. Free of credits. Upload footage at https://ugc.fans/library first, then find its address with ugcfans_list_files.

    Annotations the server declares

    • title: Transcribe a clip
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • ugcfans_write_scriptWrites an ad script from a product or a web page, or, given a saved script, writes alternative opening hooks for it or translates it, and returns a job whose result holds the scrip…No findings

    Why it is in this group

    • The name "ugcfans_write_script" says "write": a word for a change.
    • The input takes a statement or command to run (input.script), which can change anything it can reach.
    Description, as the server wrote it
    Writes an ad script from a product or a web page, or, given a saved script, writes alternative opening hooks for it or translates it, and returns a job whose result holds the script. Spends a few of the account's credits only with a held quote. Without one, returns the cost and makes nothing. Give product or page_url to write a new script; give script with hooks (how many) or with translate_to (a language) to work on one.

    Annotations the server declares

    • title: Write a script, hooks or a translation
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
Only reads 9Claude Code: allow
  • ugcfans_find_businessFinds the website of a business from its name, or reads an address.No findings

    Why it is in this group

    • The name "ugcfans_find_business" says "find": a word for reading.
    Description, as the server wrote it
    Finds the website of a business from its name, or reads an address. A name is searched on the web and each candidate site is read and ranked; when two sites carry the name about equally, ask is true and the person should say which is theirs. Returns each candidate's address, name, a sentence about it and the evidence for it. Free of credits.

    Annotations the server declares

    • title: Find the website of a business
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • ugcfans_get_accountShows the signed-in account's credits left, credits granted and spent this period, when they expire, its plan and whether the account is admitted to UGCFans.No findings

    Why it is in this group

    • The name "ugcfans_get_account" says "get": a word for reading.
    Description, as the server wrote it
    Shows the signed-in account's credits left, credits granted and spent this period, when they expire, its plan and whether the account is admitted to UGCFans. Free.

    Annotations the server declares

    • title: Show plan and credits
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_get_businessReads a business that was read: how far the reading is, its profile, and its facts with where each came from and whether it stands or waits for a yes.No findings

    Why it is in this group

    • The name "ugcfans_get_business" says "get": a word for reading.
    Description, as the server wrote it
    Reads a business that was read: how far the reading is, its profile, and its facts with where each came from and whether it stands or waits for a yes. Optionally searches the pages for words. Free.

    Annotations the server declares

    • title: Read a business's profile and facts
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_get_captureReads a finished capture: the address it ended on, the parts of the page that can go into a film (node_id, role and the first words), and whether a launch film can be made from it.No findings

    Why it is in this group

    • The name "ugcfans_get_capture" says "get": a word for reading.
    Description, as the server wrote it
    Reads a finished capture: the address it ended on, the parts of the page that can go into a film (node_id, role and the first words), and whether a launch film can be made from it. Free.

    Annotations the server declares

    • title: Read a website capture
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_get_jobReads where a job stands: working, done with its files as links, failed with the reason, or cancelled.No findings

    Why it is in this group

    • The name "ugcfans_get_job" says "get": a word for reading.
    Description, as the server wrote it
    Reads where a job stands: working, done with its files as links, failed with the reason, or cancelled. Free. Works for any job the account started.

    Annotations the server declares

    • title: Read a job
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_list_filesLists files in the account's library, newest first: the path of each (out/...), its size and when it changed.No findings

    Why it is in this group

    • The name "ugcfans_list_files" says "list": a word for reading.
    Description, as the server wrote it
    Lists files in the account's library, newest first: the path of each (out/...), its size and when it changed. Pictures, video, audio and fonts only. Free. Footage is added at https://ugc.fans/library; the path is what the clip and transcript tools take as source.

    Annotations the server declares

    • title: List files in the library
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_list_modelsLists what UGCFans makes at each quality: stills, clips and talking clips, with the credits each costs per unit (an image, a clip) and whether a plan locks it.No findings

    Why it is in this group

    • The name "ugcfans_list_models" says "list": a word for reading.
    Description, as the server wrote it
    Lists what UGCFans makes at each quality: stills, clips and talking clips, with the credits each costs per unit (an image, a clip) and whether a plan locks it. Free, and needs no sign-in. Signed out it is the whole price list; signed in it is what is on offer to this account, the model ids ugcfans_estimate and the make tools accept.

    Annotations the server declares

    • title: List the qualities and their credit prices
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_search_templatesLists the ad templates, ad features and creation modes UGCFans offers, each with its slug, name and a sentence on what it makes.No findings

    Why it is in this group

    • The name "ugcfans_search_templates" says "search": a word for reading.
    Description, as the server wrote it
    Lists the ad templates, ad features and creation modes UGCFans offers, each with its slug, name and a sentence on what it makes. Free, and needs no sign-in. A template slug goes into ugcfans_make_ad as template; a feature slug as feature.

    Annotations the server declares

    • title: Search ad templates and formats
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • ugcfans_wait_jobWaits up to 45 seconds for a job to finish and reports where it stands, as ugcfans_get_job does.No findings

    Why it is in this group

    • The name "ugcfans_wait_job" says "wait": a word for reading.
    Description, as the server wrote it
    Waits up to 45 seconds for a job to finish and reports where it stands, as ugcfans_get_job does. It returns as soon as the job ends. Free.

    Annotations the server declares

    • title: Wait for a job
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http make https://mcp.ugc.fans/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__make__ugcfans_search_templates",
      "mcp__make__ugcfans_get_account",
      "mcp__make__ugcfans_find_business",
      "mcp__make__ugcfans_get_business",
      "mcp__make__ugcfans_get_capture",
      "mcp__make__ugcfans_list_files",
      "mcp__make__ugcfans_get_job",
      "mcp__make__ugcfans_wait_job",
      "mcp__make__ugcfans_list_models"
    ],
    "ask": [
      "mcp__make__ugcfans_read_business",
      "mcp__make__ugcfans_save_business",
      "mcp__make__ugcfans_capture_website",
      "mcp__make__ugcfans_make_launch_film",
      "mcp__make__ugcfans_make_site_sting",
      "mcp__make__ugcfans_ad_to_film",
      "mcp__make__ugcfans_set_film_words",
      "mcp__make__ugcfans_export_film",
      "mcp__make__ugcfans_finish_clip",
      "mcp__make__ugcfans_transcribe",
      "mcp__make__ugcfans_share_file",
      "mcp__make__ugcfans_estimate",
      "mcp__make__ugcfans_make_image",
      "mcp__make__ugcfans_make_video",
      "mcp__make__ugcfans_make_ad",
      "mcp__make__ugcfans_write_script",
      "mcp__make__ugcfans_make_speech",
      "mcp__make__ugcfans_make_performance",
      "mcp__make__ugcfans_read_reference",
      "mcp__make__ugcfans_save_asset"
    ],
    "deny": [
      "mcp__make__ugcfans_cancel_job"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as make. Review it before you use it.