vidreno
Registry code: 55b1a54aa0556878
Vidreno is where filmmakers publish films, each on its own film page, free to watch or buy or rent (Films), and where creators host videos for a link and an embed code (Host & Embed). These tools manage the connected account's own films (films:* tools) and hosted videos (videos:* tools), and read its earnings, payouts and film sales (earn:read tools: get_earnings, list_payouts, list_film_sales; read-only, so cashing out and changing the payout method happen on the Payouts page), and nothing else. get_account says which of the two the account is set up for (creator_mode); treat it as what to…
- endpoint
- https://vidreno.com/mcp
- protocol
- http-sse ·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 vidreno live?
- Yes — it answered the hub's last check (checked 1h ago). It answered 100% of checks over the last 30 days.
- Is vidreno free to use?
- No — it asks for a key or a login before it will serve.
- What tools does vidreno have?
- 31 tools: get_profile, unpublish_film, get_analytics, remove_film_credit, invite_film_credit, convert_legacy_credits, get_filmmaker_profile, list_my_credits, ….
- Is vidreno 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.
90 days 100%· all time 100%
last good check
of 31 tools
- unknown → live
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.
through this hub
successful
what callers paid
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.
get_profile auth-required never probed
Identify the Vidreno account this connection belongs to. Call this when the user asks which account is connected.
{ "type": "object", "properties": {}, "description": "No arguments." }arguments 5 linesunpublish_film auth-required never probed
Take a film off its public page (back to draft). Viewers who already bought or rented it keep their access.
{ "type": "object", "required": [ "film_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." } } }arguments 14 linesget_analytics auth-required 1h ago
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.
{ "type": "object", "properties": { "days": { "type": "integer", "default": 30, "maximum": 365, "minimum": 1, "description": "Length of the daily views window in days (default 30)." } } }arguments 12 linesremove_film_credit auth-required never probed
Remove one credit from a film's credit list by credit_id (from get_film). A pending invite for it stops working.
{ "type": "object", "required": [ "film_id", "credit_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "credit_id": { "type": "integer", "maximum": 9007199254740991, "description": "The credit_id from get_film.", "exclusiveMinimum": 0 } } }arguments 21 linesinvite_film_credit auth-required never probed
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.
{ "type": "object", "required": [ "film_id", "credit_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "credit_id": { "type": "integer", "maximum": 9007199254740991, "description": "The credit_id from get_film.", "exclusiveMinimum": 0 }, "link_only": { "type": "boolean", "default": false, "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." } } }arguments 26 linesconvert_legacy_credits auth-required never probed
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.
{ "type": "object", "required": [ "film_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." } } }arguments 14 linesget_filmmaker_profile auth-required never probed
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.
{ "type": "object", "properties": {} }arguments 4 lineslist_my_credits auth-required never probed
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.
{ "type": "object", "properties": {} }arguments 4 linesget_earnings auth-required 1h ago
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.
{ "type": "object", "properties": {} }arguments 4 linesget_account auth-required 1h ago
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.
{ "type": "object", "properties": {}, "description": "No arguments." }arguments 5 lineslist_videos auth-required never probed
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.
{ "type": "object", "properties": { "page": { "type": "integer", "default": 1, "maximum": 9007199254740991, "minimum": 1, "description": "1-based page number." }, "search": { "type": "string", "maxLength": 200, "description": "Case-insensitive match against title and description." }, "page_size": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Videos per page (max 50)." }, "visibility": { "enum": [ "all", "public", "private" ], "type": "string", "default": "all", "description": "Filter by visibility; default all." } } }arguments 34 linesget_video auth-required never probed
Full details of one hosted video: title, description, visibility, size, duration, views, player colour, category and its links.
{ "type": "object", "required": [ "video_id" ], "properties": { "video_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The video's public id (from list_videos / get_video)." } } }arguments 14 linesget_embed_code auth-required never probed
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.
{ "type": "object", "required": [ "video_id" ], "properties": { "loop": { "type": "boolean", "default": false, "description": "Restart when finished." }, "muted": { "type": "boolean", "default": false, "description": "Start muted." }, "width": { "type": "integer", "default": 560, "maximum": 4096, "minimum": 1, "description": "Fixed width in pixels (only when responsive is false)." }, "height": { "type": "integer", "default": 315, "maximum": 4096, "minimum": 1, "description": "Fixed height in pixels (only when responsive is false)." }, "autoplay": { "type": "boolean", "default": false, "description": "Start playing on load (browsers require muted for this to work)." }, "controls": { "type": "boolean", "default": true, "description": "Show the player controls." }, "video_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The video's public id (from list_videos / get_video)." }, "alignment": { "enum": [ "left", "center", "right" ], "type": "string", "default": "center", "description": "Horizontal alignment inside the host page." }, "responsive": { "type": "boolean", "default": true, "description": "True for a fluid 16:9 embed that fills its container; false for a fixed pixel size." }, "corner_radius": { "type": "integer", "default": 10, "maximum": 64, "minimum": 0, "description": "Corner radius in pixels; 0 for square corners." }, "allow_fullscreen": { "type": "boolean", "default": true, "description": "Allow the fullscreen button." } } }arguments 75 linesupdate_video auth-required never probed
Change a video's title, description, visibility (public/private), player colour or content category. Only the fields given are changed.
{ "type": "object", "required": [ "video_id" ], "properties": { "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "New title." }, "category": { "anyOf": [ { "enum": [ "gaming", "education", "music", "tech", "business", "lifestyle", "sports", "entertainment", "news", "other" ], "type": "string" }, { "type": "null" } ], "description": "Content category used for ad targeting; null clears it." }, "video_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The video's public id (from list_videos / get_video)." }, "visibility": { "enum": [ "public", "private" ], "type": "string", "description": "Who can watch: public (anyone with the link / embed) or private (only you)." }, "description": { "anyOf": [ { "type": "string", "maxLength": 5000 }, { "type": "null" } ], "description": "New description; null clears it." }, "player_color": { "anyOf": [ { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$", "description": "Player accent colour as a 6-digit hex value, e.g. #22d3ee." }, { "type": "null" } ], "description": "Player accent colour; null returns to your brand default." } } }arguments 76 linesdelete_video auth-required never probed
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.
{ "type": "object", "required": [ "video_id", "confirm" ], "properties": { "confirm": { "type": "boolean", "description": "Must be true. Ask the user to confirm before calling; deletion is permanent and removes the file from Vidreno's storage." }, "video_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The video's public id (from list_videos / get_video)." } } }arguments 19 linesstart_video_upload auth-required never probed
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).
{ "type": "object", "properties": { "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Title to give the video once uploaded." }, "visibility": { "enum": [ "public", "private" ], "type": "string", "default": "public", "description": "Visibility once uploaded; default public." }, "description": { "type": "string", "maxLength": 5000, "description": "Description to give the video once uploaded." } } }arguments 25 linesupload_video_from_chat auth-required never probed
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.
{ "type": "object", "required": [ "file" ], "properties": { "file": { "type": "object", "required": [ "download_url", "file_id" ], "properties": { "file_id": { "type": "string", "maxLength": 256, "minLength": 1, "description": "The client's id for the attached file." }, "file_name": { "type": "string", "maxLength": 512, "description": "The attachment's file name, when the client knows it." }, "mime_type": { "type": "string", "maxLength": 128, "description": "The attachment's media type, when the client knows it." }, "download_url": { "type": "string", "maxLength": 4096, "minLength": 1, "description": "Temporary download URL of the attached file (filled in by the client)." } }, "description": "The video file attached in the conversation.", "additionalProperties": false }, "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "Title for the video; defaults to the attachment's file name." }, "visibility": { "enum": [ "public", "private" ], "type": "string", "default": "public", "description": "Visibility of the video; default public." }, "description": { "type": "string", "maxLength": 5000, "description": "Description for the video." } } }arguments 61 linesget_upload_status auth-required never probed
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).
{ "type": "object", "required": [ "upload_id" ], "properties": { "upload_id": { "type": "string", "maxLength": 128, "minLength": 1, "description": "The upload_id returned by start_video_upload or upload_video_from_chat." } } }arguments 14 lineslist_films auth-required never probed
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.
{ "type": "object", "properties": { "page": { "type": "integer", "default": 1, "maximum": 9007199254740991, "minimum": 1, "description": "1-based page number." }, "search": { "type": "string", "maxLength": 200, "description": "Case-insensitive match against title and synopsis." }, "status": { "enum": [ "all", "draft", "published" ], "type": "string", "default": "all", "description": "Filter by status; default all." }, "page_size": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Films per page (max 50)." } } }arguments 34 linesget_film auth-required never probed
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.
{ "type": "object", "required": [ "film_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." } } }arguments 14 linescreate_film auth-required never probed
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.
{ "type": "object", "required": [ "title" ], "properties": { "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "The film's title (up to 200 characters); everything else is set afterwards." } } }arguments 14 linesupdate_film auth-required never probed
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.
{ "type": "object", "required": [ "film_id" ], "properties": { "cast": { "anyOf": [ { "type": "string", "maxLength": 2000 }, { "type": "null" } ], "description": "Cast line, comma separated; null clears it." }, "genre": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "description": "Genre; null clears it." }, "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "New title." }, "access": { "enum": [ "free", "paid" ], "type": "string", "description": "How the film is released: free (Free to watch) or paid (Buy or rent; needs at least one price to publish)." }, "detach": { "enum": [ "trailer" ], "type": "string", "description": "Remove a file from the film: trailer deletes the current trailer. The main film cannot be detached, only replaced with start_film_upload." }, "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "director": { "anyOf": [ { "type": "string", "maxLength": 200 }, { "type": "null" } ], "description": "Director line shown on the film page (credits are managed separately); null clears it." }, "imdb_url": { "anyOf": [ { "type": "string", "format": "uri", "maxLength": 500 }, { "type": "null" } ], "description": "IMDb link; null clears it." }, "synopsis": { "anyOf": [ { "type": "string", "maxLength": 5000 }, { "type": "null" } ], "description": "New synopsis; null clears it." }, "buy_price": { "anyOf": [ { "type": "integer", "maximum": 10000000, "minimum": 100 }, { "type": "null" } ], "description": "Buy price in US cents (minimum 100); null removes it. Only used when access is paid." }, "rent_price": { "anyOf": [ { "type": "integer", "maximum": 10000000, "minimum": 100 }, { "type": "null" } ], "description": "Rental price in US cents (minimum 100); null removes it. Only used when access is paid." }, "extra_links": { "type": "array", "items": { "type": "object", "required": [ "label", "url" ], "properties": { "url": { "type": "string", "format": "uri", "maxLength": 2000, "description": "https link." }, "label": { "type": "string", "maxLength": 60, "minLength": 1, "description": "Link text, e.g. Press kit." } } }, "maxItems": 20, "description": "Extra links shown on the film page (label + URL, up to 20). Replaces the whole list; an empty list clears it." }, "release_year": { "anyOf": [ { "type": "integer", "maximum": 2100, "minimum": 1888 }, { "type": "null" } ], "description": "Release year; null clears it." }, "runtime_minutes": { "anyOf": [ { "type": "integer", "maximum": 10000, "minimum": 1 }, { "type": "null" } ], "description": "Runtime in minutes; null clears it." }, "comments_enabled": { "type": "boolean", "description": "Whether viewers can comment on the film page." }, "rental_window_hours": { "type": "integer", "maximum": 720, "minimum": 1, "description": "How long a rental lasts, in hours." } } }arguments 184 linespublish_film auth-required never probed
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.
{ "type": "object", "required": [ "film_id" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." } } }arguments 14 linesadd_film_credit auth-required never probed
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.
{ "type": "object", "required": [ "film_id", "role", "name" ], "properties": { "name": { "type": "string", "maxLength": 120, "minLength": 1, "description": "The person's name as it should appear." }, "role": { "type": "string", "maxLength": 40, "minLength": 1, "description": "The role, e.g. Director, Editor, Lead actor." }, "email": { "type": "string", "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "maxLength": 254, "description": "Invite the person by e-mail instead: the credit is stored and an invite e-mail is sent now." }, "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "position": { "type": "integer", "maximum": 9007199254740991, "minimum": 1, "description": "1-based position in the credit list; default last." }, "username": { "type": "string", "maxLength": 40, "minLength": 1, "description": "Link the credit to an existing Vidreno filmmaker account by username (they are asked to accept)." } } }arguments 47 linesreorder_film_credits auth-required never probed
Set the order of a film's credits: pass every credit_id of the film in the order they should appear.
{ "type": "object", "required": [ "film_id", "credit_ids" ], "properties": { "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "credit_ids": { "type": "array", "items": { "type": "integer", "maximum": 9007199254740991, "description": "The credit_id from get_film.", "exclusiveMinimum": 0 }, "maxItems": 60, "minItems": 1, "description": "Every credit_id of the film, in the new order." } } }arguments 27 linesupdate_film_credit auth-required never probed
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.
{ "type": "object", "required": [ "film_id", "credit_id" ], "properties": { "name": { "type": "string", "maxLength": 120, "minLength": 1, "description": "New name as it should appear." }, "role": { "type": "string", "maxLength": 40, "minLength": 1, "description": "New role." }, "email": { "anyOf": [ { "type": "string", "format": "email", "pattern": "^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", "maxLength": 254 }, { "type": "null" } ], "description": "Set the invite e-mail (a new address sends the invite now; replaces any username); null clears it." }, "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." }, "username": { "anyOf": [ { "type": "string", "maxLength": 40, "minLength": 1 }, { "type": "null" } ], "description": "Link the credit to a Vidreno filmmaker by username (they are asked to accept; replaces any e-mail); null unlinks it." }, "credit_id": { "type": "integer", "maximum": 9007199254740991, "description": "The credit_id from get_film.", "exclusiveMinimum": 0 } } }arguments 60 linesstart_film_upload auth-required never probed
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.
{ "type": "object", "required": [ "film_id" ], "properties": { "asset": { "enum": [ "main", "trailer" ], "type": "string", "default": "main", "description": "Which file this is: the main film or the trailer. Replaces the current one once the upload finishes." }, "film_id": { "type": "string", "maxLength": 64, "minLength": 1, "description": "The film's public id (from list_films / get_film)." } } }arguments 23 linesupdate_filmmaker_profile auth-required never probed
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.
{ "type": "object", "properties": { "bio": { "anyOf": [ { "type": "string", "maxLength": 1000 }, { "type": "null" } ], "description": "Short bio; null clears it." }, "roles": { "type": "array", "items": { "type": "string", "maxLength": 40, "minLength": 1 }, "maxItems": 6, "description": "The complete list of roles (up to 6; presets like Director, Writer, Screenwriter or custom text). Replaces the current list." }, "public": { "type": "boolean", "description": "Whether the profile page is public (needs a valid username and a creator account)." }, "location": { "anyOf": [ { "type": "string", "maxLength": 100 }, { "type": "null" } ], "description": "Location; null clears it." }, "username": { "type": "string", "maxLength": 40, "description": "New username (the public handle): lower-case letters, digits, dots and underscores; the Profile page's rules and uniqueness check apply." }, "website_url": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "Website (https link); null clears it." }, "display_name": { "anyOf": [ { "type": "string", "maxLength": 80 }, { "type": "null" } ], "description": "Display name; null clears it." }, "social_links": { "type": "object", "properties": { "x": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on x; null removes it." }, "imdb": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on imdb; null removes it." }, "vimeo": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on vimeo; null removes it." }, "tiktok": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on tiktok; null removes it." }, "youtube": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on youtube; null removes it." }, "instagram": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on instagram; null removes it." }, "letterboxd": { "anyOf": [ { "type": "string", "maxLength": 500 }, { "type": "null" } ], "description": "https link on letterboxd; null removes it." } }, "description": "Per-platform links; only the platforms given change, null removes one." } } }arguments 162 linesrespond_to_credit auth-required never probed
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.
{ "type": "object", "required": [ "credit_id", "action" ], "properties": { "action": { "enum": [ "accept", "decline", "unlink" ], "type": "string", "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)." }, "credit_id": { "type": "integer", "maximum": 9007199254740991, "description": "The credit_id from list_my_credits.", "exclusiveMinimum": 0 } } }arguments 24 lineslist_payouts auth-required never probed
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.
{ "type": "object", "properties": { "page": { "type": "integer", "default": 1, "maximum": 9007199254740991, "minimum": 1, "description": "1-based page number." }, "page_size": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Payouts per page (max 50)." } } }arguments 19 lineslist_film_sales auth-required never probed
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.
{ "type": "object", "properties": { "page": { "type": "integer", "default": 1, "maximum": 9007199254740991, "minimum": 1, "description": "1-based page number." }, "status": { "enum": [ "all", "paid", "refunded" ], "type": "string", "default": "all", "description": "Only paid orders, only refunded ones, or every order." }, "film_id": { "type": "string", "minLength": 1, "description": "Only this film's orders (a public film id from list_films)." }, "page_size": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Orders per page (max 50)." } } }arguments 34 lines
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.
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.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - 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. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id55b1a54aa0556878.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/55b1a54aa0556878/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/55b1a54aa0556878?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.
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.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- 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.