Skip to main content
Glama

Post feedback

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 timestamp (seconds into the video) whenever the source material has one - e.g. when importing feedback from an email like 'at 0:42 the logo is wrong', convert 0:42 to 42. Without timestamp the comment is a general (non-anchored) note. tags applies the team's EXISTING tags by name (see the tags tool); statuses are tags too. Use reply_to to reply in an existing thread: the reply lands on the version that thread is on (even after a newer version was uploaded), and takes no tags or timestamp (those belong to the thread's root comment - passing them is refused). Cannot add recordings or drawings; an image only by the url of one already in Flask.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagsNoTag NAMES to apply (must already exist in the team - see the tags tool). Not allowed with reply_to.
contentYesThe comment body in Markdown. Supported: headings (one level - any number of # makes the same heading), bulleted and numbered lists, **bold**, *italic*, `code`, fenced code blocks, links; a single newline is a line break. Mention a person (they are notified) with [@Name](https://flask.do/members?user=USER_ID) - user ids come from the members tool; a plain @Name is just text. Reference an asset with its flask.do/a/ASSET_ID link, another feedback item with its url, and a moment of the video with [0:26](#t=26) or a range [0:26-0:31](#t=26,31). An image already in Flask (a url from an item's images) goes on a line of its own as ![](url); any other image stays a link. Anything else (quotes, tables, HTML) stays literal text. At most 20,000 characters of text.
asset_idYesAsset id (current version) or version id to comment on (with reply_to: the asset the thread is on)
reply_toNoFeedback item id to reply to (threads the comment under it; a reply to a reply joins the same thread)
timestampNoVideo time in SECONDS the comment refers to (e.g. 72.5 for 1:12.5). Strongly preferred when known; omit for a general comment. Not allowed with reply_to.

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only safety hints (readOnly=false, idempotent=false, destructive=false), and the description goes well beyond them: it explains that a reply lands on the thread's version even after a newer version is uploaded, that tags/timestamp are refused on replies, that recordings and drawings cannot be added, that images must already exist in Flask, and that @mentions notify. This is exactly the extra behavioral context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core action and then stays dense but useful; the timestamp-preference and reply semantics are stated early. It is a long single block with some overlap against the already-rich content schema description, which costs it a point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with no output schema, the description covers threading, version targeting, tag requirements, mention syntax, attachment limits, and reply constraints. An agent has everything needed to invoke it correctly and to know what it cannot do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: asset_id-vs-version_id semantics ('current version' vs exact version), the timestamp seconds-conversion heuristic, and the cross-parameter constraint that tags/timestamp are refused with reply_to. It does lean on the schema for content Markdown details, which caps this below 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create a feedback comment on an asset') plus the actor scope ('as the connected user'), which cleanly separates it from siblings like feedback_update, feedback_get, and feedback_list. An agent can identify this as the write/create path for feedback without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete when-to-use guidance: prefer timestamp when source material has one (with a conversion example), omit for a general note, and use reply_to to join an existing thread. However, it never explicitly names feedback_update as the alternative for editing existing comments, so routing between write tools is left partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.