Flask is an MCP server with 17 tools an agent can call, among them asset_status, contents, feedback_get. It answers at https://api.flask.do/api/mcp/mcp over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 24 October 2026, succeeded.
Feedback layer for video. Reviewers talk through feedback; agents read it as structured comments.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
asset_status | Check the processing status of a video. Pass the version id an upload returned (asset_id), or an asset id (resolves to its current version). Returns progress percentage for videos being processed, confirms it is ready, or reports no_version Inputs: asset_id |
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_ Inputs: folder_id, limit, offset |
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, video timestamp, the recording's full verbatim transcript, visual_references (the point Inputs: element_id |
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). Returns each item's text body, tags (by name), author, timestamp, and reply_count. Recording items are ONE comment per Inputs: asset_id, limit, offset |
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). PREFER passing timestamp (seconds into the video) whenever the source material h Inputs: asset_id, content, timestamp, tags, reply_to |
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 (a Inputs: folder_id, asset_id, from, to |
feedback_update | Edit an existing feedback item. content (replaces the text) and timestamp (video time in seconds) can only be changed on the connected user's OWN comments. add_tags / remove_tags apply the team's existing tags by NAME and work on ANY feedba Inputs: element_id, content, timestamp, add_tags, remove_tags |
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 Inputs: element_id |
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 Inputs: element_id, at, word, source |
permission_get | See who has access to a folder or an asset and their permission levels (full_access, comment, view, none). Returns the connected user's effective access, the creator, plus link and team-member default access levels. Pass folder_id for a fol Inputs: folder_id, asset_id, limit, offset |
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 be Inputs: limit, offset, folder_id, since, until |
search | Search across your team's folders, assets, and feedback by text. Always returns all three categories together. Inputs: query, limit |
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 co Inputs: folder_id, asset_id |
upload_file_complete | Finalize a local file upload started with upload_file_start. Call this only AFTER the curl PUT has finished successfully. Verifies the file landed in storage and starts video processing. Safe to retry. Inputs: asset_id, version_of |
upload_file_start | Start uploading a LOCAL video file from the user's machine into Flask. 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 exi Inputs: folder_id, file_size, title, content_type, version_of |
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 Inputs: video_url, folder_id, title, version_of |
wait_for_feedback | Wait for NEW feedback on an asset. Blocks up to timeout_seconds (default 45) and returns as soon as feedback newer than `since` arrives, or times out with an empty list. To listen continuously, call it again with the returned next_since. Us Inputs: asset_id, since, timeout_seconds |
Every block below points at https://api.flask.do/api/mcp/mcp. Pick your client and copy.
claude mcp add --transport http flask https://api.flask.do/api/mcp/mcp
{
"mcpServers": {
"flask": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://api.flask.do/api/mcp/mcp"]
}
}
}{
"mcpServers": {
"flask": {
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"servers": {
"flask": {
"type": "http",
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"context_servers": {
"flask": {
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"mcpServers": {
"flask": {
"serverUrl": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"mcpServers": {
"flask": {
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}name: Flask
version: 0.0.1
schema: v1
mcpServers:
- name: Flask
type: streamable-http
url: https://api.flask.do/api/mcp/mcp{
"mcpServers": {
"flask": {
"httpUrl": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"mcpServers": {
"flask": {
"type": "http",
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}{
"mcpServers": {
"flask": {
"url": "https://api.flask.do/api/mcp/mcp"
}
}
}goose://extension?url=https%3A%2F%2Fapi.flask.do%2Fapi%2Fmcp%2Fmcp&type=streamable_http&id=flask&name=Flask
It answered our last check on 24 October 2026 in 141 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
17, as returned by the server's own tools/list on 22 September 2026: asset_status, contents, feedback_get, feedback_list, feedback_post, feedback_stats, feedback_update, get_annotated_frames, and 9 more.
It answered our last check on 24 October 2026 in 141 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://api.flask.do/api/mcp/mcp. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.tryflask. Endpoint host: api.flask.do. ARD identifier: urn:air:io.github.tryflask:mcp:flask.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.