_ registry / mcp streamable-http · checked 45m ago

ugcfans

https://mcp.ugc.fans

Registry code: 0e84d955fc5a8553

api record

UGC Fans makes website launch films, finished clips and UGC ads. The Studio tools (capturing a website, launch films, trimming, captions, transcripts, the file library) cost no credits. Images, video, ads, scripts, speech and people on screen spend the account's credits: call ugcfans_estimate first and pass its quote to the make tool, which otherwise only returns the cost. Anything long returns a job; ugcfans_wait_job follows it. Footage is uploaded at https://ugc.fans/library.

endpoint
https://mcp.ugc.fans/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is ugcfans live?
Yes — it answered the hub's last check (checked 45m ago). It answered 100% of checks over the last 30 days.
Is ugcfans free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does ugcfans have?
26 tools: ugcfans_save_asset, ugcfans_capture_website, ugcfans_get_capture, ugcfans_make_launch_film, ugcfans_make_site_sting, ugcfans_ad_to_film, ugcfans_set_film_words, ugcfans_export_film, ….
Is ugcfans safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
601ms

last good check

priced tools
0

of 26 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 26 tools
2 open1 auth-required 23 never probed 3 of 26 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • ugcfans_search_templates open 45m ago

    Lists the ad templates, ad features and creation modes UGC Fans 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.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "Words to look for in names and descriptions, such as \"testimonial\" or \"product video\". Leave out to list everything."
        }
      },
      "additionalProperties": false
    }
    arguments 12 lines
  • ugcfans_list_models open 45m ago

    Lists the image, video, voice and avatar models with the credits each costs per unit (an image, a clip, 1,000 characters) and whether a plan locks it. Free, and needs no sign-in. Signed out it is the whole price list; signed in it is the models on offer to this account, the ids ugcfans_estimate and the make tools accept.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "kind": {
          "enum": [
            "image",
            "video",
            "voice",
            "avatar"
          ],
          "type": "string",
          "description": "Only models of this kind."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • ugcfans_get_account auth-required 45m ago

    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 UGC Fans. Free.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {},
      "additionalProperties": false
    }
    arguments 6 lines
  • ugcfans_save_asset unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "kind",
        "name"
      ],
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 300,
          "description": "brand and product: their web address."
        },
        "kind": {
          "enum": [
            "brand",
            "product",
            "person",
            "voice"
          ],
          "type": "string",
          "description": "What to save."
        },
        "logo": {
          "type": "string",
          "maxLength": 512,
          "description": "brand: the address of its logo, out/..."
        },
        "name": {
          "type": "string",
          "maxLength": 80,
          "description": "Its name."
        },
        "tone": {
          "type": "string",
          "maxLength": 400,
          "description": "brand: its voice, such as warm and plain."
        },
        "brand": {
          "type": "string",
          "maxLength": 128,
          "description": "product: the id of the brand it belongs to."
        },
        "never": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 200,
            "description": "A word or claim."
          },
          "maxItems": 50,
          "description": "brand: words and claims its ads never use."
        },
        "claims": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 200,
            "description": "A claim."
          },
          "maxItems": 12,
          "description": "product: claims an ad may make about it."
        },
        "images": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 512,
            "description": "An address."
          },
          "maxItems": 12,
          "description": "brand and product: addresses of product pictures, out/..."
        },
        "palette": {
          "type": "object",
          "required": [],
          "properties": {
            "text": {
              "type": "string",
              "maxLength": 7,
              "description": "A colour, #RRGGBB."
            },
            "primary": {
              "type": "string",
              "maxLength": 7,
              "description": "A colour, #RRGGBB."
            },
            "secondary": {
              "type": "string",
              "maxLength": 7,
              "description": "A colour, #RRGGBB."
            },
            "background": {
              "type": "string",
              "maxLength": 7,
              "description": "A colour, #RRGGBB."
            }
          },
          "additionalProperties": false
        },
        "product": {
          "type": "string",
          "maxLength": 600,
          "description": "brand: what the brand sells."
        },
        "tagline": {
          "type": "string",
          "maxLength": 160,
          "description": "brand: its tagline."
        },
        "language": {
          "type": "string",
          "maxLength": 35,
          "description": "voice: its language, as a tag such as en-US."
        },
        "description": {
          "type": "string",
          "maxLength": 1200,
          "description": "product: what it is. person: who the presenter is, drawn from these words."
        },
        "call_to_action": {
          "type": "string",
          "maxLength": 80,
          "description": "brand: what an ad asks the viewer to do."
        },
        "provider_voice": {
          "type": "string",
          "maxLength": 200,
          "description": "voice: the stock voice's name, from the speech models."
        }
      },
      "additionalProperties": false
    }
    arguments 132 lines
  • ugcfans_capture_website unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string",
          "maxLength": 2048,
          "description": "The address of the page, starting with https:// or http://."
        },
        "viewport": {
          "enum": [
            "desktop",
            "phone"
          ],
          "type": "string",
          "description": "desktop captures a 1280 by 900 window (the default); phone captures 390 by 844 at twice the density."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • ugcfans_get_capture unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "capture"
      ],
      "properties": {
        "capture": {
          "type": "string",
          "maxLength": 128,
          "description": "The capture id from the finished ugcfans_capture_website job."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • ugcfans_make_launch_film unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "capture",
        "aspect"
      ],
      "properties": {
        "aspect": {
          "enum": [
            "16:9",
            "9:16",
            "1:1"
          ],
          "type": "string",
          "description": "The frame: 16:9 landscape, 9:16 vertical, 1:1 square."
        },
        "capture": {
          "type": "string",
          "maxLength": 128,
          "description": "The capture id."
        }
      },
      "additionalProperties": false
    }
    arguments 24 lines
  • ugcfans_make_site_sting unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "capture",
        "node_ids",
        "aspect"
      ],
      "properties": {
        "aspect": {
          "enum": [
            "16:9",
            "9:16",
            "1:1"
          ],
          "type": "string",
          "description": "The frame: 16:9 landscape, 9:16 vertical, 1:1 square."
        },
        "capture": {
          "type": "string",
          "maxLength": 128,
          "description": "The capture id."
        },
        "node_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 200,
            "description": "A node_id."
          },
          "maxItems": 100,
          "minItems": 1,
          "description": "The node_id of each part to include, from ugcfans_get_capture."
        },
        "key_phrase": {
          "type": "string",
          "maxLength": 200,
          "description": "A phrase of the chosen text to feature. It must appear in the chosen parts."
        }
      },
      "additionalProperties": false
    }
    arguments 41 lines
  • ugcfans_ad_to_film unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "ad"
      ],
      "properties": {
        "ad": {
          "type": "string",
          "maxLength": 128,
          "description": "The ad id, from a finished ugcfans_make_ad job."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • ugcfans_set_film_words unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "film",
        "revision",
        "replacements"
      ],
      "properties": {
        "film": {
          "type": "string",
          "maxLength": 128,
          "description": "The film id."
        },
        "revision": {
          "type": "string",
          "maxLength": 128,
          "description": "The revision to edit."
        },
        "replacements": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "find",
              "replace"
            ],
            "properties": {
              "find": {
                "type": "string",
                "maxLength": 400,
                "minLength": 1,
                "description": "The words to find."
              },
              "replace": {
                "type": "string",
                "maxLength": 400,
                "description": "The words to put in their place."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 20,
          "minItems": 1,
          "description": "Pairs of words to find and what to put in their place, applied in order."
        }
      },
      "additionalProperties": false
    }
    arguments 48 lines
  • ugcfans_export_film unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "film",
        "revision"
      ],
      "properties": {
        "film": {
          "type": "string",
          "maxLength": 128,
          "description": "The film id."
        },
        "revision": {
          "type": "string",
          "maxLength": 128,
          "description": "The revision to render."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • ugcfans_finish_clip unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "source",
        "operations"
      ],
      "properties": {
        "source": {
          "type": "string",
          "maxLength": 512,
          "description": "The clip's address in the library, out/..."
        },
        "operations": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "op"
            ],
            "properties": {
              "op": {
                "enum": [
                  "trim",
                  "reformat",
                  "captions",
                  "overlay",
                  "end_card",
                  "mix"
                ],
                "type": "string",
                "description": "What to do."
              },
              "end": {
                "type": "number",
                "minimum": 0,
                "description": "trim: where to stop, in seconds."
              },
              "cues": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "start",
                    "end",
                    "text"
                  ],
                  "properties": {
                    "end": {
                      "type": "number",
                      "minimum": 0,
                      "description": "Seconds."
                    },
                    "text": {
                      "type": "string",
                      "maxLength": 400,
                      "description": "The line."
                    },
                    "start": {
                      "type": "number",
                      "minimum": 0,
                      "description": "Seconds."
                    }
                  },
                  "additionalProperties": false
                },
                "maxItems": 2000,
                "description": "captions: the lines to show, each with start and end seconds and its text."
              },
              "mode": {
                "enum": [
                  "crop",
                  "pad",
                  "follow"
                ],
                "type": "string",
                "description": "reformat: crop the picture, pad it, or follow the subject (default crop)."
              },
              "brand": {
                "type": "string",
                "maxLength": 128,
                "description": "overlay and end_card: the id of a saved brand; overlay puts its logo in the top-right corner, and end_card uses its colours and logo."
              },
              "music": {
                "type": "string",
                "maxLength": 512,
                "description": "mix: the address of the music file, out/..., which the person has the right to use."
              },
              "start": {
                "type": "number",
                "minimum": 0,
                "description": "trim: where to start, in seconds (default 0)."
              },
              "subline": {
                "type": "string",
                "maxLength": 200,
                "description": "end_card: a second line."
              },
              "headline": {
                "type": "string",
                "maxLength": 200,
                "description": "end_card: the closing headline."
              },
              "transcript": {
                "type": "string",
                "maxLength": 128,
                "description": "captions: the id of a transcript from ugcfans_transcribe."
              },
              "aspect_ratio": {
                "enum": [
                  "9:16",
                  "1:1",
                  "16:9",
                  "4:5"
                ],
                "type": "string",
                "description": "reformat: the new frame."
              }
            },
            "additionalProperties": false
          },
          "maxItems": 6,
          "minItems": 1,
          "description": "The operations, in order."
        }
      },
      "additionalProperties": false
    }
    arguments 127 lines
  • ugcfans_transcribe unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "maxLength": 512,
          "description": "The file's address in the library, out/..."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • ugcfans_list_files unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "limit": {
          "type": "integer",
          "maximum": 100,
          "minimum": 1,
          "description": "How many files to list, newest first."
        },
        "prefix": {
          "type": "string",
          "maxLength": 512,
          "description": "Only paths that start with this, such as out/api/images. The default is the whole library, out."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • ugcfans_share_file unknown never probed

    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 UGC Fans badge, lasts 30 days. Free. Anyone with the link can see the file until it expires.

    mcp-tool

    {
      "type": "object",
      "required": [
        "path"
      ],
      "properties": {
        "kind": {
          "enum": [
            "link",
            "showcase"
          ],
          "type": "string",
          "description": "link opens the file itself (default); showcase is a page that shows it."
        },
        "path": {
          "type": "string",
          "maxLength": 512,
          "description": "The file's address in the library, out/..."
        }
      },
      "additionalProperties": false
    }
    arguments 22 lines
  • ugcfans_get_job unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "job"
      ],
      "properties": {
        "job": {
          "type": "string",
          "maxLength": 128,
          "description": "The job id a tool returned, job_..."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • ugcfans_wait_job unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "job"
      ],
      "properties": {
        "job": {
          "type": "string",
          "maxLength": 128,
          "description": "The job id a tool returned, job_..."
        },
        "seconds": {
          "type": "integer",
          "maximum": 45,
          "minimum": 0,
          "description": "How long to wait at most, up to 45 (default 45)."
        }
      },
      "additionalProperties": false
    }
    arguments 20 lines
  • ugcfans_cancel_job unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "job"
      ],
      "properties": {
        "job": {
          "type": "string",
          "maxLength": 128,
          "description": "The job id a tool returned, job_..."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
  • ugcfans_estimate unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "kind",
        "body"
      ],
      "properties": {
        "body": {
          "type": "object",
          "description": "The request: the fields of the make tool for this kind, without quote."
        },
        "kind": {
          "enum": [
            "ad",
            "image",
            "video"
          ],
          "type": "string",
          "description": "What is being priced."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • ugcfans_make_image unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "model",
        "prompt"
      ],
      "properties": {
        "n": {
          "type": "integer",
          "maximum": 8,
          "minimum": 1,
          "description": "How many pictures (default 1)."
        },
        "model": {
          "type": "string",
          "maxLength": 200,
          "description": "The model id, from ugcfans_list_models."
        },
        "quote": {
          "type": "string",
          "maxLength": 4096,
          "description": "The quote from ugcfans_estimate for exactly this request. Without it the call returns the estimate and makes nothing."
        },
        "prompt": {
          "type": "string",
          "maxLength": 4000,
          "description": "What to draw, in words."
        },
        "reference": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 512,
            "description": "An address."
          },
          "maxItems": 16,
          "description": "Pictures of the subject or style to follow: addresses of library files, out/..."
        },
        "resolution": {
          "type": "string",
          "maxLength": 20,
          "description": "The resolution, such as 1K, when the model offers it."
        },
        "aspect_ratio": {
          "type": "string",
          "maxLength": 20,
          "description": "The frame, such as 1:1, 9:16 or 16:9, when the model offers it."
        }
      },
      "additionalProperties": false
    }
    arguments 51 lines
  • ugcfans_make_video unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "model",
        "prompt"
      ],
      "properties": {
        "model": {
          "type": "string",
          "maxLength": 200,
          "description": "The model id, from ugcfans_list_models."
        },
        "quote": {
          "type": "string",
          "maxLength": 4096,
          "description": "The quote from ugcfans_estimate for exactly this request. Without it the call returns the estimate and makes nothing."
        },
        "prompt": {
          "type": "string",
          "maxLength": 4000,
          "description": "What happens, in words."
        },
        "duration": {
          "type": "integer",
          "maximum": 60,
          "minimum": 1,
          "description": "The length in seconds, from the lengths the model offers."
        },
        "resolution": {
          "type": "string",
          "maxLength": 20,
          "description": "The resolution, such as 720p, when the model offers it."
        },
        "start_image": {
          "type": "string",
          "maxLength": 512,
          "description": "A picture to begin on: the address of a library file, out/..."
        },
        "aspect_ratio": {
          "type": "string",
          "maxLength": 20,
          "description": "The frame, such as 9:16 or 16:9, when the model offers it."
        }
      },
      "additionalProperties": false
    }
    arguments 46 lines
  • ugcfans_make_ad unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "feature"
      ],
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 80,
          "description": "A name for the ad."
        },
        "quote": {
          "type": "string",
          "maxLength": 4096,
          "description": "The quote from ugcfans_estimate for exactly this request. Without it the call returns the estimate and makes nothing."
        },
        "voice": {
          "type": "string",
          "maxLength": 128,
          "description": "The voice: the id of a saved voice."
        },
        "person": {
          "type": "string",
          "maxLength": 128,
          "description": "The presenter: the id of a saved person that has a portrait and, for a real person, recorded consent."
        },
        "script": {
          "type": "string",
          "maxLength": 128,
          "description": "A script already written, by its id from ugcfans_write_script."
        },
        "feature": {
          "type": "string",
          "maxLength": 64,
          "description": "What kind of ad, a slug from ugcfans_search_templates such as testimonial, talking-presenter or product-video."
        },
        "product": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 1200
            },
            {
              "type": "object",
              "required": [
                "name"
              ],
              "properties": {
                "name": {
                  "type": "string",
                  "maxLength": 200,
                  "description": "The product's name."
                },
                "images": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "maxLength": 512,
                    "description": "An address."
                  },
                  "maxItems": 12,
                  "description": "Pictures of it: addresses of library files, out/..."
                },
                "description": {
                  "type": "string",
                  "maxLength": 1000,
                  "description": "What it is and does."
                }
              },
              "additionalProperties": false
            }
          ],
          "description": "What is being sold: a sentence, or an object with its name, description and pictures."
        },
        "reviews": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 800,
            "description": "A review."
          },
          "maxItems": 12,
          "description": "Real customer reviews a testimonial rests on."
        },
        "page_url": {
          "type": "string",
          "maxLength": 2048,
          "description": "A web page to read the product from."
        },
        "template": {
          "type": "string",
          "maxLength": 64,
          "description": "A template slug from ugcfans_search_templates, which fills in the frame, length and shots."
        },
        "testimonial_basis": {
          "enum": [
            "verbatim",
            "edited",
            "composed"
          ],
          "type": "string",
          "description": "Where a testimonial's words come from. verbatim and edited need reviews."
        }
      },
      "additionalProperties": false
    }
    arguments 106 lines
  • ugcfans_write_script unknown never probed

    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. 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.

    mcp-tool

    {
      "type": "object",
      "required": [],
      "properties": {
        "angle": {
          "type": "string",
          "maxLength": 200,
          "description": "The angle or hook to take."
        },
        "brand": {
          "type": "string",
          "maxLength": 128,
          "description": "The id of a saved brand whose voice to follow."
        },
        "hooks": {
          "type": "integer",
          "maximum": 12,
          "minimum": 1,
          "description": "With script: how many alternative openings to write."
        },
        "offer": {
          "type": "string",
          "maxLength": 300,
          "description": "The offer or call to action."
        },
        "points": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 300,
            "description": "A point."
          },
          "maxItems": 12,
          "description": "Points the script should make."
        },
        "script": {
          "type": "string",
          "maxLength": 128,
          "description": "The id of a saved script to work on, from an earlier ugcfans_write_script."
        },
        "product": {
          "type": "string",
          "maxLength": 1200,
          "description": "What is being sold, in a sentence or two."
        },
        "seconds": {
          "type": "integer",
          "maximum": 120,
          "minimum": 5,
          "description": "How long the ad runs, 5 to 120 (default 30)."
        },
        "audience": {
          "type": "string",
          "maxLength": 400,
          "description": "Who the ad is for."
        },
        "language": {
          "type": "string",
          "maxLength": 40,
          "description": "The language to write in (default English)."
        },
        "page_url": {
          "type": "string",
          "maxLength": 2048,
          "description": "A web page to read the product from, instead of product."
        },
        "translate_to": {
          "type": "string",
          "maxLength": 40,
          "description": "With script: the language to translate it into."
        }
      },
      "additionalProperties": false
    }
    arguments 74 lines
  • ugcfans_make_speech unknown never probed

    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 prices the line first and, when the pipeline can price it, makes it; a voice that cannot be priced ahead cannot be made here. A cloned voice needs its owner's recorded consent.

    mcp-tool

    {
      "type": "object",
      "required": [
        "voice"
      ],
      "properties": {
        "text": {
          "type": "string",
          "maxLength": 5000,
          "description": "The words to speak."
        },
        "quote": {
          "type": "string",
          "maxLength": 4096,
          "description": "A quote for exactly this line, when you hold one."
        },
        "speed": {
          "type": "number",
          "maximum": 1.5,
          "minimum": 0.5,
          "description": "How fast, 0.5 to 1.5 (default 1)."
        },
        "voice": {
          "type": "string",
          "maxLength": 128,
          "description": "The id of a saved voice, voice_..."
        },
        "script": {
          "type": "string",
          "maxLength": 128,
          "description": "Or the id of a saved script to speak."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • ugcfans_make_performance unknown never probed

    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). 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.

    mcp-tool

    {
      "type": "object",
      "required": [
        "kind",
        "person"
      ],
      "properties": {
        "kind": {
          "enum": [
            "talking",
            "motion",
            "swap",
            "product"
          ],
          "type": "string",
          "description": "What to make."
        },
        "note": {
          "type": "string",
          "maxLength": 400,
          "description": "swap: what to change, in words."
        },
        "text": {
          "type": "string",
          "maxLength": 5000,
          "description": "talking: words to speak."
        },
        "brand": {
          "type": "string",
          "maxLength": 128,
          "description": "product: the id of a saved brand whose kit holds the product pictures."
        },
        "image": {
          "type": "string",
          "maxLength": 512,
          "description": "talking: which picture of the person to use, out/..."
        },
        "voice": {
          "type": "string",
          "maxLength": 128,
          "description": "talking, with script or text: the id of the saved voice to speak in."
        },
        "person": {
          "type": "string",
          "maxLength": 128,
          "description": "The id of the saved person."
        },
        "script": {
          "type": "string",
          "maxLength": 128,
          "description": "talking: the id of a saved script to speak."
        },
        "source": {
          "type": "string",
          "maxLength": 512,
          "description": "motion and swap: the reference clip's address, out/..."
        },
        "speech": {
          "type": "string",
          "maxLength": 128,
          "description": "talking: the id of a saved line to use as the audio."
        },
        "product": {
          "type": "string",
          "maxLength": 200,
          "description": "product: the product's name."
        },
        "setting": {
          "type": "string",
          "maxLength": 300,
          "description": "motion and product: where it happens."
        },
        "handling": {
          "enum": [
            "held",
            "worn",
            "used",
            "beside"
          ],
          "type": "string",
          "description": "product: how the person has it."
        },
        "motion_from": {
          "enum": [
            "clip",
            "pose"
          ],
          "type": "string",
          "description": "motion: follow the clip itself or its pose (default clip)."
        },
        "product_images": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 512,
            "description": "An address."
          },
          "maxItems": 3,
          "description": "product: pictures of the product, out/..."
        },
        "rights_confirmed": {
          "type": "boolean",
          "description": "motion and swap: the person confirms they may use the source clip."
        }
      },
      "additionalProperties": false
    }
    arguments 107 lines
  • ugcfans_read_reference unknown never probed

    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. Spends a few of the account's credits. Using it confirms the person may study the file. Upload the video at https://ugc.fans/library first.

    mcp-tool

    {
      "type": "object",
      "required": [
        "source"
      ],
      "properties": {
        "source": {
          "type": "string",
          "maxLength": 512,
          "description": "The video's address in the library, out/..."
        }
      },
      "additionalProperties": false
    }
    arguments 14 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 0e84d955fc5a8553.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/0e84d955fc5a8553/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/0e84d955fc5a8553/badge.svg)](https://brick.blue/agent/0e84d955fc5a8553?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.