Say It Again
ai.sayitagain/sayitagainVersion 1.0.1AI UGC videos of your store's products: read a product, write 3 scripts, make the video.
Status
Responds383 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 13:33 UTC
- Latency
- 383 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://app.sayitagain.ai/mcpResponds383 msNo sign-in
Claude Code
claude mcp add --transport http sayitagain https://app.sayitagain.ai/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: sayitagain
Remote MCP server URL: https://app.sayitagain.ai/mcpCursor
{
"mcpServers": {
"sayitagain": {
"url": "https://app.sayitagain.ai/mcp"
}
}
}VS Code
code --add-mcp '{"name":"sayitagain","type":"http","url":"https://app.sayitagain.ai/mcp"}'Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
25 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
another_languageMake one finished video again in another language, into a new video beside it, as the app's Another language does: a UGC video with its own script and presenter, a product video with its voiceover said again over the same picture. This spends the team's credits: the price get_video or get_product_video lists in after_steps as another_language, or its voiced price for a voiced language, refunded if it fails. Only in a language that after_steps lists for it. Answers an id at once: call get_video with it, or get_product_video for a product video's, about once a minute until its status is ready or failed. | Yes | No | No | Yes |
change_videoChange one finished video as the person asks, made again into a new video beside it, as the app's Change does. This spends the team's credits: the price get_video lists in after_steps as change_video, refunded if it fails. Only for a video whose after_steps offers it. What to change is the person's own words; a change the video cannot be made with at all is answered with why and spends nothing. Answers an id at once: call get_video with it about once a minute until its status is ready or failed. | Yes | No | No | No |
describe_presenterDraw a presenter of the team's own from a description of how they look, as the app's Describe a presenter does: an adult, invented, not a real person or a character. Free, and counted against the team's 5 drawings a day; a description refused, or a drawing that fails, gives its drawing back. Answers an id at once: call get_described with it every few seconds until its status is ready or refused. | No | No | Not declared | No |
get_balanceThe team's credits, its plan, and how many write_scripts calls it has left (scripts_left). Free. | No | Yes | Not declared | No |
get_describedHow a drawing from describe_presenter is going: checking, drawing, ready with its 3 pictures, each by its number with a link that works for an hour, and the voice the description said if it said one, or refused with why. The person chooses one of the pictures, which keep_presenter keeps. Free. | No | Yes | Not declared | No |
get_image_adsHow a set from make_image_ads is going: queued, in_progress, ready with each image ad's headline, second line and button, in headline, subhead and cta, and its download_url, or failed with why and whether its credits were refunded. Each image ad's download_url is made new in every answer and works for the next hour: its download_expires_in_seconds is the seconds it has left as that answer is made. For a later download, call get_image_ads again for a new link. Free. | No | Yes | Not declared | No |
get_product_videoHow a product video from make_product_video, or from a step after one, is going: queued, in_progress, ready or failed, with why and whether its credits were refunded. Once ready, it has after_steps, the steps it offers next with their prices in credits. Each ready video's download_url is made new in every answer and works for the next hour: its download_expires_in_seconds is the seconds it has left as that answer is made. For a later download, call get_product_video again for a new link. Free. | No | Yes | Not declared | No |
get_scriptsScripts written by write_scripts: queued, in_progress, ready with each script's shots and lines, the language its lines are in and what it left out of the description, or failed. Free. | No | Yes | Not declared | No |
get_videoHow a video from make_video, or from a step after one, is going: queued, in_progress, ready or failed. Once ready, each video has after_steps, the steps it offers next with their prices in credits. Each ready video's download_url is made new in every answer and works for the next hour: its download_expires_in_seconds is the seconds it has left as that answer is made. For a later download, call get_video again for a new link. Free. | No | Yes | Not declared | No |
keep_presenterKeep one picture of a drawing as one of the team's presenters, with the voice the person chose for them. Answers the presenter's id, for presenters in the other tools. Free. | No | No | Not declared | No |
list_adsThe ads the team's store already holds, from the Meta Ad Library and TikTok's, to build a video like one with ad: its Competitors, the Winning ads of its kind and the Meta Ad Library links it pasted, each with its id, library, advertiser, title, days running and whether it is a video, which ad needs. Free, and nothing is looked up. | No | Yes | Not declared | No |
list_presentersThe presenters a video can be made with, by id: ours and the ones the team described. Free. | No | Yes | Not declared | No |
list_videosThe team's UGC videos, newest first. Each ready video's download_url is made new in every answer and works for the next hour: its download_expires_in_seconds is the seconds it has left as that answer is made. For a later download, call get_video again for a new link. Free. | No | Yes | Not declared | No |
make_image_adsMake a set of image ads of a product, as the app's Image ads does: each ad a picture of the product drawn whole, with its own headline, second line and button, made from the product's page and the description. This spends the team's credits: the price quote_image_ads gives for the same count, refunded if the set fails. Answers an id at once: call get_image_ads with it about once a minute until its status is ready or failed. | Yes | No | No | Yes |
make_longerMake one finished video longer, its take carried on with new lines written from the product page, into a new video beside it, as the app's Make this video 30 seconds does. This spends the team's credits: the price get_video lists in after_steps as make_longer, refunded if it fails. Only for a video whose after_steps offers it. Answers an id at once: call get_video with it about once a minute until its status is ready or failed. | Yes | No | No | Yes |
make_product_videoMake a product video, as the app's Product video does: the product alone on camera, doing what it does, with a voiceover, a voiceover over music or music alone, and no presenter, written from the product's page and the description. This spends the team's credits: the price quote_product_video gives for the same choices, refunded if the video fails. Answers an id at once: call get_product_video with it about once a minute until its status is ready or failed, which takes a few minutes. | Yes | No | No | Yes |
make_videoMake a UGC video of a product. This spends the team's credits: the price quote_video gives for the same choices, refunded if the video fails. Answers an id at once, and with languages an id for each language in ids: call get_video with each about once a minute until its status is ready or failed, which takes a few minutes. | Yes | No | No | Yes |
other_sizesLay one finished video out in another size, the same video cut for that frame, as the app's Other sizes does. Free. Only for a video whose after_steps lists other_sizes, in a size it lists. Answers an id at once: call get_video with it, or get_product_video for a product video's, every few seconds until its status is ready or failed. The same size asked again answers the one already made or being made. | No | No | Yes | No |
quote_image_adsWhat a set of image ads costs in credits, and whether the team's balance covers it. Free. | No | Yes | Not declared | No |
quote_product_videoWhat a product video with these choices costs in credits, and whether the team's balance covers it. Free. | No | Yes | Not declared | No |
quote_videoWhat a video with these choices costs in credits, and whether the team's balance covers it. Free. | No | Yes | Not declared | Yes |
read_productRead a product's page from its link: its name, price, description, benefits, photos and the angles a video of it can argue, and an id to use in the other tools. Free, and counted against the team's product reads. | No | No | Yes | Yes |
remake_product_videoMake an eligible finished product video again. quality best, the default, uses the current model: Wan 3.0, or Seedance 2.5 when Wan 3.0 is not offered. quality seedance25 selects Seedance 2.5 explicitly. It uses the video's own script, photos and choices to make a new product video beside it. The app offers the same model choices. This spends the team's credits: the price listed for the selected quality in after_steps.remake_product_video.choices from get_product_video. For the default best, the legacy after_steps.make_in_best price also applies. The step is refunded if it fails. Only for a video whose after_steps offers that remake. Answers an id at once: call get_product_video with it about once a minute until its status is ready or failed. | Yes | No | No | Yes |
set_presenter_voiceSay or change the voice one of the team's described presenters speaks in, which an Arabic video whose voice is added after filming asks for when its presenter has none: the person's choice, which a picture does not tell. Free. | No | No | Yes | No |
write_scriptsWrite three scripts for a UGC video of a product, to read before making one. Say It Again's own writer writes them from the product read_product read, held to its facts. Free, and counted against the calls get_balance gives as scripts_left. Answers an id at once: call get_scripts with it about once a minute until its status is ready or failed. | No | No | Not declared | Yes |
Details
- Registry status
- Active
- Published
- Oct 22, 2026
- Updated
- Oct 22, 2026
- Categories (suggested)
- Design and mediaMarketing and SEOSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared