90trust / 100

Flask

by flask.do in Developer tools

MCP serverPassing, checked 1 h ago

Feedback layer for video. Reviewers talk through feedback; agents read it as structured comments.

https://api.flask.do/api/mcp/mcp

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
267 ms typical, 267 ms slowest 5%
Last check
1 h ago
Next check
in 5 h

How to call it

Add it to any MCP client that supports remote servers.

{
  "mcpServers": {
    "flask": {
      "type": "http",
      "url": "https://api.flask.do/api/mcp/mcp"
    }
  }
}

25 tools

  • contents

    Browse contents. Without folder_id: lists what's at the team's top level (root) - both folders and assets that live directly at root. With folder_id: opens that folder and returns its child folders and assets. Each asset item carries asset_id (the asset), version_id (its current

  • feedback_list

    List top-level feedback on an asset (pass the asset id for its current version, or a version id for that exact version; a folder id is refused - use recent_activity(folder_id)). The response names the version listed: version_id, container_id, title and version number. Each item h

  • feedback_get

    Get a single feedback item with its full reply thread. Returns the item's text body (for recordings: the AI-organized feedback), tags (by name), author, posted_by_agent, video timestamp, the recording (recording_type voice, camera or screen; its full verbatim transcript; pipeline

  • wait_for_feedback

    Wait for NEW feedback on an asset (comments and replies by others; your own posts are not returned). Blocks up to timeout_seconds (default 45) and returns as soon as new feedback arrives, or times out with an empty list. A recording arrives once its transcript is done; recordings

  • feedback_post

    Create a feedback comment on an asset, as the connected user. Pass an asset id (the comment lands on its current version) or a version id (that exact version). content is Markdown (a heading, lists, bold, links, @mentions as links - see the content parameter). PREFER passing time

  • feedback_update

    Edit an existing feedback item. content (Markdown - replaces the whole body; start from the item's current content to keep its mentions and formatting) and timestamp (video time in seconds) can only be changed on the connected user's OWN comments. add_tags / remove_tags apply the

  • get_annotated_frames

    Supplementary visuals for a feedback item. For recording items: the media under review with the reviewer's drawing rendered in, plus their shared SCREEN when they demonstrated something (e.g. a Photoshop/Figma mockup); webcam frames are NOT included, and the transcript is returne

  • get_frame

    Drill into a recording for MORE visual detail: get the exact frame at a specific time (at) or when a specific word/phrase was spoken (word). Use when get_annotated_frames did not show what a reference ('this','here','that') means, or to see a moment the transcript mentions. Retur

  • asset_status

    Check whether an uploaded or imported video is ready. Pass the version id an upload returned (its asset_id) or an asset id (resolves to its current version); a folder id is refused. status is one of: ready; pending_ingest, processing, preparing or waiting (still working - check a

  • permission_get

    Read the access settings of a folder or an asset. Returns: your own access level (full_access, comment, view or none) and whether you are its creator / a team member, the creator (name, avatar), the default levels for team members and for anyone with the link, and the team's memb

  • search

    Search your team's folders (by name or description), assets (by title) and feedback (by text) at once; always returns all three categories. Asset hits have the contents shape: asset_id (the asset), version_id (its current version), version_count, the current version's media field

  • recent_activity

    Get the latest comments across your team, newest first. Returns a mix of text and recording comments with author, timestamp, and a link to jump into the conversation. Each item has a `type` field ("text" or "recording") plus the asset it belongs to (container_id / container_title

  • tags

    List the team's tags and show the share of each tag (plus an 'untagged' bucket) across a scope. Scope defaults to the whole team; pass folder_id to narrow to one folder (its whole subtree), or asset_id to narrow to one asset (an asset id counts feedback across ALL its versions; a

  • tag_create

    Create a team tag (label) so feedback can be tagged with it by name in feedback_post and feedback_update. Idempotent: if a tag with the same name exists (case-insensitive), it is returned unchanged with created: false. Tags are shared by the whole team; call tags() first to reuse

  • members

    List the people on the active team (name, user id, role). Use a user id to mention someone in feedback_post / feedback_update content: [@Name](https://flask.do/members?user=USER_ID) - the person is notified. Pass query to filter by name.

  • upload_video

    Upload a video from a public URL (a direct video file link or a Google Drive share link) into Flask. Flask downloads it, stores it, and starts processing. Creates a new asset (container_id + url) with the file as its first version (asset_id / version_id), or a new version of an e

  • upload_file_start

    Start uploading a LOCAL video or image file from the user's machine into Flask. VIDEO: creates the asset immediately (container_id + shareable url, live before any bytes move) with the file as its version (asset_id / version_id), or a new version of an existing asset with version

  • upload_file_complete

    Finalize a local file upload started with upload_file_start. Call this only AFTER the curl PUT has finished successfully. Pass exactly one of: asset_id (a video: verifies the file landed in storage and starts video processing), image_url (an image) or upload_id (a live animation

  • feedback_stats

    Aggregate feedback statistics across many assets in ONE call - counts per asset and per version (v1, v2, ...), split by type (text/recording), tag, and author, with first/last feedback timestamps. Scope to a folder (folder_id), one asset (asset_id - an asset id or any of its vers

  • folder_create

    Create a folder. parent_folder_id is optional: omit it for the team's top level (root), or pass a folder id from contents or search to nest it. Folders are optional and nestable; assets can also sit at root. This does not check for an existing folder with the same name (the app a

  • items_update

    Rename and/or move folders and assets, up to 20 items per call, each with its own result. Per item: id (a folder id, an asset id, or a version id) plus at least one of: title (renames the folder, or the asset; a version id renames its asset), version_title (names that one version

  • versions_update

    Regroup an asset's versions, as the version menu and drag-and-drop do in the Flask app; no media or feedback is ever deleted. action=add: make other assets or versions the NEWEST versions of asset_id (the asset that keeps its title, link and sharing). A source asset id brings ALL

  • version_notes_get

    Read a version's notes (Markdown) and its files. Notes say what changed in that version and how to continue the work; files are what made it (by convention the working files as one source.zip). Call this before continuing work someone else uploaded: read the current version's not

  • version_notes_update

    Replace a version's notes with Markdown (the whole text; null or empty clears them). Write notes on every revision you upload, so any agent can continue from the Flask link alone: what changed and why (which feedback it answers), how to continue (the tool and versions used, the c

  • version_file_upload

    Add a file to a version: returns a presigned upload URL for exactly file_size bytes; upload with the curl command from next_step. The file belongs to the version as soon as the bytes land (no complete call); to show it in the notes, put the markdown line it returns on a line of i

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTime
1 h agoPassed200267 ms
11 h agoPassed2001.1 s