Clipform
Server Details
Interactive video forms that capture authentic responses. Build engaging forms in minutes.
- Status
- Healthy
- Uptime
- 100.0% over 62 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- Clipform/mcp-server
- GitHub Stars
- 0
TDQS
Scored across 33 tools
Most tools target distinct resources or pipeline steps, and descriptions explicitly clarify likely overlaps such as get_results vs get_responses, get_guide vs get_workflow, and render_composition vs render_video_template. However, the render/search/result groupings still require careful reading, and get_more_tools/clipform_log_generation add some meta-level ambiguity.
Nearly all tools use a consistent clipform_ prefix with snake_case verb_noun naming, making the set predictable. The only notable break is get_more_tools, which lacks the prefix, and whoami is a minor stylistic deviation.
33 tools is heavy for this server and exceeds the range where selection stays effortless. While the domain is broad, several tools could be consolidated or hidden behind higher-level workflows, so the count risks overwhelming an agent.
The surface covers form CRUD, node editing, media upload/attachment, rendering, TTS, search, import, responses, and workflow guidance well. Minor gaps remain, notably option-level branching logic only being configurable in the dashboard and limited standalone media-library management.
Available Tools
33 toolsclipform_add_nodeAdd NodeAInspect
Add a new node to an existing form. Inserted before the end screen by default; after_node_id controls insertion position. Inserting into a linear flow automatically re-links the chain (the node before the insertion point points to the new node, which points to what followed) - you do not need clipform_set_logic for a simple insert. Branching still needs an explicit logic write. Node types and config schemas match clipform_create_form.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | The node to add | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| after_node_id | No | Insert after this node ID. Omit to append before the end screen. |
Output Schema
| Name | Required | Description |
|---|---|---|
| type | Yes | Node type that was added |
| node_id | Yes | ID of the created node - pass to update_node / attach_node_media |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description adds real behavioral context beyond them: default append-before-end-screen placement and automatic chain re-linking on linear insert. It does not spell out that repeated calls create duplicate nodes or note any permission requirements, so it is strong but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, all front-loaded and purposeful: purpose, insertion mechanics, then the logic-relinking implication. No filler or restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with a nested node object, an output schema, and full annotation coverage, the description supplies the key operational facts (positioning, relinking, where to find config schemas). It leaves minor gaps around duplicate-insert semantics and permissions, but nothing that would cause a misinvocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description earns more by clarifying default insertion ('Inserted before the end screen by default; after_node_id controls insertion position') and by cross-referencing clipform_create_form and clipform_get_guide for config shapes rather than duplicating them.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Add a new node to an existing form') and immediately scopes it with default insertion position, cleanly separating it from siblings like clipform_update_node and clipform_delete_node. It also anchors node typing to clipform_create_form, so an agent knows the shapes before opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when/when-not guidance: use this for a simple insert because linear re-linking is automatic and 'you do not need clipform_set_logic', while branching 'still needs an explicit logic write'. It names the alternative tool and the condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_attach_node_mediaAttach Node MediaADestructiveIdempotentInspect
Attach an existing workspace media asset (from clipform_upload_media_asset) to one or more nodes (max 10). Pass one item or many; multiple items attach sequentially. Only works on node types that support media (choice, open, scale, draw, binary, button). A media asset is reusable - attach the same media_asset_id to several nodes.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | One or more attachments to make | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | One result per item, in order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the agent knows this mutates state safely-repeatedly. The description adds batching semantics (sequential application of multiple items) and asset reusability, but never says what happens to media already on a node (overwrite vs. append) or what a partial batch failure looks like — notable for a destructive mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the core action and the batching cap before the type restriction. No filler, though the closing reusability sentence is somewhat redundant with the opening 'existing workspace media asset'.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers batching, type restrictions and reuse. However, for a tool flagged destructive it omits the most consequential behavior: whether attaching replaces existing node media, and what happens on failure partway through a sequential batch.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including detailed guidance on fit_media and show_captions, so the schema carries the parameter burden. The description only restates the batch limit and reusability of media_asset_id, adding little beyond the structured fields. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (attach), the exact resource (an existing workspace media asset produced by clipform_upload_media_asset), and the target (one or more nodes). It clearly separates itself from clipform_upload_media_asset, clipform_get_node_media and clipform_delete_node_media by naming the source of the asset and the direction of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a real constraint: only node types that support media, enumerated explicitly (choice, open, scale, draw, binary, button), plus the batching rule (max 10, sequential). It does not name alternatives for the inverse operations (removing or reading node media), so it stops short of full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_check_renderCheck Render StatusARead-onlyIdempotentInspect
Check the status of render jobs started by clipform_render_video_template or clipform_render_composition.
Pass job_ids to check a whole batch in ONE call - one line of status per job. Pass job_id for a single job. Returns the output URL for each completed render. Typical render time: 10-60 seconds. Attach is automatic when node_id was provided to the render tool - no need to poll to completion, and the attach outcome is reported here once known.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | No | A single job ID returned by the render tool | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| job_ids | No | Multiple job IDs - check the whole batch in one call instead of one call per job |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | One entry per queried job; attach completed public_urls via upload_media_asset then attach_node_media unless already auto-attached |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: typical render time of 10-60 seconds, and the non-obvious fact that attachment happens automatically when node_id was supplied and its outcome surfaces here. It stops short of, say, failure/error semantics for jobs that never complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, all load-bearing, ordered from what the tool does to how to call it to what comes back. The batching instruction and the attach-automation note are front-loaded where an agent will see them. Minimal overlap with the output schema beyond one short clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be re-explained, and the description wisely limits itself to one line about output URLs. Between the annotations, the output schema and this description, an agent has everything needed to call it correctly, including the timing expectation that prevents premature polling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description earns above baseline by explaining the semantic distinction the schema cannot: job_ids is a batching mechanism ('one line of status per job') rather than a plain array, and job_id vs job_ids are alternatives rather than combinable filters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Check the status of render jobs') and scopes it to jobs created by clipform_render_video_template or clipform_render_composition. This distinguishes it cleanly from siblings like clipform_get_results or clipform_get_node_media without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: use job_ids to check a batch in one call, job_id for a single job. It also resolves the implicit question of whether to poll, stating 'no need to poll to completion' because attach is automatic. Both the when and the when-not are covered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_complete_media_uploadComplete Media UploadAIdempotentInspect
Confirm a signed-PUT still image upload finished, after PUTting the bytes to the upload_url returned by clipform_upload_media_asset. The API verifies the object actually landed in storage before flipping the asset from processing to ready - call this right after the PUT succeeds, or the asset stays invisible in the library. Not needed for video uploads (they settle automatically).
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | No | The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it. | |
| media_asset_id | Yes | The media_asset_id returned by clipform_upload_media_asset for the still image |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | The asset's status after this call - ready on success, or its already-settled status when called again (noop) |
| media_asset_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive, closed-world. The description adds genuinely new behavior: the server verifies the object landed in storage and flips the asset from processing to ready, and that skipping the call leaves the asset invisible. It does not discuss retry semantics despite the idempotentHint, or any auth/permission requirements, so it falls short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the action, then the reason, then the exclusion. Every sentence carries distinct information; there is no restatement of the title or name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described. For a 3-parameter, two-required workflow tool the description supplies the prerequisite call, the timing constraint, the failure consequence and the video carve-out — everything an agent needs to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so media_asset_id, form_id and context are already documented in the schema, including the anonymous-session routing caveat for form_id. The description adds no parameter-level meaning (e.g. behavior when media_asset_id is unknown or already ready), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Confirm a signed-PUT still image upload finished' — and situates it in the workflow relative to the sibling clipform_upload_media_asset whose upload_url it consumes. An agent can distinguish it from clipform_upload_media_asset and clipform_attach_node_media 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when ('call this right after the PUT succeeds'), explicit consequence of omission ('the asset stays invisible in the library'), and an explicit when-not ('Not needed for video uploads (they settle automatically)'). This is the full when/when-not/alternative pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_create_formCreate ClipformAInspect
Create a new Clipform (interactive video-style form). Returns a viewer URL and form ID (an anonymous build's link is a private preview where answers are not saved). When connected via an authenticated MCP client (e.g. claude.ai), the form lands directly in the user's workspace. Anonymous sessions build into a temporary account of their own: forms stay drafts with a private preview link. Some results also include a one-time claim URL that signs the user into that account; relay it when present.
If the user hasn't said what to build yet, offer to build their first form and suggest starting points: lead-gen, feedback, quiz, or something else.
Node types (omit config to use defaults where shown):
choice: Single or multiple choice node with predefined options (supports options array). Config: choice ({enable_branching, show_answer_feedback, record_scores}), selection_mode ("single"|"multiple", default: "single"), allow_text_response (boolean, default: false), randomise_options (boolean, default: false), show_option_count (boolean, default: false), option_display ("list"|"letters", default: "list"). Defaults: {"selection_mode":"single","choice":{"enable_branching":false},"randomise_options":false,"show_option_count":false,"option_display":"list"}
open: Free-form text responses from users. Config: formats (array of {format, order}), max_recording_seconds (number, default: 120). Defaults: {"formats":[{"order":0,"format":"text"},{"order":1,"format":"audio"},{"order":2,"format":"video"}]}
details: Collect several fields on one screen - name, email, phone, address, date, and more. Config: title (string), fields (array of {id, type, label, order, required, is_custom}), description (string), consent_items (array of {id, name, label, order, type, document, require_scroll_to_accept}), Available field IDs: first_name, last_name, email, phone. Defaults: {"fields":[{"id":"first_name","type":"first_name","label":"First Name","enabled":true,"required":true},{"id":"email","type":"email","label":"Email","enabled":true,"required":true}],"consent_items":[]}
payment: Collect a payment from respondents inline, charged to a connected Stripe account. Config: amount (number), currency ("usd"|"eur"|"gbp"|"cad"|"aud", default: "usd"), provider ("stripe"|"paddle", default: "stripe"), workspace_integration_id (string), title (string), description (string). Defaults: {"amount":null,"currency":"usd","provider":"stripe"}
button: Simple button for acknowledgment or navigation (supports options array). Config: button_text (string, default: "Continue"), button_style ("primary"|"secondary"|"outline", default: "primary")
redirect: Redirect users to an external URL. Config: url (string), auto_redirect (boolean, default: true). Defaults: {"url":"","auto_redirect":true}
file_download: Provide a file for respondents to download. Config: files (array of {file_name, display_name, file_path, file_size, mime_type}), button_text (string, default: "Continue"), description (string)
end_screen: Final screen shown when form is completed. Config: title (string, default: "Thank you!"), message (string, default: "Your response has been submitted."), icon ("tick"|"trophy"|"star"|"crown"|"party"|"none", default: "tick"), show_share_button (boolean, default: false), cta_type ("none"|"restart"|"external_link", default: "none"), cta_text (string, default: "Continue"), cta_url (string). Defaults: {"title":"Thank you!","message":"Your response has been submitted."}
All type definitions and config schemas are derived from @vid-master/config (node-types). Refer to the config descriptions above for the correct keys and shapes. AI-PROTECTED parameters have restrictions noted in their descriptions.
Example: A form that asks a question, collects contact info, then finishes: { title: "Quick Survey", nodes: [ { type: "open", prompt: "What's your biggest challenge?" }, { type: "details", prompt: "Leave your details", config: { fields: [{ id: "first_name", required: true }, { id: "email", required: true }] } }, { type: "end_screen", prompt: "Thanks for your response!" } ] }
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for indexing (e.g. ['quiz', 'trivia', 'arsenal']). Include format, genre, and topics. | |
| nodes | Yes | Ordered list of nodes/steps for the form | |
| title | Yes | Form title | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| font_family | No | AI-PROTECTED: Only set when the user explicitly requests a specific font. | |
| workspace_id | No | Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace. | |
| primary_color | No | Primary/brand color as 6-digit hex (e.g. '#FF5500'). Used for buttons and accents. | |
| background_color | No | Background color as 6-digit hex (e.g. '#1A1A2E'). | |
| show_step_counter | No | Show step counter (e.g. '1/5'). Set true for quizzes. | |
| disable_back_navigation | No | Prevent going back. Set true for quizzes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | No | Plan and auth context for this session |
| nodes | Yes | Created nodes in order - IDs for attach_node_media / update_node |
| form_id | Yes | Form UUID - pass to follow-up tools |
| claim_url | No | Anonymous builds only. One-time link to sign up, keep this form and publish it. |
| is_preview | No | True when this is an anonymous preview build (answers are not saved), false otherwise. |
| viewer_url | Yes | Form URL for respondents - the live public URL. For an anonymous build this is a private preview link: answers are not saved, do not share it with respondents. |
| preview_url | No | Anonymous builds only. Private preview of the form. Answers are not saved, so do not share it with respondents. |
| dashboard_url | No | Builder URL (sign in to edit). For an anonymous build this is a one-time claim link, not an editor. |
| workspace_name | No | Name of the workspace the form was created in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly=false, destructive=false, openWorld=true, idempotent=false), but the description adds substantial behavior they cannot: authenticated sessions land the form in the user's workspace, anonymous sessions produce drafts with a private preview link where answers are not saved, and some results carry a one-time claim URL that must be relayed. That is exactly the kind of side-effect and auth context an agent needs before writing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded correctly: purpose, then return/claim behavior, then creation guidance, then the node reference, then a worked example. The node-type catalog is long but mostly load-bearing given the opaque config schema; it is organized as scannable bullets rather than prose. Slightly oversized, since it both defers craft guidance to clipform_get_guide and inlines a full config reference.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter, 8-node-type creation tool with an opaque config schema, the description supplies the node shapes, defaults, and an end-to-end example. An output schema exists, so return values need not be explained, yet the viewer URL / form ID / claim URL details are still disclosed. Nothing an agent needs to construct a valid call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the `config` property is an opaque object (additionalProperties: {}), meaning the description carries the entire burden for config semantics. It enumerates every node type with its config keys, allowed values, and defaults, which the schema does not provide at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a specific verb and resource — 'Create a new Clipform (interactive video-style form)' — and the parenthetical disambiguates it from generic form tools. An agent can separate this from siblings like clipform_update_form, clipform_import_form, and clipform_add_node purely from the verb and the node-catalog framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a conditional branch for the empty-prompt case ('If the user hasn't said what to build yet, offer to build their first form') and points to clipform_get_guide for craft guidance and clipform_whoami for workspace IDs. However, it never explicitly says when to prefer this over clipform_import_form or when to fall back to clipform_add_node on an existing form, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_delete_formDelete ClipformADestructiveIdempotentInspect
Move a form and all its nodes to the trash. It stops accepting responses immediately and can be restored later. Requires user confirmation before it runs. Needs a signed-in Clipform account (an anonymous session is asked to sign in).
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true ONLY after the user has explicitly confirmed this destructive action. Leave unset otherwise - hosts that support confirmation dialogs will prompt the user automatically. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID to delete (returned by clipform_create_form, not the short share_id from the URL) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds materially new behavior: this is a soft delete to trash that can be restored, responses stop being accepted immediately, user confirmation is required, and an authenticated session is mandatory. These are exactly the traits an agent needs before invoking a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences with zero waste; the action and its reversibility are front-loaded, followed by the confirmation and auth requirements. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations, full schema description coverage, and no output schema to explain, the description covers everything needed: what happens, reversibility, confirmation flow, and authentication gating. Nothing an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains confirm, context, and form_id in detail, including that form_id is the UUID rather than the share_id. The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (move a form and all its nodes to the trash), naming the scope that distinguishes it from clipform_delete_node, which targets a single node. The agent can tell the two siblings apart without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context: requires explicit user confirmation, needs a signed-in account, and an anonymous session is redirected to sign-in. It does not explicitly name the alternative for deleting a single node, but the prerequisites and conditions for use are well specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_delete_nodeDelete NodeADestructiveIdempotentInspect
Delete a node from a form. The logic chain is automatically re-linked (the previous node will point to the next one). Cannot delete the start node or the last end screen. Requires user confirmation before it runs.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true ONLY after the user has explicitly confirmed this destructive action. Leave unset otherwise - hosts that support confirmation dialogs will prompt the user automatically. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| node_id | Yes | The node ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: explains the automatic re-linking side effect (previous node points to the next), states which nodes are ineligible, and flags the user-confirmation requirement. Annotations already say destructive/idempotent, but the description adds the specific mutation semantics that matter for a delete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each load-bearing and front-loaded: action first, then consequence, then constraints and prerequisite. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive single-resource tool with no output schema, the description covers the mutation effect, the guardrails, and the confirmation flow — everything an agent needs to decide and call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each parameter (confirm, context, form_id, node_id) is documented in the schema itself. The description's 'Requires user confirmation' sentence lightly reinforces the confirm parameter but adds no syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Delete a node from a form') and immediately adds the behavioral consequence (re-linking), which distinguishes it from clipform_delete_node_media and clipform_delete_form without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-not conditions ('Cannot delete the start node or the last end screen') and a confirmation prerequisite, which is strong context. It stops short of naming an alternative sibling or the workflow for restructuring before deletion, so it is not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_delete_node_mediaDelete Node MediaADestructiveIdempotentInspect
Remove media from a node. Deletes the media record and the stored media asset (including any copy held by a third-party video provider). Requires user confirmation before it runs.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set to true ONLY after the user has explicitly confirmed this destructive action. Leave unset otherwise - hosts that support confirmation dialogs will prompt the user automatically. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| node_id | Yes | The node ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds real value beyond that by specifying what is destroyed (media record, stored asset, and third-party provider copies) and by stating the confirmation requirement. It stops short of describing irreversibility, failure modes, or downstream effects on the node.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and its destructive scope, followed by the confirmation prerequisite. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with rich annotations and a fully documented schema but no output schema, the description covers what is deleted and the confirmation gate. It omits what the caller should expect afterward (return value, node state) and whether the deletion can be undone, which would be the final useful additions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including detailed guidance on the confirm flag and form_id (UUID vs share_id), so the schema carries the parameter burden. The description adds no parameter-level detail beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove/Deletes') and resource ('media from a node') and clarifies the exact scope of deletion — the media record plus the stored asset. An agent can distinguish this from clipform_get_node_media, clipform_attach_node_media, and clipform_delete_node 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives one prerequisite ('Requires user confirmation before it runs'), which is genuinely useful context. However, it names no alternatives or when-not-to-use conditions, and never distinguishes itself from sibling media tools like attach_node_media or delete_node explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_fetch_boundaryFetch Geographic BoundaryARead-onlyIdempotentInspect
Fetch a GeoJSON boundary polygon for a country, city, or region. Returns simplified GeoJSON ready to use as the 'boundary' prop in the Map composition.
mainlandOnly excludes small islands and overseas territories (e.g. Corsica for France, Hawaii for USA).
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of place to search for | country |
| query | Yes | Place name (e.g. 'France', 'Paris', 'Tokyo', 'Brazil') | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| maxPoints | No | Maximum points per polygon ring for simplification (default 500, lower = smaller payload) | |
| mainlandOnly | No | Keep only the largest landmass, excluding small islands and overseas territories |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | Resolved place name |
| geojson | Yes | The Feature GeoJSON as a JSON string - use as the boundary prop in the Map composition |
| size_kb | Yes | Approximate size of the returned GeoJSON in KB |
| geometry_type | Yes | |
| mainland_only | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, open-world, idempotent, and non-destructive behavior. The description adds valuable behavioral context by explaining that the output is simplified GeoJSON and detailing how mainlandOnly affects the result with concrete examples (Corsica, Hawaii). It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: the first sentence communicates the core function and output usage, and the second clarifies a key parameter. No filler words; every sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. It covers the tool's purpose, output format, and the key parameter behavior. Minor gap: the description lists 'country, city, or region' but omits 'state' from the schema enum, though the schema itself clarifies this. Overall adequate for an agent to select and call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning for mainlandOnly by giving examples of excluded islands, which goes beyond the schema's generic 'Keep only the largest landmass' phrasing. It also implies the effect of simplification in the first sentence, supplementing maxPoints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('GeoJSON boundary polygon'), and immediately states the output's purpose ('ready to use as the boundary prop in the Map composition'). It clearly distinguishes the tool from rendering, media, and form-management siblings by focusing on geographic boundary retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when a GeoJSON boundary is needed for a Map composition. It does not explicitly name alternatives or exclusions, but the purpose is specific enough that no other sibling tool competes for this function. This is clear context without explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_generate_ttsGenerate Text-to-SpeechAInspect
Generate narration audio from text with word-level captions. Use this for quiz question narration, survey introductions, form instructions, or any node that benefits from a human voice. Proactively suggest narration for quizzes and content-rich forms - it significantly improves engagement.
Available voices: ryan (British male, clear), sonia (British female, warm), andrew (American male, smooth), ava (American female, vibrant), guy (American male, deep). Pick ONE voice that fits the topic - e.g. a London quiz gets ryan or sonia, a US sports quiz gets andrew or guy - and reuse that SAME voice for every item and every call across the whole form. Never mix voices within one form unless the user explicitly asks for multiple voices.
Use the tone parameter to direct HOW the voice speaks. Always set a tone that matches the form's mood - e.g. quizzes: "Energetic and playful, like a quiz show host teasing the audience", surveys: "Professional but warm, encouraging honest answers", personality quizzes: "Curious and reflective". This dramatically improves the narration quality.
Pass one item or many (max 10) - multiple items run in parallel. Returns audio_url and caption_ref per item - pass caption_ref downstream to clipform_render_composition / clipform_render_video_template / clipform_upload_media_asset to attach this run's word-level captions instead of hand-copying the captions array.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | One or more TTS items to generate | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | No | The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it. | |
| workspace_id | No | Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | One result per item, in order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutating/non-destructive/non-idempotent. The description adds real context beyond that: batching cap of 10, parallel execution, per-item return of audio_url and caption_ref, and where results land. It stops short of noting that repeat calls produce duplicate assets (idempotency consequence), which would matter for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded and paragraphs are organized by concern (usage, voice, tone, batching). It is longer than strictly needed, repeating voice descriptions that already appear verbatim in the schema enum, but no sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, yet the description still tells the agent what comes back (audio_url, caption_ref) and how to consume it downstream, plus the voice/tone selection policy. Complete for an agent to call this correctly on the first try.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds strategy beyond the schema: pick one voice for the whole form and reuse it, always set a tone matching the mood, and pass one or many items. That is guidance the schema text alone only partially conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+output: 'Generate narration audio from text with word-level captions.' It is unambiguous against siblings (no other tool does TTS) and the scope of use is stated immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use cases (quiz narration, survey intros, form instructions), proactive-suggestion guidance, and named downstream alternatives (clipform_render_composition / clipform_render_video_template / clipform_upload_media_asset) for attaching captions. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_formGet ClipformBRead-onlyIdempotentInspect
Retrieve a form's details including all nodes in sequential order and their routing. Returns title, settings, and every node with its options, config, media status, and next node (from clipform_set_logic).
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| urls | No | Dashboard/viewer deeplinks for this form. An anonymous caller gets only 'viewer'. |
| nodes | Yes | Nodes in sequential order - IDs for update_node / attach_node_media |
| title | Yes | Form title |
| form_id | Yes | Form UUID |
| is_live | Yes | Whether the form is published |
| has_unpublished_changes | Yes | Live form has edits not yet republished |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered. The description adds some value by naming the returned fields (title, settings, node options/config/media status/next node) and attributing the routing to clipform_set_logic, but it discloses no auth, rate-limit, or failure behavior beyond what annotations and the output schema provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary purpose and then the return contents. Every clause carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With rich annotations and a dedicated output schema, the definition only needs to orient the agent, which it does. The return-value description is somewhat redundant against the output schema, but the purpose and scope are complete enough to call the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both form_id and context are already documented (including the useful note that form_id is not the short share_id). The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Retrieve) and resource (a form's details), and scopes the content precisely: all nodes in sequential order plus their routing. It is clearly a single-form read tool, distinguishable from clipform_list_forms and clipform_get_workflow, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus alternatives such as clipform_get_workflow or clipform_list_forms, nor any stated prerequisites. The usage context is only weakly implied by the content it returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_guideGet Craft GuideARead-onlyIdempotentInspect
Retrieve craft knowledge for building a specific form type. Returns question psychology, difficulty curves, narration style, scoring setup, and writing principles as markdown. Does NOT return a step-by-step build workflow - use clipform_get_workflow for that.
Available types: quiz, survey, interview, funnel, testimonial, application, booking, intake, lead-capture. Aliases also accepted: trivia → quiz, test → quiz, exam → quiz, feedback → survey, poll → survey, nps → survey, questionnaire → survey, case-study → interview, callout → interview, lead-gen → funnel, qualification → funnel, lead-magnet → funnel, story → testimonial, review → testimonial, job-application → application, admission → application, enrollment → application, grant → application, registration → booking, signup → booking, event → booking, rsvp → booking, workshop → booking, client-intake → intake, onboarding → intake, enquiry → intake, inquiry → intake, new-client → intake, lead → lead-capture, lead-form → lead-capture, enquiry-form → lead-capture, waitlist → lead-capture, get-a-quote → lead-capture. Quiz variants (optional): personality, comprehension, composition - appends variant-specific addendum to the base quiz guide.
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Form type to get the craft guide for (accepts aliases like 'feedback' → survey) | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| variant | No | Quiz sub-variant. Only used when type is 'quiz'. Omit for a standard scored quiz. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is covered. The description adds valuable behavioral context by specifying the return format as markdown, detailing the information payload, and clarifying the exclusion of workflow content. This goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentences are front-loaded with the core purpose and the crucial differentiation from clipform_get_workflow. The alias list is long but justified because alias resolution is essential for correct invocation. Slight redundancy exists in listing types twice, but overall the content is dense and purposeful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, idempotent knowledge-retrieval tool with no output schema, the description is complete: it explains what the result contains, its format, the accepted inputs, aliases, variants, and the key sibling exclusion. An agent has everything needed to select and correctly call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description significantly enriches parameter understanding: it expands the 'type' parameter with the full list of supported types, an extensive alias map, and further clarifies the optional 'variant' parameter with its valid values and purpose. This is far more informative than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: 'Retrieve craft knowledge for building a specific form type' and enumerates the concrete knowledge categories returned. Explicitly distinguishes itself from clipform_get_workflow, so an agent can differentiate it from the most closely related sibling without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Directly states what the tool does not do and names the correct alternative: 'Does NOT return a step-by-step build workflow - use clipform_get_workflow for that.' It also provides the complete set of accepted types, aliases, and optional variant guidance, making the selection criteria explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_node_mediaGet Node MediaARead-onlyIdempotentInspect
Get the media attached to a node, including processing status. Useful for checking if a video upload has finished processing.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| node_id | Yes | The node ID |
Output Schema
| Name | Required | Description |
|---|---|---|
| media | Yes | Attached media (null if the node has none) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the response includes processing status, a genuine behavioral detail, but says nothing about what statuses exist or how pending vs. failed media appear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, purpose front-loaded, zero filler. Everything stated earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A read-only, output-schema-backed tool with fully documented parameters needs little more; the description supplies purpose and one use case. It could be slightly more complete by naming whether media can be multiple items or the status vocabulary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the parameter descriptions are rich (e.g., form_id warns to use the UUID rather than the share_id). The description adds no parameter-level meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Get) and resource (media attached to a node) plus the scope (processing status), which an agent can distinguish from clipform_search_media or clipform_attach_node_media. It never explicitly names a sibling, so differentiation is inferred from the node-scoped wording rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers one concrete scenario (checking whether a video upload finished processing), which is implied usage guidance. There is no when-not-to-use guidance and no routing to clipform_check_render or clipform_search_media for related checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_responsesList form responsesARead-onlyIdempotentInspect
List a Clipform form's individual responses (submissions) with time filtering - complements clipform_get_results (aggregates). Answers questions like 'what came in during the last 24 hours', 'what's the longest answer', 'what did people say'. Text answers plus a non-PII payment summary (amount and status); contact details, file uploads, and audio/video answers are redacted to placeholders and the customer's payment details stay in the dashboard (the responses URL from clipform_get_form). Responses are sorted newest first unless sort: 'oldest'. Needs a signed-in Clipform account (an anonymous session is asked to sign in).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Order by submission time. Default: newest | |
| limit | No | Max responses to return (default 20, max 50) | |
| query | No | Only responses whose text answers contain this string (case-insensitive) | |
| since | No | Only responses submitted at or after this ISO 8601 time (e.g. '2026-08-29T00:00:00Z') | |
| until | No | Only responses submitted at or before this ISO 8601 time | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | Form UUID (from clipform_list_forms / clipform_create_form) |
Output Schema
| Name | Required | Description |
|---|---|---|
| returned | Yes | Responses in this result |
| responses | Yes | Matching responses, filtered/sorted/capped per the inputs |
| total_matching | Yes | Responses matching the filters (before the limit cap) |
| locked_over_plan_limit | Yes | Matching responses hidden by the plan's response limit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantial undisclosed behavior: contact details, file uploads and audio/video answers are redacted to placeholders, a non-PII payment summary is returned, full payment details remain in the dashboard via the URL from clipform_get_form, and a signed-in Clipform account is required. That is exactly the kind of auth, privacy and result-shaping context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping distinction from clipform_get_results is front-loaded and each sentence carries information (redaction, auth, ordering). It is a dense single paragraph with mild redundancy in the illustrative questions ('what's the longest answer', 'what did people say'), but nothing is wasted enough to warrant cutting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter, read-only list tool with an output schema, the description covers everything the agent still needs: what is filtered, what is redacted, what the ordering default is, and the authentication prerequisite. Return-value shape is correctly left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (sort, limit, query, since, until, form_id, context) is already documented in the schema. The description restates the sort default ('newest first unless sort: oldest') but adds no syntax, format or constraint detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a Clipform form's individual responses (submissions)') and immediately distinguishes itself from the closest sibling by noting it 'complements clipform_get_results (aggregates)'. An agent can tell which of the two listing tools to pick without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly contrasts this tool with clipform_get_results (aggregates), so the alternative is named and the split is implied, and it supplies concrete scenario questions ('what came in during the last 24 hours', 'what's the longest answer'). It stops short of an explicit when-not rule (e.g. 'do not use this for totals or charts'), so it is clear context rather than a full routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_resultsGet Clipform ResultsARead-onlyIdempotentInspect
View response counts, choice/action answer breakdowns, and recent open-text answers for a form. Contact, file, draw, camera, and payment answers are counts only - use the dashboard for per-response detail. Needs a signed-in Clipform account (an anonymous session is asked to sign in).
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| nodes | Yes | Nodes in form order. Contact/file/draw/camera/payment nodes carry only total_responses/total_views - no per-response detail. |
| results_url | No | Dashboard Responses tab for this form. Not present for an anonymous caller. |
| total_responses | Yes | Total unique respondents to the form |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, non-destructive and closed-world behavior, so the bar is lowered. The description still adds real value beyond those: it discloses the answer-type aggregation constraint and the authentication requirement (anonymous sessions are told to sign in), which the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what the tool returns, then the aggregation caveat, then the auth prerequisite. No filler, though the sentence order slightly buries the auth requirement at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return format need not be described, and annotations cover the safety profile. The description covers scope, limitations, and auth, leaving only the sibling differentiation from clipform_get_responses unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented in-schema (form_id as UUID vs. share_id, context as goal statement). The description adds no parameter guidance, so the baseline 3 applies since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('View response counts, choice/action answer breakdowns, and recent open-text answers for a form'), naming the exact data returned. However, it does not distinguish itself from the sibling clipform_get_responses, which appears closely related, so an agent cannot tell the two apart from the description alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear exclusions and context: answers of type contact/file/draw/camera/payment are counts only and per-response detail requires the dashboard, and a signed-in account is required. It stops short of routing the agent between this tool and the near-identical clipform_get_responses sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_get_workflowGet Build WorkflowARead-onlyIdempotentInspect
Retrieve a step-by-step build workflow for creating a specific form type. Returns the exact tool sequence, form settings, node configuration, scoring setup, and end screen config as a build recipe.
Does NOT return craft knowledge (question psychology, difficulty curves, narration style) - use clipform_get_guide for that.
Available types: quiz, survey, interview, testimonial, application, booking, intake, lead-capture. Aliases also accepted: trivia → quiz, test → quiz, exam → quiz, feedback → survey, poll → survey, nps → survey, questionnaire → survey, case-study → interview, callout → interview, lead-gen → funnel, qualification → funnel, lead-magnet → funnel, story → testimonial, review → testimonial, job-application → application, admission → application, enrollment → application, grant → application, registration → booking, signup → booking, event → booking, rsvp → booking, workshop → booking, client-intake → intake, onboarding → intake, enquiry → intake, inquiry → intake, new-client → intake, lead → lead-capture, lead-form → lead-capture, enquiry-form → lead-capture, waitlist → lead-capture, get-a-quote → lead-capture. Quiz variants (optional): personality, comprehension, composition - returns the variant-specific workflow instead of the base quiz workflow.
Optional args by type:
quiz: topic, question_count (8)
quiz (variant: personality): topic, categories, question_count (8)
quiz (variant: comprehension): question_count (8), audience
interview: purpose, response_format (all), needs_consent (true)
survey: topic, anonymous (true)
funnel: outcomes, criteria, needs_contact (true)
testimonial: use_case
application: role
booking: event_name, event_type
intake: use_case, response_format (all)
lead-capture: use_case
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | What the application is for (application) | |
| type | Yes | Form type to get the build workflow for (accepts aliases like 'feedback' → survey) | |
| topic | No | Topic or theme (quiz, survey) | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| purpose | No | What you're collecting (interview) | |
| variant | No | Quiz sub-variant. Only used when type is 'quiz'. Omit for a standard scored quiz. | |
| audience | No | Target audience (quiz variant: comprehension) | |
| criteria | No | Routing criteria (funnel) | |
| outcomes | No | Segments or recommendations (funnel) | |
| use_case | No | What stories to collect (testimonial) | |
| anonymous | No | Anonymous survey (survey) | |
| categories | No | Comma-separated outcome categories (quiz variant: personality) | |
| event_name | No | Event or offering name (booking) | |
| event_type | No | Type of event (booking) | |
| needs_consent | No | Include consent statement (interview) | |
| needs_contact | No | Include contact capture (funnel) | |
| question_count | No | Number of questions, default 8 (quiz types) | |
| response_format | No | How respondents reply (interview) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe, read-only, idempotent, closed-world retrieval, so the safety profile is covered. The description adds useful substance beyond that by spelling out what the recipe contains (tool sequence, settings, scoring, end screen), which matters since there is no output schema. It stops short of noting anything about response size or downstream application of the recipe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and the guide exclusion before the long tail of type/alias detail, so the critical routing information comes first. The exhaustive alias list is bulky but each mapping prevents a failed call, so it earns most of its space; the structure could still be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 18-parameter, no-output-schema tool this is complete: the agent knows the valid types, variants, per-type optional args and defaults, and what the response will contain. The required 'context' parameter is documented in the schema, and nothing needed to invoke correctly is missing from the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuinely adds meaning: it maps which optional args apply to which type, states the question_count default of 8, and gives the full alias table (trivia→quiz, nps→survey, etc.) that the schema only gestures at. The tiering of args by type is information the flat schema cannot convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Retrieve a step-by-step build workflow for creating a specific form type') and enumerates the returned artifacts (tool sequence, settings, node config, scoring, end screen). It explicitly differentiates itself from clipform_get_guide, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit exclusion: 'Does NOT return craft knowledge… use clipform_get_guide for that,' naming the alternative and the condition selecting it. It also enumerates the valid type values and variant options, preempting the main failure mode of calling with an unknown type.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_import_formImport FormAInspect
Convert a public Google Form, Typeform, or Tally form into a new Clipform. Supported URLs: Google Forms (docs.google.com or forms.gle - must be shared as "Anyone with the link"), Typeform (form.typeform.com/to/...), and Tally (tally.so - must be public). The source form must be publicly accessible; a private form's questions cannot be read. The new Clipform is created as a DRAFT - review it, then republish with clipform_update_form (is_live: true) once it's ready. Some question types don't map cleanly to a Clipform node and are skipped rather than guessed at; the result always reports exactly what was imported vs skipped, and why.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Public URL of the Google Form, Typeform, or Tally form to import | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| workspace_id | No | Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| form_id | Yes | New form's UUID - pass to follow-up tools. Null when no importable questions were found (nothing was created). |
| viewer_url | Yes | The address this form WILL be live at once published (clipform_update_form with is_live: true) - it is a draft and is NOT viewable by anyone yet; opening it now shows a maintenance screen, not the form. Null when no importable questions were found. |
| import_summary | Yes | |
| workspace_name | No | Name of the workspace the form was created in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=false, and the description adds genuinely non-obvious behavior: the new form lands as a DRAFT, unmappable question types are skipped rather than guessed, and the result reports imported vs skipped with reasons. It does not address idempotency (annotation says non-idempotent) or auth/permission needs, so it is strong but not complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core conversion, then prerequisites, then the draft/republish workflow and skip-reporting behavior. Every sentence carries information, though it is on the longer side and could be trimmed slightly without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the mutation profile and an output schema existing, the description need only cover purpose, prerequisites, and the workflow step — all present, including the draft state and the skip-reporting contract. Nothing an agent needs to invoke this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 earns above that by enumerating accepted URL shapes (docs.google.com, forms.gle, form.typeform.com/to/..., tally.so) that the generic 'Public URL' schema text does not convey. The context and workspace_id parameters get no added meaning in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: converting a public Google Form, Typeform, or Tally form into a new Clipform. This clearly distinguishes it from siblings like clipform_create_form and clipform_update_form without needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the precondition (source form must be public, with per-provider sharing requirements), and routes the agent explicitly: the result is a draft, and republishing happens via clipform_update_form (is_live: true). Both when-to-use and the follow-up step are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_list_assetsList AssetsBRead-onlyIdempotentInspect
List available creative assets (sound effects, animations, fonts) for video compositions.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Asset type to list (default: all) | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| sfx | Yes | |
| fonts | Yes | |
| animations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the asset category taxonomy, which is mild useful context, but says nothing about result volume, pagination, or whether the list is scoped to the user's workspace.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; verb and resource come first. It is appropriately sized, though the brevity is partly what leaves the usage and scoping questions unanswered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the annotations cover the safety profile. What remains missing is routing context against the many sibling list/search tools and any hint about result scope — enough to call it adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two parameters, so the schema already documents both the type enum and the context field. The description's enumeration of asset types loosely parallels the enum values but adds no filtering semantics or format detail beyond it — baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) plus resource (creative assets) and enumerates the categories it covers (sound effects, animations, fonts), which maps directly to the enum. It does not, however, distinguish itself from nearby siblings such as clipform_search_music, clipform_search_media, or clipform_list_video_templates, leaving the agent to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance and no mention of alternatives. With four list_* siblings and three search_* siblings in the toolset, the agent gets no signal about when listing assets is preferable to searching music or media, or how this relates to adding assets to a composition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_list_compositionsList CompositionsARead-onlyIdempotentInspect
Browse available video compositions and their expected props schemas. Call this before using clipform_render_composition to discover visual styles and their input props. For an image or photo montage, reach for a video template (clipform_list_video_templates + clipform_render_video_template) instead of a composition.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| compositions | Yes | Available compositions - pass an id to render_composition |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the fact that results include props schemas, but that is largely duplicative of the output schema, and it says nothing about result volume, pagination, or freshness of the catalog. Adequate but thin beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the workflow ordering, then the exclusion. Every sentence earns its place with zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it correctly covers purpose, ordering, and the sibling alternative. The only minor gap is the absence of any hint about catalog size or how to interpret the props schemas, but an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and schema description coverage is 100%, so the schema fully documents 'context' including the instruction not to name the tool being called. The description adds no additional meaning for that parameter, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Browse available video compositions') plus the payload returned (expected props schemas), and explicitly distinguishes itself from the sibling clipform_list_video_templates. An agent can tell this apart from the template-listing tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit ordering guidance ('Call this before using clipform_render_composition') and an explicit when-not with a named alternative route (video templates for image/photo montages, naming both list_video_templates and render_video_template). Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_list_formsList ClipformsARead-onlyIdempotentInspect
List forms in your workspace with optional filtering. Returns paginated results (cursor-based). next_cursor is included when more results exist. To find or open a form by name, pass search with part of its title instead of paging through results. Needs a signed-in Clipform account (an anonymous session is asked to sign in).
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag name(s), comma-separated. AND logic: only forms with ALL tags are returned. | |
| sort | No | Sort field (default: created_at) | |
| limit | No | Number of forms to return (default 25, max 100) | |
| order | No | Sort order (default: desc, newest first) | |
| cursor | No | Pagination cursor from previous response's next_cursor | |
| search | No | Filter to forms whose title contains this text (case-insensitive substring). Use this to resolve a form by name in one call instead of paginating. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| published | No | Filter by publish status | |
| workspace_id | No | Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| forms | Yes | Matching forms (empty if none) |
| next_cursor | Yes | Pass as cursor to fetch the next page, or null when no more |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only/idempotent/non-destructive, and the description adds genuinely new behavior: cursor-based pagination, next_cursor presence, and an authentication prerequisite. It does not cover rate limits or result size, but the added context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences with the core action front-loaded, followed by pagination and the search shortcut. Slight overlap between the pagination sentence and the schema's cursor description, but no real waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't explain return fields, and it sensibly limits itself to pagination mechanics and auth requirements. Coverage is adequate for a filtered-list tool with 9 documented parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with rich per-parameter descriptions (tags AND logic, defaults, cursor source, search semantics), so the schema carries the parameter burden. The description echoes the search/cursor behavior rather than adding syntax or constraints beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List forms in your workspace') plus scope ('optional filtering'), which is clearly distinct from the sibling clipform_get_form. It does not, however, explicitly name that sibling or otherwise route the agent between list and single-retrieve.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives real usage direction: use search with part of a title instead of paging, and notes the signed-in-account requirement (anonymous sessions are asked to sign in). It stops short of stating when to prefer clipform_get_form over this list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_list_video_templatesList Video TemplatesARead-onlyIdempotentInspect
Browse available video templates - curated Scene arrangements (bed + overlay + sane defaults) that render through the Scene composition from a small controls object. Call this before clipform_render_video_template to see template names and their exposed controls. For a fully custom layer stack, assemble Scene layers directly via clipform_render_composition instead.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| templates | Yes | Available video templates - pass a name + controls to clipform_render_video_template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: what a template conceptually is, that it renders from a small controls object, and how it relates to the render tools. It does not discuss return shape, but an output schema exists so that burden is not on the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the first defines the resource, the second gives the workflow ordering, the third names the alternative. No filler, and the routing information is front-loaded enough to be actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full annotation coverage, a complete output schema, and a fully described single parameter, the description supplies everything else an agent needs: what the tool returns conceptually, when to call it, and which sibling to use instead. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and there is a single 'context' parameter whose description is already self-explanatory. The tool description adds no additional meaning about that parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (browse/list video templates) and elaborates what a template actually is: a curated Scene arrangement of bed + overlay with sane defaults rendered through the Scene composition. This lets an agent distinguish it from clipform_render_video_template and clipform_render_composition without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit call ordering ('Call this before clipform_render_video_template') and names the alternative path for a different need ('for a fully custom layer stack, assemble Scene layers directly via clipform_render_composition instead'). Both the when and the when-not are spelled out with the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_log_generationLog Form Generation AuditAInspect
Internal audit step run by a form-generation workflow. Records a completed generation's content provenance (sources, image attributions) for the flow that just built the form. Not a user action - only call it as the final step of a generation workflow you are running, never in response to a plain create or edit request.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| details | Yes | Content sources and attributions | |
| form_id | Yes | The form ID (UUID format, not the share ID) | |
| summary | Yes | Short description of what was generated |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, idempotentHint=false, destructiveHint=false and openWorldHint=false, so safety profile is covered. The description adds genuinely useful behavioral context beyond that: the tool is an internal audit step, not a user-facing action, and it must be the terminal step of the workflow. It does not discuss what happens on repeated calls despite idempotentHint=false, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with the purpose front-loaded and the usage constraint immediately following. No filler, no restating of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a non-read-only audit logger with full schema coverage, clear annotations, and no output schema, the description supplies everything an agent needs: what it records, why it exists, and the precise workflow position it must occupy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including nested images/sources objects, so the schema does the heavy lifting and the baseline is 3. The description names the kind of content captured (sources, image attributions), which lightly maps to the 'details' parameter but adds no syntax or format guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource: it records content provenance (sources, image attributions) for a form that was just generated. It also positions the tool within the workflow ('internal audit step run by a form-generation workflow'), which separates it from siblings like clipform_create_form and clipform_update_form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use ('only call it as the final step of a generation workflow you are running') and explicit when-not ('never in response to a plain create or edit request'). This is exactly the routing an agent needs to avoid misfiring this tool on ordinary form operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_render_compositionRender CompositionADestructiveInspect
Render a specialised video composition to MP4 or PNG - custom animated visuals that a video template can't provide, such as geography animations or designed motion graphics. Available composition names and their required input props schemas come from clipform_list_compositions.
Output formats: mp4 (H.264, best for social media) or png (single frame). Returns a public URL when complete.
For multi-render builds (e.g. one clip per quiz question), pass everything in ONE call via items (max 10): all renders fire in parallel and you get one job ID each - then collect the URLs in a single clipform_check_render call with job_ids. Single render: pass compositionId/inputProps at the top level (wait: true blocks and returns the URL; wait: false returns a job ID).
Choosing a render tool: for a recognisable form/quiz beat (guess-the-city, this-or-that, mystery reveal, multiple choice, photo montage...) reach for a video template first (clipform_list_video_templates + clipform_render_video_template) - it is a one-call recipe. For a photo/clip montage, narrated or silent, use the slideshow template (pass audio_url to sync it to a voice track). Use clipform_render_composition only when neither fits and you need a custom layer stack. A render for a form node is not done until it is attached to that node. Pass node_id (and form_id) so the completed render attaches itself automatically - do not poll clipform_check_render to completion or manually chain clipform_upload_media_asset + clipform_attach_node_media; fire the render and move on. In batch mode, set node_id per item (see items) and form_id once at the top level.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Single render only: true (default) blocks until the render is ready and returns its URL; false returns a job ID for clipform_check_render. Batch items always run fire-and-poll. | |
| items | No | Batch mode: multiple renders in one call. All fire in parallel; returns one job ID per item - collect with clipform_check_render (job_ids). Use this whenever rendering more than one clip. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | No | The form UUID - required when node_id is set (single render) or any item sets node_id (batch). | |
| node_id | No | Single render only: form node to attach this render to automatically once it completes. Requires form_id. For batch mode, set node_id per item instead. | |
| captions | No | Single render only: word-level captions from clipform_generate_tts, carried onto the attached media asset. Only used when node_id is set. For batch mode, set captions per item instead. | |
| inputProps | No | Single render: props object matching the composition's schema from clipform_list_compositions. Validated STRICTLY - unknown or missing props fail with the schema in the error, nothing renders silently with defaults. For map compositions (Map), wide shots (camera.zoom < 9) may round lat/lng to 1 decimal place to improve cache hit rates; close shots and pin drops should keep full precision — the pin lands exactly on `target`. | |
| caption_ref | No | Single render only: caption_ref from clipform_generate_tts - an opaque handle that attaches that TTS run's word-level captions to the media asset, resolved server-side. Preferred over captions. Only used when node_id is set. For batch mode, set caption_ref per item instead. | |
| outputFormat | No | Single render: output format (default: mp4) | mp4 |
| compositionId | No | Single render: the composition ID. Call clipform_list_compositions to see available options (e.g. 'Slideshow', 'Map', 'Grid'). Use items instead for multiple renders. |
Output Schema
| Name | Required | Description |
|---|---|---|
| jobs | Yes | One entry per render (single or batch) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructive/openWorld/non-idempotent, and the description adds real behavioral context beyond them: returns a public URL, batch renders fire in parallel with one job ID each, wait:true blocks while wait:false returns a job ID, and strict inputProps validation fails loudly rather than silently defaulting. It does not explain why the operation is flagged destructive (e.g. overwriting existing node media), which is the one remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight paragraphs, front-loaded with purpose then formats then batching then tool selection. Every sentence carries routing or behavioral information, though the mode-placement rules are restated across the description and the schema, adding mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with nested objects and a full output schema, the description covers the decision path (which render tool), the batching model, the attachment workflow, and the caption pipeline. An agent has everything needed to call it correctly without extra exploration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuine semantics: the single-vs-batch mode split, the 10-item cap, the top-level vs per-item placement of node_id/captions/caption_ref, and the preference of caption_ref over captions. That goes beyond restating schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Render a specialised video composition to MP4 or PNG') and immediately scopes it against the sibling render path by naming what it is for: custom animated visuals a video template can't provide. An agent can distinguish it from clipform_render_video_template without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: reach for video templates for recognisable form/quiz beats, the slideshow template for montages, and this tool 'only when neither fits.' It also specifies when to use single vs batch mode, that a render must be attached to its node, and that polling/chaining is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_render_video_templateRender Video TemplateADestructiveInspect
Render a curated video template (a pre-arranged Scene: bed + overlay + sane defaults) to MP4 or PNG from a small controls object, instead of hand-assembling Scene layers. Call clipform_list_video_templates first for available template names and their controls. Renders through the Scene composition under the hood.
Choosing a render tool: for a recognisable form/quiz beat (guess-the-city, this-or-that, mystery reveal, multiple choice, photo montage...) reach for a video template first (clipform_list_video_templates + clipform_render_video_template) - it is a one-call recipe. For a photo/clip montage, narrated or silent, use the slideshow template (pass audio_url to sync it to a voice track). Use clipform_render_composition only when neither fits and you need a custom layer stack. A render for a form node is not done until it is attached to that node. Pass node_id (and form_id) so the completed render attaches itself automatically - do not poll clipform_check_render to completion or manually chain clipform_upload_media_asset + clipform_attach_node_media; fire the render and move on.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | true (default) blocks until the render is ready and returns its URL; false returns a job ID for clipform_check_render. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | No | The form UUID (required when node_id is set). | |
| node_id | No | Form node to attach this render to automatically once it completes - skips the manual clipform_upload_media_asset + clipform_attach_node_media steps and republishes the form if it's currently live. Requires form_id. | |
| captions | No | Word-level captions from clipform_generate_tts - carried onto the attached media asset. Only used when node_id is set. | |
| controls | Yes | Template-specific controls (see clipform_list_video_templates for the exposed control surface). | |
| template | Yes | Video template name (see clipform_list_video_templates). | |
| caption_ref | No | caption_ref from clipform_generate_tts - an opaque handle that attaches that TTS run's word-level captions to the media asset, resolved server-side. Preferred over captions. Only used when node_id is set. Defaults to controls.audio_url when that is a clipform_generate_tts track (slideshow narration), so narrated montages keep their captions. | |
| outputFormat | No | Output format (default: mp4) | mp4 |
Output Schema
| Name | Required | Description |
|---|---|---|
| job_id | No | Present when status is 'rendering' - pass to clipform_check_render |
| status | Yes | |
| attached | No | True when node_id was provided and the render was attached to the node automatically (present once the attach outcome is known). |
| template | No | |
| public_url | No | Present when status is 'complete' - attach via upload_media_asset then attach_node_media (fit_media: true), unless node_id was set (auto-attached) |
| republished | No | True when the form was live and was republished to include this media. |
| attach_error | No | Present when node_id was provided but auto-attach failed - the render itself still succeeded. |
| output_format | No | |
| media_asset_id | No | The workspace media asset created from this render, when attached. |
| duration_seconds | No | Final video length in seconds - the narration's real length when audio_url drove it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnlyHint=false, destructiveHint=true, idempotentHint=false), and the description adds non-obvious behavior: renders run through the Scene composition, wait=true returns a URL while false returns a job ID, and attaching to a node republishes a live form. It doesn't explain why destructiveHint is set or what a render overwrites, leaving one behavioral gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then a clearly labeled 'Choosing a render tool' section. Efficient overall, though the workflow guidance is long and the attach/poll warning is stated in a slightly repetitive way.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, nested captions, and an output schema present, the description supplies exactly the missing context: template discovery, control surface, alternative routes, and the attachment/polling workflow. Nothing an agent needs to invoke it correctly appears absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema carries the baseline. The description genuinely adds meaning beyond it: node_id auto-attaches and republishes, caption_ref is preferred over captions and defaults to controls.audio_url for slideshow narration, and context should describe the user's goal rather than the tool call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Render a curated video template ... to MP4 or PNG') and immediately scopes it against hand-assembling Scene layers. It names the sibling tool it is not (clipform_render_composition) and the one to call first (clipform_list_video_templates), so the agent can discriminate without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit routing rules: 'reach for a video template first' for form/quiz beats, slideshow template for montage, clipform_render_composition only when neither fits. It also states the prerequisite (call list_video_templates first) and the postcondition (attaching via node_id instead of polling or chaining upload+attach).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_search_mediaSearch MediaARead-onlyIdempotentInspect
Search images or stock video clips. Pass one query or many (max 10) - multiple queries run in one call instead of separate tool calls. Use results to feed into clipform_render_video_template (slideshow) for narrated slideshow videos, or upload directly as still images via clipform_upload_media_asset then clipform_attach_node_media. All results are pre-cleared for commercial use. Results include a description (alt text where the provider has it) - use it to pick visually distinct images.
Example: { queries: [{ query: "saturn rings" }, { query: "mars surface", count: 3 }] } returns portrait images for both.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| queries | Yes | One or more search queries to run |
Output Schema
| Name | Required | Description |
|---|---|---|
| searches | Yes | Results grouped by query (items empty if a query found nothing or failed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/openWorld/idempotent/non-destructive, so the safety profile is covered. The description adds licensing context ('all results are pre-cleared for commercial use') and the presence of alt-text descriptions for picking visually distinct images, which annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then the batching rule, then downstream routing, then licensing. Mostly tight, though the trailing example partially duplicates schema information and lengthens the definition without adding much new meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation isn't required, yet the description still notes the alt-text field usefully. Combined with annotations and full schema coverage, an agent has enough to call this correctly; the only minor gap is no explicit pagination/limit guidance beyond per-query count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so query, kind, count, and orientation are all documented in the schema. The description adds an example showing the multi-query shape and a non-default count, but no semantics beyond what the schema already states. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Search) and resource (images or stock video clips), immediately distinguishing it from sibling search tools like clipform_search_music and clipform_search_news. The scope and output type are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent downstream: results feed clipform_render_video_template for slideshows, or go through clipform_upload_media_asset then clipform_attach_node_media for stills. It also states the batching rule (up to 10 queries in one call instead of separate calls), which is a genuine when-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_search_musicSearch MusicARead-onlyIdempotentInspect
Search for royalty-free music tracks and ambient sounds. Quiz forms especially benefit from background music - it keeps energy up between questions. Also consider it for multi-step surveys and longer forms. Pass the returned URL as the audio for the slideshow video template via clipform_render_video_template. Returns download URLs, duration, artist, and license info.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Genre/mood tags to filter by. Multiple tags are ANDed together (e.g. ['ambient', 'chill'] matches tracks tagged both). | |
| count | No | Max results (default: 5) | |
| query | Yes | What to search for (e.g. 'upbeat quiz background', 'calm ambient', 'playful pizzicato') | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| maxDuration | No | Maximum duration in seconds | |
| minDuration | No | Minimum duration in seconds | |
| instrumentalOnly | No | Only instrumental tracks (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| tracks | Yes | Matching tracks (empty if none); pass a url as the audio for the slideshow template |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, open-world, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: results are royalty-free and include license info, and the returned URL is meant to be fed into clipform_render_video_template. It doesn't cover rate limits or result ordering, but the added licensing/workflow context is meaningful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, purpose front-loaded, and the workflow instruction is placed before the return-value note. The 'keeps energy up between questions' clause is mildly chatty but does reinforce the usage guidance rather than being pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Purpose, usage context, and the downstream render_video_template integration are all covered, and annotations carry the safety profile. The only redundancy is restating return fields (download URLs, duration, artist, license) that the output schema already provides; otherwise an agent has what it needs to call this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all seven parameters including tag ANDing, count default, duration bounds, and instrumentalOnly default. The description adds no parameter-level detail beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: 'Search for royalty-free music tracks and ambient sounds.' That resource is specific enough to separate it from siblings like clipform_search_news and clipform_search_media on the surface, but the description never explicitly names an alternative, so the differentiation is left implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use context ('Quiz forms especially benefit...', 'Also consider it for multi-step surveys and longer forms') and a downstream workflow hook (pass the URL to clipform_render_video_template). There is no explicit when-not-to-use or named alternative, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_search_newsSearch Recent NewsARead-onlyIdempotentInspect
Search recent news articles from NewsAPI and The Guardian and return them as structured results.
Coverage: recent events, people, and topics (post-May-2025). Does NOT cover timeless topics (history, geography, science).
Returns: article title, source, author, date, URL, description, and image URL per result.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Max results per provider (default 5) | |
| query | Yes | News search query (e.g. 'Iran war 2026', 'Australian Open final', 'UK election') | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| query | Yes | |
| articles | Yes | Matching articles (empty if none) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and openWorld, so the safety profile is covered. The description adds behavior that annotations do not: which providers are queried, the temporal coverage window (post-May-2025), and the per-result field list. Return format is partly redundant with the output schema, but the sourcing and coverage-window facts are genuine additions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short, labeled blocks that are front-loaded with purpose, then coverage, then returns. Every sentence carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and annotations covering the safety/idempotency profile, the description only needs to cover sourcing and scope limits — and it does exactly that. There is no meaningful gap for an agent deciding whether and how to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters including the example queries and the unusual 'context' semantics. The description adds no parameter-level detail beyond that, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Search recent news articles') and names the two upstream providers (NewsAPI, The Guardian), which immediately distinguishes it from clipform_search_media and clipform_search_music. The scope note ('recent events... post-May-2025') further pins down what the tool returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit negative boundary: 'Does NOT cover timeless topics (history, geography, science).' That is real when-not guidance an agent can act on. It stops short of naming an alternative tool for those cases, so it is clear context without a routed fallback.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_set_logicSet Node LogicADestructiveIdempotentInspect
Set the next node for one or more nodes, wiring a linear route (A to B to C). Pass multiple nodes in one call instead of separate tool calls. Each node routes to exactly one target node. Branching by which option a respondent picks is not configured here; it is set up in the form's Build tab in the dashboard (the builder URL returned by clipform_get_form / clipform_create_form).
A call replaces that node's routing entirely - it does not merge with any prior target.
Example: nodes: [ { node_id: "q1-id", rules: [{ target_node_id: "q2-id" }] }, { node_id: "q2-id", rules: [{ target_node_id: "q3-id" }] } ]
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | One or more nodes to set logic on | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | One result per node, in order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is partly covered. The description adds genuinely useful beyond-schema context: 'A call replaces that node's routing entirely - it does not merge with any prior target,' which concretely explains the destructive, non-merging replacement semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first sentence, followed by batching rationale, exclusion, and an example. Well structured, though it runs a bit long; every element still carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description fully covers the routing semantics, the replacement behavior, the batching capability, and the branching limitation. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents node_id, target_node_id, rules, and form_id. The description earns extra credit by supplying a concrete two-node JSON example that clarifies the nested nodes/rules structure and the one-rule constraint (maxItems 1) in practice.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Set the next node for one or more nodes, wiring a linear route'), and explicitly distinguishes itself from branching logic, which it says is configured elsewhere. An agent can tell this apart from node-creation or update siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives positive guidance (batch multiple nodes into one call rather than separate tool calls) and a clear exclusion with a redirect (branching by respondent choice is not configured here; it lives in the form's Build tab). Both when-to-use and when-not are explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_update_formUpdate ClipformADestructiveIdempotentInspect
Update a form's title, publish status, settings, or tags. Only sends fields that are provided - omitted fields remain unchanged. AI-PROTECTED parameters have restrictions noted in their descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Replace all tags on this form. Pass the full desired set (e.g. ['quiz', 'trivia', 'slug:elephants']). Omit to leave tags unchanged. | |
| title | No | New form title | |
| author | No | AI-PROTECTED: Only set when the user explicitly provides an author name. Set null to clear. | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| is_live | No | Setting true publishes/republishes the snapshot respondents see. Forms are live from creation, but edits and media attached AFTER creation are not visible until you re-send true - republishing is the expected final step of a build, never skip it after attaching media. Setting false takes the form offline (keeps the last published snapshot) - AI-PROTECTED: only take a form offline when the user explicitly asks. | |
| logo_url | No | AI-PROTECTED: Only set when the user explicitly provides a logo URL. Set null to clear. | |
| brand_name | No | AI-PROTECTED: Custom brand name shown in footer. Only set when user explicitly provides. | |
| description | No | SEO description (meta description, og:description). Set null to clear. | |
| font_family | No | AI-PROTECTED: Only set when the user explicitly requests a specific font. | |
| total_steps | No | Override the total step count shown in the step counter. Set null to auto-calculate. | |
| primary_color | No | Primary/brand color as 6-digit hex (e.g. '#FF5500'). Used for buttons and accents. | |
| show_branding | No | Show Clipform branding. Set false to remove (Pro plan). | |
| background_color | No | Background color as 6-digit hex (e.g. '#1A1A2E'). | |
| show_step_counter | No | Show step counter (e.g. '1/5'). Recommended for quizzes. | |
| disable_back_navigation | No | Prevent respondents from going back. Recommended for quizzes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| form_id | Yes | Form UUID |
| updated_fields | Yes | Names of the fields that were changed by this call |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the safety profile is covered. The description adds genuine context beyond that: partial-update merge behavior and the existence of AI-PROTECTED parameters whose restrictions live in the schema. It does not warn about the tag-replacement overwrite, but the schema does.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler; the patch-semantics rule is front-loaded immediately after the purpose statement, which is exactly what an agent needs before filling the 16-parameter schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter mutation with an output schema and fully documented parameters, the description covers the essential non-schema facts (partial update, protected fields). A note on how republishing interacts with prior edits would round it out, but the schema already carries that detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries a detailed description (including AI-PROTECTED notes and publish semantics), so the baseline of 3 applies. The description adds only the high-level field categories, not syntax or meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Update') plus resource ('a form') and enumerates the field families affected (title, publish status, settings, tags). An agent can separate it from clipform_create_form, clipform_delete_form, and clipform_update_node, though it does not name those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The patch semantics ('only sends fields that are provided - omitted fields remain unchanged') implies how to call it, but there is no explicit when-to-use guidance or comparison against alternatives such as clipform_update_node or clipform_set_logic. Usage must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_update_nodeUpdate NodeADestructiveIdempotentInspect
Update one or more existing nodes' text, type, config, or options. Pass multiple updates in one call instead of separate tool calls. Requires node IDs (returned by clipform_create_form, clipform_add_node, or clipform_get_form). Does not change node positions in the flow. All type definitions and config schemas are derived from @vid-master/config (node-types).
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | Yes | The form UUID (returned by clipform_create_form, not the short share_id from the URL) | |
| updates | Yes | One or more node updates to apply |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | One result per requested update, in order |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds that node positions are untouched and where ID sources come from, but does not warn that passing 'options' replaces the entire set or that a type change discards the stored config, both of which are destruction-relevant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the capability and batching rationale before the ID prerequisite and the positional exclusion. No filler, though the trailing config-source sentence is somewhat dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and annotations present, the description need not explain returns or safety. It covers batch semantics, ID provenance, and points to clipform_get_guide and @vid-master/config for per-type shapes, leaving little an agent needs but lacks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents form_id, updates, context and every nested field including merge semantics. The description's only added framing is that node IDs come from create/add/get calls, which is marginal beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Update one or more existing nodes') and enumerates the mutable aspects (text, type, config, options). It does not explicitly differentiate itself from nearby siblings like clipform_update_form or clipform_set_logic, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit batching guidance ('Pass multiple updates in one call instead of separate tool calls') and an exclusion ('Does not change node positions in the flow'). It omits when to prefer a sibling such as clipform_set_logic for logic changes, so no explicit alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_upload_media_assetUpload Media AssetAInspect
Put one or more media files into your workspace media library (max 10, uploaded sequentially). This is step one of attaching media to a node - follow up with clipform_attach_node_media to place the returned media_asset_id on a node.
When a public URL is provided, the media is fetched and stored automatically. The API picks where each asset is stored based on its size and type. Word-level captions from clipform_generate_tts enable per-word highlighting in the viewer once attached - pass the caption_ref it returned instead of hand-copying the captions array.
PDFs (media_type document) are for consent agreements: they return a document descriptor, not a media_asset_id.
Provide media via items (explicit type + URL), files (files attached by the host client), or both. At least one is required.
| Name | Required | Description | Default |
|---|---|---|---|
| files | No | Files attached by the host client. Each becomes a video or still library asset (or a consent-agreement document for application/pdf) based on its declared mime_type. | |
| items | No | One or more media items to create as workspace library assets | |
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. | |
| form_id | No | The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it. | |
| workspace_id | No | Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace. |
Output Schema
| Name | Required | Description |
|---|---|---|
| results | Yes | One result per item, in order |
| workspace_name | No | Name of the workspace the media library entries were created in |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses sequencing (sequential uploads), automatic storage-location selection by size/type, URL auto-fetch behavior, and a notable return-shape exception (PDFs return a document descriptor instead of a media_asset_id). This is substantial operational context the structured fields do not carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and is organized into short, scannable paragraphs, each carrying distinct information. It runs somewhat long and re-states the caption guidance in both the body and schema, but there is little pure filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter, non-idempotent upload tool with an output schema present, the description covers everything an agent needs: entry point in the chain, the follow-up tool, input-source options, and the exception return path. Return-value details are appropriately delegated to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 cross-parameter guidance: media may come from items, files, or both (at least one required is not obvious since both are optional in the schema), and caption_ref should be preferred over manually copying the captions array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Put one or more media files into your workspace media library') with scope limits (max 10, uploaded sequentially). It explicitly distinguishes itself from the sibling clipform_attach_node_media by naming it as the required follow-up step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit workflow placement ('step one of attaching media to a node'), names the alternative follow-up tool, explains the mutually-alternative input paths (items vs files vs both), and spells out the PDF/consent-agreement case and the caption_ref-vs-captions preference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clipform_whoamiWho Am IARead-onlyIdempotentInspect
Show the current identity: auth mode (api key, oauth, session, or anonymous), active workspace, and plan limits. Needs a signed-in Clipform account (an anonymous session is asked to sign in).
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | Describe the user's underlying goal in one sentence - not the tool you're calling. |
Output Schema
| Name | Required | Description |
|---|---|---|
| plan | Yes | Plan limits for the active workspace |
| links | No | Workspace-level dashboard links - only present for a non-anonymous caller. |
| notice | No | Anonymous sessions only: the account is a temporary preview until claimed. |
| auth_mode | Yes | How this session is authenticated |
| workspace | Yes | Active workspace, or null when anonymous |
| workspaces | No | Workspaces the caller can target with workspace_id - present for session (dashboard) auth and the OAuth connector |
| is_authenticated | Yes | True for api_key, oauth, or session auth; false for anonymous |
| default_workspace_id | No | OAuth connector only: the workspace used when a tool call omits workspace_id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds non-obvious behavior beyond that: the call fails/clarifies for anonymous sessions by asking them to sign in, which is real auth-flow context an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste: the first front-loads what is returned, the second states the auth prerequisite. Nothing needs to be re-read or inferred.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only identity tool with an output schema present, return-value documentation is unnecessary, and the description still goes further by naming the returned fields. The auth prerequisite closes the only remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single 'context' parameter with 100% schema description coverage, so the schema already explains its meaning. The description adds nothing about how to phrase the context string, which is the correct baseline 3 when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('show') and resource ('current identity'), then enumerates the exact payload: auth mode (with its four possible values), active workspace, and plan limits. No sibling tool in the list overlaps with an identity/whoami query, so the agent can route to it unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys the use context (checking auth mode, workspace, and plan limits) and states the prerequisite that a signed-in account is required, with anonymous sessions being redirected to sign in. It stops short of explicit when-to-use/when-not phrasing or naming alternatives, but there is no competing sibling to disambiguate against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_more_toolsARead-onlyIdempotentInspect
Check for additional tools whenever your task might benefit from specialized capabilities - even if existing tools could work as a fallback.
| Name | Required | Description | Default |
|---|---|---|---|
| context | Yes | A description of your goal and what kind of tool would help accomplish it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no additional behavioral context such as what 'check' entails, whether it makes a network call, or what side effects (if any) occur beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It quickly communicates the action and the conditions for use, making it efficient and easy to parse, though it could be slightly more structured with a separate usage note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives clear usage guidance but does not explain what the tool returns or what happens after 'checking' for tools. With no output schema present, the description carries the burden of explaining the result, which it fails to do. For a simple one-parameter tool, this is a notable gap, though not severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the single parameter 'context' is already documented with a clear description in the schema. The tool description adds no additional semantic meaning beyond what the schema provides, which aligns with the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking for additional tools when a task could benefit from specialized capabilities. It distinguishes itself from the sibling clipform_* tools by being a meta-tool for tool discovery rather than a domain-specific operation, though it does not explicitly name this distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: use this tool whenever specialized capabilities might help, even if existing tools could work as a fallback. This gives the agent a clear decision rule, though it does not mention when not to use it or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
clipform_create_form5 fields changed- added
Output schema / properties / claim_urlAdded value: +{ + "description": "Anonymous builds only. One-time link to sign up, keep this form and publish it.", + "type": "string" +} - changed
Output schema / properties / dashboard_url / descriptionPrevious value: -"Builder URL (sign in to edit)"New value: +"Builder URL (sign in to edit). For an anonymous build this is a one-time claim link, not an editor." - added
Output schema / properties / is_previewAdded value: +{ + "description": "True when this is an anonymous preview build (answers are not saved), false otherwise.", + "type": "boolean" +} - added
Output schema / properties / preview_urlAdded value: +{ + "description": "Anonymous builds only. Private preview of the form. Answers are not saved, so do not share it with respondents.", + "type": "string" +} - changed
Output schema / properties / viewer_url / descriptionPrevious value: -"Form URL for respondents - a live public URL once authenticated/published, or a scoped preview-only link for an anonymous session"New value: +"Form URL for respondents - the live public URL. For an anonymous build this is a private preview link: answers are not saved, do not share it with respondents."
- Changed
clipform_get_form1 field changed- changed
Output schema / properties / urls / properties / viewer / descriptionPrevious value: -"Live respondent link, or a scoped preview link for an anonymous caller's draft. Omitted for a non-anonymous caller's unpublished draft."New value: +"Live respondent link, or - for an anonymous caller's draft - a private preview link where answers are not saved (do not share it with respondents). Omitted for a non-anonymous caller's unpublished draft."
1 tool update
- Changed
clipform_get_workflow1 field changed- removed
Input schema / properties / youtube_urlRemoved value: -{ - "description": "YouTube video URL (quiz variant: comprehension)", - "type": "string" -}
28 tool updates
- Changed
clipform_add_node4 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / node / additionalPropertiesRemoved value: -false - added
Input schema / properties / node / properties / config / propertyNamesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / node / properties / options / items / additionalPropertiesRemoved value: -false
- Changed
clipform_attach_node_media2 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / items / items / additionalPropertiesRemoved value: -false
- Changed
clipform_check_render2 fields changed- added
Input schema / properties / job_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / job_ids / items / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_complete_media_upload2 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / media_asset_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_create_form4 fields changed- removed
Input schema / properties / nodes / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / nodes / items / properties / config / propertyNamesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / nodes / items / properties / options / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / workspace_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_delete_form1 field changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_delete_node1 field changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_delete_node_media1 field changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_generate_tts3 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / items / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / workspace_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_get_form2 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Output schema / properties / nodes / items / properties / config / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
clipform_get_node_media2 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - changed
Output schema / properties / media / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "duration": { - "type": "number" - }, - "media_type": { - "type": "string" - }, - "status": { - "type": "string" - }, - "transcription_status": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "media_type", - "status" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "duration": { + "type": "number" + }, + "media_type": { + "type": "string" + }, + "status": { + "type": "string" + }, + "transcription_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "media_type", + "status" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
clipform_get_responses2 fields changed- added
Input schema / properties / since / patternAdded value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$" - added
Input schema / properties / until / patternAdded value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
- Changed
clipform_import_form6 fields changed- added
Input schema / properties / workspace_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Output schema / properties / form_id / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / form_id / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / import_summary / properties / skipped_details / items / propertyNamesAdded value: +{ + "type": "string" +} - added
Output schema / properties / viewer_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / viewer_url / typeRemoved value: -[ - "string", - "null" -]
- Changed
clipform_list_assets7 fields changed- removed
Input schema / properties / type / defaultRemoved value: -"all" - added
Output schema / properties / animations / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / animations / items / properties / description / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / fonts / items / properties / weights / items / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "number" + } +] - removed
Output schema / properties / fonts / items / properties / weights / items / typeRemoved value: -[ - "string", - "number" -] - added
Output schema / properties / sfx / items / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / sfx / items / properties / description / typeRemoved value: -[ - "string", - "null" -]
- Changed
clipform_list_compositions1 field changed- added
Output schema / properties / compositions / items / properties / propsSchema / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
clipform_list_forms5 fields changed- added
Input schema / properties / workspace_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Output schema / properties / forms / items / properties / tags / items / properties / color / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / forms / items / properties / tags / items / properties / color / typeRemoved value: -[ - "string", - "null" -] - added
Output schema / properties / next_cursor / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / properties / next_cursor / typeRemoved value: -[ - "string", - "null" -]
- Changed
clipform_list_video_templates1 field changed- added
Output schema / properties / templates / items / properties / exampleControls / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
clipform_log_generation4 fields changed- removed
Input schema / properties / details / additionalPropertiesRemoved value: -false - removed
Input schema / properties / details / properties / images / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / details / properties / sources / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_render_composition10 fields changed- removed
Input schema / properties / captions / items / $refRemoved value: -"#/properties/items/items/properties/captions/items" - added
Input schema / properties / captions / items / propertiesAdded value: +{ + "end": { + "description": "Segment end time in seconds", + "type": "number" + }, + "start": { + "description": "Segment start time in seconds", + "type": "number" + }, + "text": { + "description": "Full segment text", + "type": "string" + }, + "words": { + "description": "Per-word timestamps within the segment. Required - copy the full array from clipform_generate_tts verbatim.", + "items": { + "properties": { + "end": { + "type": "number" + }, + "start": { + "type": "number" + }, + "word": { + "type": "string" + } + }, + "required": [ + "word", + "start", + "end" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } +} - added
Input schema / properties / captions / items / requiredAdded value: +[ + "start", + "end", + "text", + "words" +] - added
Input schema / properties / captions / items / typeAdded value: +"object" - added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / inputProps / propertyNamesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / items / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / properties / captions / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / properties / captions / items / properties / words / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / items / items / properties / inputProps / propertyNamesAdded value: +{ + "type": "string" +}
- Changed
clipform_render_video_template4 fields changed- removed
Input schema / properties / captions / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / captions / items / properties / words / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / controls / propertyNamesAdded value: +{ + "type": "string" +} - added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_search_media4 fields changed- removed
Input schema / properties / queries / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / queries / items / properties / count / defaultRemoved value: -6 - removed
Input schema / properties / queries / items / properties / kind / defaultRemoved value: -"image" - removed
Input schema / properties / queries / items / properties / orientation / defaultRemoved value: -"portrait"
- Changed
clipform_search_music1 field changed- removed
Input schema / properties / count / defaultRemoved value: -5
- Changed
clipform_search_news1 field changed- removed
Input schema / properties / count / defaultRemoved value: -5
- Changed
clipform_set_logic3 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / nodes / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / nodes / items / properties / rules / items / additionalPropertiesRemoved value: -false
- Changed
clipform_update_form11 fields changed- added
Input schema / properties / author / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / author / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / properties / brand_name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / brand_name / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / properties / description / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / description / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - added
Input schema / properties / logo_url / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Input schema / properties / logo_url / typeRemoved value: -[ - "string", - "null" -] - added
Input schema / properties / total_steps / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Input schema / properties / total_steps / typeRemoved value: -[ - "number", - "null" -]
- Changed
clipform_update_node4 fields changed- added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / updates / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / updates / items / properties / config / propertyNamesAdded value: +{ + "type": "string" +} - removed
Input schema / properties / updates / items / properties / options / items / additionalPropertiesRemoved value: -false
- Changed
clipform_upload_media_asset6 fields changed- changed
Input schema / properties / files / items / anyOfPrevious value: -[ - { - "type": "string" - }, - { - "additionalProperties": true, - "properties": { - "download_url": { - "description": "Short-lived URL the server downloads the file's bytes from", - "type": "string" - }, - "file_id": { - "description": "Host-assigned identifier for the attached file", - "type": "string" - }, - "file_name": { - "type": "string" - }, - "mime_type": { - "description": "Declared MIME type - determines whether the file becomes a video or still asset", - "type": "string" - }, - "name": { - "type": "string" - }, - "size": { - "type": "number" - } - }, - "required": [ - "download_url" - ], - "type": "object" - } -]New value: +[ + { + "type": "string" + }, + { + "additionalProperties": {}, + "properties": { + "download_url": { + "description": "Short-lived URL the server downloads the file's bytes from", + "type": "string" + }, + "file_id": { + "description": "Host-assigned identifier for the attached file", + "type": "string" + }, + "file_name": { + "type": "string" + }, + "mime_type": { + "description": "Declared MIME type - determines whether the file becomes a video or still asset", + "type": "string" + }, + "name": { + "type": "string" + }, + "size": { + "type": "number" + } + }, + "required": [ + "download_url" + ], + "type": "object" + } +] - added
Input schema / properties / form_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$" - removed
Input schema / properties / items / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / properties / captions / items / additionalPropertiesRemoved value: -false - removed
Input schema / properties / items / items / properties / captions / items / properties / words / items / additionalPropertiesRemoved value: -false - added
Input schema / properties / workspace_id / patternAdded value: +"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
- Changed
clipform_whoami4 fields changed- added
Output schema / properties / plan / properties / form_limit / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / plan / properties / form_limit / typeRemoved value: -[ - "number", - "null" -] - added
Output schema / properties / plan / properties / node_limit / anyOfAdded value: +[ + { + "type": "number" + }, + { + "type": "null" + } +] - removed
Output schema / properties / plan / properties / node_limit / typeRemoved value: -[ - "number", - "null" -]
1 tool update
- Changed
clipform_whoami1 field changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Anonymous sessions only: the account is a temporary preview until claimed.", + "type": "string" +}
3 tool updates
- Changed
clipform_complete_media_upload1 field changed- added
Input schema / properties / form_idAdded value: +{ + "description": "The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it.", + "format": "uuid", + "type": "string" +}
- Changed
clipform_generate_tts1 field changed- added
Input schema / properties / form_idAdded value: +{ + "description": "The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it.", + "format": "uuid", + "type": "string" +}
- Changed
clipform_upload_media_asset1 field changed- added
Input schema / properties / form_idAdded value: +{ + "description": "The form this is for (from clipform_create_form) - a routing hint only, to pick the right workspace. The result still lands in the workspace library, not on a node. Required on an anonymous session, or this lands in a different workspace and clipform_attach_node_media will not find it.", + "format": "uuid", + "type": "string" +}
6 tool updates
- Changed
clipform_create_form2 fields changed- added
Input schema / properties / workspace_idAdded value: +{ + "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.", + "format": "uuid", + "type": "string" +} - added
Output schema / properties / workspace_nameAdded value: +{ + "description": "Name of the workspace the form was created in", + "type": "string" +}
- Changed
clipform_generate_tts1 field changed- added
Input schema / properties / workspace_idAdded value: +{ + "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.", + "format": "uuid", + "type": "string" +}
- Changed
clipform_import_form2 fields changed- added
Input schema / properties / workspace_idAdded value: +{ + "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.", + "format": "uuid", + "type": "string" +} - added
Output schema / properties / workspace_nameAdded value: +{ + "description": "Name of the workspace the form was created in", + "type": "string" +}
- Changed
clipform_list_forms1 field changed- added
Input schema / properties / workspace_idAdded value: +{ + "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.", + "format": "uuid", + "type": "string" +}
- Changed
clipform_upload_media_asset2 fields changed- added
Input schema / properties / workspace_idAdded value: +{ + "description": "Workspace to act in (id from clipform_whoami workspaces). Omit to use the connection's default workspace.", + "format": "uuid", + "type": "string" +} - added
Output schema / properties / workspace_nameAdded value: +{ + "description": "Name of the workspace the media library entries were created in", + "type": "string" +}
- Changed
clipform_whoami2 fields changed- added
Output schema / properties / default_workspace_idAdded value: +{ + "description": "OAuth connector only: the workspace used when a tool call omits workspace_id", + "type": "string" +} - changed
Output schema / properties / workspaces / descriptionPrevious value: -"All workspaces in the caller's company - only present for session (dashboard) auth"New value: +"Workspaces the caller can target with workspace_id - present for session (dashboard) auth and the OAuth connector"
1 tool update
- Changed
clipform_upload_media_asset6 fields changed- changed
Input schema / properties / files / descriptionPrevious value: -"Files attached by the host client. Each becomes a video or still library asset based on its declared mime_type."New value: +"Files attached by the host client. Each becomes a video or still library asset (or a consent-agreement document for application/pdf) based on its declared mime_type." - added
Input schema / properties / items / items / properties / filenameAdded value: +{ + "description": "Display filename for a document (media_type document). Defaults to the URL's file name.", + "maxLength": 200, + "type": "string" +} - changed
Input schema / properties / items / items / properties / media_type / descriptionPrevious value: -"Type of media"New value: +"Type of media. Use document for a consent-agreement PDF (url required, PDF only)." - changed
Input schema / properties / items / items / properties / media_type / enumPrevious value: -[ - "video", - "still" -]New value: +[ + "video", + "still", + "document" +] - added
Output schema / properties / results / items / properties / documentAdded value: +{ + "additionalProperties": false, + "description": "Consent-agreement descriptor (documents only) - set as consent_items[i].document via clipform_update_node", + "properties": { + "filename": { + "type": "string" + }, + "storage_path": { + "type": "string" + }, + "url": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "storage_path", + "filename", + "url", + "version" + ], + "type": "object" +} - added
Output schema / properties / results / items / properties / media_asset_id / descriptionAdded value: +"Absent for documents"
4 tool updates
- Changed
clipform_attach_node_media1 field changed- changed
Input schema / properties / items / items / properties / fit_media / descriptionPrevious value: -"Show the whole frame (contain) instead of cover-cropping. ALWAYS set true when attaching renders from clipform_render_composition or clipform_generate_video - they are composed 9:16 frames that must never be cropped. Leave unset for user-supplied media (arbitrary aspect ratios want the cover default)."New value: +"Show the whole frame (contain) instead of cover-cropping. ALWAYS set true when attaching renders from clipform_render_composition or clipform_render_video_template - they are composed 9:16 frames that must never be cropped. Leave unset for user-supplied media (arbitrary aspect ratios want the cover default)."
- Removed
clipform_generate_video - Changed
clipform_render_video_template2 fields changed- changed
Input schema / properties / caption_ref / descriptionPrevious value: -"caption_ref from clipform_generate_tts - an opaque handle that attaches that TTS run's word-level captions to the media asset, resolved server-side. Preferred over captions. Only used when node_id is set."New value: +"caption_ref from clipform_generate_tts - an opaque handle that attaches that TTS run's word-level captions to the media asset, resolved server-side. Preferred over captions. Only used when node_id is set. Defaults to controls.audio_url when that is a clipform_generate_tts track (slideshow narration), so narrated montages keep their captions." - added
Output schema / properties / duration_secondsAdded value: +{ + "description": "Final video length in seconds - the narration's real length when audio_url drove it.", + "type": "number" +}
- Changed
clipform_search_music1 field changed- changed
Output schema / properties / tracks / descriptionPrevious value: -"Matching tracks (empty if none); pass a url as the audio track to generate_video"New value: +"Matching tracks (empty if none); pass a url as the audio for the slideshow template"
3 tool updates
- Changed
clipform_generate_video3 fields changed- changed
Input schema / properties / transition / properties / duration / descriptionPrevious value: -"Advanced override: transition duration in seconds"New value: +"Advanced override: transition duration in seconds (0.1-5). For a hard cut use type: 'none' instead - duration is ignored then." - added
Input schema / properties / transition / properties / duration / maximumAdded value: +5 - added
Input schema / properties / transition / properties / duration / minimumAdded value: +0.1
- Changed
clipform_search_music5 fields changed- changed
Input schema / properties / count / typePrevious value: -"number"New value: +"integer" - added
Input schema / properties / maxDuration / exclusiveMinimumAdded value: +0 - added
Input schema / properties / minDuration / exclusiveMinimumAdded value: +0 - added
Input schema / properties / query / minLengthAdded value: +1 - changed
Input schema / properties / tags / descriptionPrevious value: -"Genre/mood tags to filter by"New value: +"Genre/mood tags to filter by. Multiple tags are ANDed together (e.g. ['ambient', 'chill'] matches tracks tagged both)."
- Changed
clipform_upload_media_asset3 fields changed- added
Input schema / properties / filesAdded value: +{ + "description": "Files attached by the host client. Each becomes a video or still library asset based on its declared mime_type.", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "additionalProperties": true, + "properties": { + "download_url": { + "description": "Short-lived URL the server downloads the file's bytes from", + "type": "string" + }, + "file_id": { + "description": "Host-assigned identifier for the attached file", + "type": "string" + }, + "file_name": { + "type": "string" + }, + "mime_type": { + "description": "Declared MIME type - determines whether the file becomes a video or still asset", + "type": "string" + }, + "name": { + "type": "string" + }, + "size": { + "type": "number" + } + }, + "required": [ + "download_url" + ], + "type": "object" + } + ] + }, + "maxItems": 10, + "minItems": 1, + "type": "array" +} - changed
Input schema / properties / items / items / properties / url / descriptionPrevious value: -"Public URL of the media file. When provided, the server fetches and stores it directly."New value: +"Public URL that links directly to the media file itself. When provided, the server fetches and stores it directly." - changed
Input schema / requiredPrevious value: -[ - "items", - "context" -]New value: +[ + "context" +]
Related MCP Connectors
- mcpOAuthcom.linatora
AI-powered hiring for recruiters & candidates - video interviews, transcripts, scores, profiles.
Create forms, surveys, quizzes & polls — publish shareable links and analyze responses.
Make on-brand video adverts, presenter videos and training videos from your AI assistant.
UGC videos for your app with AI influencers who keep the same face. Hosted (OAuth) or local.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceGenerate AI UGC video ads from any product URL in 5 minutes. Realistic AI avatars, natural voiceover, proven ad templates. No actors, no editing, no experience required.40 npm1MIT
- AlicenseAqualityAmaintenanceMake UGC-style video ads without filming: tell your AI assistant what to say and get a vertical clip of a realistic actor saying it, ready for TikTok, Reels or Shorts. Pick or describe an actor, choose a voice from samples, and see the price before rendering. It also makes faceless videos from a script or a short brief: narration over an opening animated clip and image scenes.261MIT
- AlicenseNot gradedqualityAmaintenanceEnables turning a product URL into a narrated, branded demo video in your own voice, with automated planning, recording, and editing for multiple aspect ratios.1Apache 2.0

formbase MCP serverofficial
AlicenseNot gradedqualityAmaintenanceEnables AI agents to collect and verify customer information by creating prefilled, branded form requests for individual recipients, reading their submissions, and building, publishing, translating, and sharing forms through a hosted MCP connection.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.