Vidreno
Publish films, monetise them, earn money, and host and embed videos on sites and apps.
Sollte ich dies verwenden
Qualität und Sicherheit
Befunde (4)
- HIGH
- MEDIUMin get_earnings
- MEDIUMin get_earnings
- MEDIUMin list_payouts
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"mcp": {
"url": "https://vidreno.com/mcp"
}
}
}Remote-Endpunkte
https://vidreno.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (31)
🟢get_profile
Identify the Vidreno account this connection belongs to. Call this when the user asks which account is connected.
Eingabe-Schema
{
"type": "object",
"properties": {},
"description": "No arguments."
}Ausgabe-Schema
{
"type": "object",
"properties": {
"id": {
"description": "Vidreno account id.",
"type": "string"
},
"name": {
"description": "Display name, when the account has one.",
"type": "string"
},
"email": {
"description": "Account email.",
"type": "string"
},
"nickname": {
"description": "Username, when the account has one.",
"type": "string"
}
},
"required": [
"id"
],
"additionalProperties": false
}🟢get_account
The connected creator's account overview: which product it is set up for (creator_mode: Films, or Host & Embed for hosted videos; a preference that shapes what to suggest first, not a restriction on the tools), plan, hosted-video storage used versus the plan limit, how many hosted videos and films they have, and their public filmmaker profile link when the profile is public.
Eingabe-Schema
{
"type": "object",
"properties": {},
"description": "No arguments."
}🟢list_videos(search, visibility, page, page_size)
List the user's hosted videos, newest first, with optional search and visibility filter. Returns public video ids to use with the other tools. Paginate with page/page_size.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Case-insensitive match against title and description.",
"type": "string",
"maxLength": 200
},
"visibility": {
"description": "Filter by visibility; default all.",
"default": "all",
"type": "string",
"enum": [
"all",
"public",
"private"
]
},
"page": {
"description": "1-based page number.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"page_size": {
"description": "Videos per page (max 50).",
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
}
}
}🟢get_video(video_id)
Full details of one hosted video: title, description, visibility, size, duration, views, player colour, category and its links.
Eingabe-Schema
{
"type": "object",
"properties": {
"video_id": {
"description": "The video's public id (from list_videos / get_video).",
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"video_id"
]
}🟢get_embed_code(video_id, autoplay, muted, loop, controls, ...)
Build the HTML embed snippet for a video with the chosen player options (autoplay, muted, loop, controls, corner radius, fullscreen, responsive or fixed size). Also returns the bare iframe URL and the player and share links.
Eingabe-Schema
{
"type": "object",
"properties": {
"video_id": {
"description": "The video's public id (from list_videos / get_video).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"autoplay": {
"description": "Start playing on load (browsers require muted for this to work).",
"default": false,
"type": "boolean"
},
"muted": {
"description": "Start muted.",
"default": false,
"type": "boolean"
},
"loop": {
"description": "Restart when finished.",
"default": false,
"type": "boolean"
},
"controls": {
"description": "Show the player controls.",
"default": true,
"type": "boolean"
},
"allow_fullscreen": {
"description": "Allow the fullscreen button.",
"default": true,
"type": "boolean"
},
"corner_radius": {
"description": "Corner radius in pixels; 0 for square corners.",
"default": 10,
"type": "integer",
"minimum": 0,
"maximum": 64
},
"responsive": {
"description": "True for a fluid 16:9 embed that fills its container; false for a fixed pixel size.",
"default": true,
"type": "boolean"
},
"width": {
"description": "Fixed width in pixels (only when responsive is false).",
"default": 560,
"type": "integer",
"minimum": 1,
"maximum": 4096
},
"height": {
"description": "Fixed height in pixels (only when responsive is false).",
"default": 315,
"type": "integer",
"minimum": 1,
"maximum": 4096
},
"alignment": {
"description": "Horizontal alignment inside the host page.",
"default": "center",
"type": "string",
"enum": [
"left",
"center",
"right"
]
}
},
"required": [
"video_id"
]
}🟡update_video(video_id, title, description, visibility, player_color, ...)
Change a video's title, description, visibility (public/private), player colour or content category. Only the fields given are changed.
Eingabe-Schema
{
"type": "object",
"properties": {
"video_id": {
"description": "The video's public id (from list_videos / get_video).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"title": {
"description": "New title.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"description": "New description; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"visibility": {
"description": "Who can watch: public (anyone with the link / embed) or private (only you).",
"type": "string",
"enum": [
"public",
"private"
]
},
"player_color": {
"description": "Player accent colour; null returns to your brand default.",
"anyOf": [
{
"description": "Player accent colour as a 6-digit hex value, e.g. #22d3ee.",
"type": "string",
"pattern": "^#[0-9a-fA-F]{6}$"
},
{
"type": "null"
}
]
},
"category": {
"description": "Content category used for ad targeting; null clears it.",
"anyOf": [
{
"type": "string",
"enum": [
"gaming",
"education",
"music",
"tech",
"business",
"lifestyle",
"sports",
"entertainment",
"news",
"other"
]
},
{
"type": "null"
}
]
}
},
"required": [
"video_id"
]
}🔴delete_video(video_id, confirm)
Permanently delete a hosted video and its file. Irreversible: always confirm with the user first (name the video) and only then call with confirm set to true.
Eingabe-Schema
{
"type": "object",
"properties": {
"video_id": {
"description": "The video's public id (from list_videos / get_video).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"confirm": {
"description": "Must be true. Ask the user to confirm before calling; deletion is permanent and removes the file from Vidreno's storage.",
"type": "boolean"
}
},
"required": [
"video_id",
"confirm"
]
}🟢get_analytics(days)
How the user's videos are doing: totals (videos, views, storage), the most viewed videos, the newest uploads and a daily views series for the last N days.
Eingabe-Schema
{
"type": "object",
"properties": {
"days": {
"description": "Length of the daily views window in days (default 30).",
"default": 30,
"type": "integer",
"minimum": 1,
"maximum": 365
}
}
}🟡start_video_upload(title, description, visibility)
Begin uploading a new video from the user's computer. Files cannot be sent through this connection: the tool returns an upload_url the user opens in their browser (signed in to Vidreno) to pick the file; the upload goes straight to Vidreno's storage with the metadata given here pre-filled. Afterwards call get_upload_status with the upload_id to get the finished video and its embed code. Links are single-use and expire after about an hour. This is also the right tool when the user attached the video in the chat unless this AI app can supply a temporary https download URL for the attachment (ChatGPT can; use upload_video_from_chat there).
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"description": "Title to give the video once uploaded.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"description": "Description to give the video once uploaded.",
"type": "string",
"maxLength": 5000
},
"visibility": {
"description": "Visibility once uploaded; default public.",
"default": "public",
"type": "string",
"enum": [
"public",
"private"
]
}
}
}🟡upload_video_from_chat(file, title, description, visibility)
Store a video file the user attached in this conversation as a new hosted video. Only usable when the AI app itself fills in a temporary https download_url and file_id for the attachment (ChatGPT does this). Clients that cannot supply such a URL (including Claude) must not call this tool or try to send the file contents: call start_video_upload instead, which gives the user a browser upload link. Pass the attachment as `file`. The file must be a video of at most 512 MB, and the user's plan must have room for it (the same storage rule as any upload). The transfer runs on Vidreno's side; the tool waits briefly and returns status ready (with the video and its embed code), uploading (keep calling get_upload_status with the upload_id until it is ready or failed), or an error explaining what to do instead. For files above the limit or on the user's computer, use start_video_upload.
Eingabe-Schema
{
"type": "object",
"properties": {
"file": {
"description": "The video file attached in the conversation.",
"type": "object",
"properties": {
"download_url": {
"description": "Temporary download URL of the attached file (filled in by the client).",
"type": "string",
"minLength": 1,
"maxLength": 4096
},
"file_id": {
"description": "The client's id for the attached file.",
"type": "string",
"minLength": 1,
"maxLength": 256
},
"mime_type": {
"description": "The attachment's media type, when the client knows it.",
"type": "string",
"maxLength": 128
},
"file_name": {
"description": "The attachment's file name, when the client knows it.",
"type": "string",
"maxLength": 512
}
},
"required": [
"download_url",
"file_id"
],
"additionalProperties": false
},
"title": {
"description": "Title for the video; defaults to the attachment's file name.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"description": {
"description": "Description for the video.",
"type": "string",
"maxLength": 5000
},
"visibility": {
"description": "Visibility of the video; default public.",
"default": "public",
"type": "string",
"enum": [
"public",
"private"
]
}
},
"required": [
"file"
]
}🟢get_upload_status(upload_id)
Check an upload started with start_video_upload, upload_video_from_chat or start_film_upload: awaiting_file (includes the upload_url while it can still be used), uploading, ready (a hosted video comes with its details and a default embed code; a film file with the film and slot it was attached to), expired (start a new upload), or failed (chat imports only; includes failure_reason).
Eingabe-Schema
{
"type": "object",
"properties": {
"upload_id": {
"description": "The upload_id returned by start_video_upload or upload_video_from_chat.",
"type": "string",
"minLength": 1,
"maxLength": 128
}
},
"required": [
"upload_id"
]
}🟢list_films(search, status, page, page_size)
List the user's films (On Demand: free to watch or buy/rent), most recently edited first, with optional search and status filter. Returns public film ids to use with the other film tools. Paginate with page/page_size.
Eingabe-Schema
{
"type": "object",
"properties": {
"search": {
"description": "Case-insensitive match against title and synopsis.",
"type": "string",
"maxLength": 200
},
"status": {
"description": "Filter by status; default all.",
"default": "all",
"type": "string",
"enum": [
"all",
"draft",
"published"
]
},
"page": {
"description": "1-based page number.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"page_size": {
"description": "Films per page (max 50).",
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
}
}
}🟢get_film(film_id)
Full details of one film: status (draft/published), how it is released (free to watch or buy/rent) and its prices, play count, metadata, main film and trailer state, credits (with credit_ids), the publish checklist and its public page link. Films cannot be embedded.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"film_id"
]
}🟡create_film(title)
Create a new draft film from a title, exactly as the Studio's add-film dialog does. The draft starts as Buy or rent with no prices, no poster and no files, and is not public until publish_film. Returns the film's id, editor link and publish checklist (the same shape as get_film), so the next steps are update_film (details, access: free or paid, prices), start_film_upload (main film), the poster in the film editor, then publish_film.
Eingabe-Schema
{
"type": "object",
"properties": {
"title": {
"description": "The film's title (up to 200 characters); everything else is set afterwards.",
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"title"
]
}🟡update_film(film_id, title, synopsis, director, cast, ...)
Change a film's metadata (title, synopsis, director and cast lines, year, runtime, genre, IMDb link, extra links), how it is released (access: free = Free to watch, which needs no price; paid = Buy or rent) and its buy/rent prices in US cents (minimum $1.00), or detach its trailer. Only the fields given are changed; the same validation as the film editor applies, and a published film whose publish checklist no longer passes returns to draft. The poster cannot be set here: it is added in the film editor (the edit link). The main film is replaced with start_film_upload, never detached.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"title": {
"description": "New title.",
"type": "string",
"minLength": 1,
"maxLength": 200
},
"synopsis": {
"description": "New synopsis; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 5000
},
{
"type": "null"
}
]
},
"director": {
"description": "Director line shown on the film page (credits are managed separately); null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"cast": {
"description": "Cast line, comma separated; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 2000
},
{
"type": "null"
}
]
},
"release_year": {
"description": "Release year; null clears it.",
"anyOf": [
{
"type": "integer",
"minimum": 1888,
"maximum": 2100
},
{
"type": "null"
}
]
},
"runtime_minutes": {
"description": "Runtime in minutes; null clears it.",
"anyOf": [
{
"type": "integer",
"minimum": 1,
"maximum": 10000
},
{
"type": "null"
}
]
},
"genre": {
"description": "Genre; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"imdb_url": {
"description": "IMDb link; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 500,
"format": "uri"
},
{
"type": "null"
}
]
},
"access": {
"description": "How the film is released: free (Free to watch) or paid (Buy or rent; needs at least one price to publish).",
"type": "string",
"enum": [
"free",
"paid"
]
},
"buy_price": {
"description": "Buy price in US cents (minimum 100); null removes it. Only used when access is paid.",
"anyOf": [
{
"type": "integer",
"minimum": 100,
"maximum": 10000000
},
{
"type": "null"
}
]
},
"rent_price": {
"description": "Rental price in US cents (minimum 100); null removes it. Only used when access is paid.",
"anyOf": [
{
"type": "integer",
"minimum": 100,
"maximum": 10000000
},
{
"type": "null"
}
]
},
"rental_window_hours": {
"description": "How long a rental lasts, in hours.",
"type": "integer",
"minimum": 1,
"maximum": 720
},
"comments_enabled": {
"description": "Whether viewers can comment on the film page.",
"type": "boolean"
},
"extra_links": {
"description": "Extra links shown on the film page (label + URL, up to 20). Replaces the whole list; an empty list clears it.",
"maxItems": 20,
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"description": "Link text, e.g. Press kit.",
"type": "string",
"minLength": 1,
"maxLength": 60
},
"url": {
"description": "https link.",
"type": "string",
"maxLength": 2000,
"format": "uri"
}
},
"required": [
"label",
"url"
]
}
},
"detach": {
"description": "Remove a file from the film: trailer deletes the current trailer. The main film cannot be detached, only replaced with start_film_upload.",
"type": "string",
"enum": [
"trailer"
]
}
},
"required": [
"film_id"
]
}🟡publish_film(film_id)
Make a film public on its film page. Refused, with the same message the film editor shows, while the publish checklist is incomplete: title, poster, a ready main film, and a price only when it is Buy or rent (a free-to-watch film publishes without one). The checklist comes back with how to finish each open item: update_film or start_film_upload where a tool can do it, and the editor link for the poster, which is added in the film editor, not through this connection.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"film_id"
]
}⚪unpublish_film(film_id)
Take a film off its public page (back to draft). Viewers who already bought or rented it keep their access.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"film_id"
]
}🟡add_film_credit(film_id, role, name, username, email, ...)
Add a credit (role + name) to a film's credit list, optionally linking it to a Vidreno filmmaker by username (they get a request to accept) or inviting the person by e-mail (the invite is sent straight away; at most 60 credits per film, invites are rate-limited per day). Returns the full credit list with credit_ids.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"role": {
"description": "The role, e.g. Director, Editor, Lead actor.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"name": {
"description": "The person's name as it should appear.",
"type": "string",
"minLength": 1,
"maxLength": 120
},
"username": {
"description": "Link the credit to an existing Vidreno filmmaker account by username (they are asked to accept).",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"email": {
"description": "Invite the person by e-mail instead: the credit is stored and an invite e-mail is sent now.",
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"position": {
"description": "1-based position in the credit list; default last.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
}
},
"required": [
"film_id",
"role",
"name"
]
}🔴remove_film_credit(film_id, credit_id)
Remove one credit from a film's credit list by credit_id (from get_film). A pending invite for it stops working.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"credit_id": {
"description": "The credit_id from get_film.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
},
"required": [
"film_id",
"credit_id"
]
}🟡reorder_film_credits(film_id, credit_ids)
Set the order of a film's credits: pass every credit_id of the film in the order they should appear.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"credit_ids": {
"description": "Every credit_id of the film, in the new order.",
"minItems": 1,
"maxItems": 60,
"type": "array",
"items": {
"description": "The credit_id from get_film.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
}
}
},
"required": [
"film_id",
"credit_ids"
]
}⚪invite_film_credit(film_id, credit_id, link_only)
E-mail (or re-send) the invite for a credit that carries an e-mail address, so the person can claim it with their Vidreno account. The same limits as the app apply: a daily cap per account and no repeat e-mail to the same address for the same film within a day. Returns the invite link too; with link_only it only mints the link (nothing is sent), as the editor's copy-link button does.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"credit_id": {
"description": "The credit_id from get_film.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"link_only": {
"description": "true returns the invite link without sending an e-mail (for the user to pass on themselves); it does not count against the daily e-mail cap.",
"default": false,
"type": "boolean"
}
},
"required": [
"film_id",
"credit_id"
]
}🟡update_film_credit(film_id, credit_id, role, name, username, ...)
Change one credit in place by credit_id: its role or name, or who it is linked to (a Vidreno username, which they are asked to accept, or an invite e-mail, which is sent straight away; null clears). The credit keeps its id, position and, when only the role or name changes, its accepted or linked state. Returns the full credit list.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"credit_id": {
"description": "The credit_id from get_film.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"role": {
"description": "New role.",
"type": "string",
"minLength": 1,
"maxLength": 40
},
"name": {
"description": "New name as it should appear.",
"type": "string",
"minLength": 1,
"maxLength": 120
},
"username": {
"description": "Link the credit to a Vidreno filmmaker by username (they are asked to accept; replaces any e-mail); null unlinks it.",
"anyOf": [
{
"type": "string",
"minLength": 1,
"maxLength": 40
},
{
"type": "null"
}
]
},
"email": {
"description": "Set the invite e-mail (a new address sends the invite now; replaces any username); null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 254,
"format": "email",
"pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
{
"type": "null"
}
]
}
},
"required": [
"film_id",
"credit_id"
]
}🔴convert_legacy_credits(film_id)
Turn a film's plain director and cast text lines into credit rows (Director for the director line, Actor for each comma-separated cast name), appended after the existing credits, and clear the lines — the film editor's convert button. Nothing is linked or invited; use update_film_credit afterwards. Returns the full credit list.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
}
},
"required": [
"film_id"
]
}🟡start_film_upload(film_id, asset)
Begin uploading a film's main film or trailer from the user's computer. Files cannot be sent through this connection: the tool returns an upload_url the user opens in their browser (signed in to Vidreno) to pick the file; the upload goes straight to Vidreno's film storage (outside plan storage) and is attached to the film when it finishes, replacing the current file in that slot. Afterwards call get_film to see the new file's state; get_upload_status with the upload_id works too. Links are single-use and expire after about an hour.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "The film's public id (from list_films / get_film).",
"type": "string",
"minLength": 1,
"maxLength": 64
},
"asset": {
"description": "Which file this is: the main film or the trailer. Replaces the current one once the upload finishes.",
"default": "main",
"type": "string",
"enum": [
"main",
"trailer"
]
}
},
"required": [
"film_id"
]
}🟢get_filmmaker_profile
The user's filmmaker profile as the Profile page shows it: username (the public handle) and why it cannot go public yet, display name, bio, location, roles, website and social links, whether the profile is public and its public link, plus how many credits from other filmmakers await an answer. The avatar is managed in the Profile page.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟡update_filmmaker_profile(username, display_name, bio, location, roles, ...)
Change any part of the user's filmmaker profile: username, display name, bio, location, roles (up to 6, presets or custom), website, per-platform social links and whether the profile is public. Only the fields given change; the Profile page's validation, username rules and uniqueness check apply and its messages come back on failure. Avatar changes stay in the Profile page.
Eingabe-Schema
{
"type": "object",
"properties": {
"username": {
"description": "New username (the public handle): lower-case letters, digits, dots and underscores; the Profile page's rules and uniqueness check apply.",
"type": "string",
"maxLength": 40
},
"display_name": {
"description": "Display name; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 80
},
{
"type": "null"
}
]
},
"bio": {
"description": "Short bio; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 1000
},
{
"type": "null"
}
]
},
"location": {
"description": "Location; null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"roles": {
"description": "The complete list of roles (up to 6; presets like Director, Writer, Screenwriter or custom text). Replaces the current list.",
"maxItems": 6,
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 40
}
},
"website_url": {
"description": "Website (https link); null clears it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"social_links": {
"description": "Per-platform links; only the platforms given change, null removes one.",
"type": "object",
"properties": {
"instagram": {
"description": "https link on instagram; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"x": {
"description": "https link on x; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"youtube": {
"description": "https link on youtube; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"vimeo": {
"description": "https link on vimeo; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"tiktok": {
"description": "https link on tiktok; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"letterboxd": {
"description": "https link on letterboxd; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
},
"imdb": {
"description": "https link on imdb; null removes it.",
"anyOf": [
{
"type": "string",
"maxLength": 500
},
{
"type": "null"
}
]
}
}
},
"public": {
"description": "Whether the profile page is public (needs a valid username and a creator account).",
"type": "boolean"
}
}
}🟢list_my_credits
Credits that other filmmakers added the user to on their films, pending first: the role and name as written, the film (id, title, status, public page) and the film owner's name. Pending ones await the user's answer (respond_to_credit); accepted ones show on the user's public profile.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟢respond_to_credit(credit_id, action)
Accept, decline or unlink a credit another filmmaker gave the user (credit_id from list_my_credits). Accepting a pending credit shows the film on the user's public profile; declining a pending one or unlinking an accepted one keeps the name on the film but removes the link to the user's account.
Eingabe-Schema
{
"type": "object",
"properties": {
"credit_id": {
"description": "The credit_id from list_my_credits.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"action": {
"description": "accept a pending credit; decline a pending one or unlink an accepted one (the name stays on the film, the link to your account goes).",
"type": "string",
"enum": [
"accept",
"decline",
"unlink"
]
}
},
"required": [
"credit_id",
"action"
]
}🟢get_earnings
What the user's Payouts page shows, read-only: lifetime and this month's earnings split into film sales and ad earnings, the balance (available to cash out, maturing inside the hold window, paid out, in flight), the payout minimum and hold period, the saved payout method in masked form, whether ad earnings are live for this account or still coming soon, a per-film breakdown (sales, refunds, gross, net earnings) and the 5 most recent payouts. Amounts are in cents with a display string. Read-only: to cash out or change the payout method the user opens https://vidreno.com/payouts. Use list_payouts for the full payout history and list_film_sales for individual orders.
Eingabe-Schema
{
"type": "object",
"properties": {}
}🟢list_payouts(page, page_size)
The user's cash-out requests, newest first: amount, status (requested, processing, paid or failed with the reason), method, masked destination, requested and paid dates. Read-only; the user requests payouts at https://vidreno.com/payouts. Paginate with page/page_size.
Eingabe-Schema
{
"type": "object",
"properties": {
"page": {
"description": "1-based page number.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"page_size": {
"description": "Payouts per page (max 50).",
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
}
}
}🟢list_film_sales(film_id, status, page, page_size)
The user's film orders (buy and rent), newest first, one row per order: film, purchase or rental, price before tax, Vidreno's 10% cut, the payment processor's fee (processor_fee_estimated is true until the real fee is known), paid or refunded, what was credited and what the order is worth in the balance today (net: 0 once refunded), and dates. Never includes who bought. Filter by film_id (public film id) or status; paginate with page/page_size. Read-only.
Eingabe-Schema
{
"type": "object",
"properties": {
"film_id": {
"description": "Only this film's orders (a public film id from list_films).",
"type": "string",
"minLength": 1
},
"status": {
"description": "Only paid orders, only refunded ones, or every order.",
"default": "all",
"type": "string",
"enum": [
"all",
"paid",
"refunded"
]
},
"page": {
"description": "1-based page number.",
"default": 1,
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"page_size": {
"description": "Orders per page (max 50).",
"default": 20,
"type": "integer",
"minimum": 1,
"maximum": 50
}
}
}Community
Nachweis