Skip to main content
Glama

Server Details

Plan, compare, price, generate, and recover AI video from compatible MCP clients.

Ownership verified
Status
Healthy
Uptime
51.0% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
camgraphe/maxvideoai-plugin
GitHub Stars
0

TDQS

A4.4/5.0

Scored across 15 tools

Disambiguation4/5

Most tools target distinct stages or resources such as budgeting, quoting, confirmation, status, and delivery. Mild overlap exists among model-discovery tools (list_models/get_model_details/recommend_models) and result-handling tools (get_generation_status/list_recent_generations/present_generation/get_generation_download), but descriptions clearly indicate when each applies.

Naming Consistency5/5

All 15 names use snake_case with a predictable verb_object pattern, e.g. calculate_project_budget, prepare_generation, get_generation_status, list_models. There is no mixed casing or inconsistent verb style.

Tool Count5/5

15 tools sits at the upper end of the typical range but is justified by the domain breadth: model discovery, media import, budgeting, quoting, confirmation, status recovery, delivery, account, and funding. Each tool maps to a distinct lifecycle operation rather than a redundant wrapper.

Completeness4/5

The surface covers model discovery, media reference handling, budgeting, exact quoting, confirmation, status/recovery, presentation/download, account status, and top-up. Minor gaps such as explicit cancellation or media deletion exist, but the core generation lifecycle is well covered.

Available Tools

16 tools
calculate_project_budgetCalculate a MaxVideoAI project budgetA
Read-only
Inspect

Use this when the user needs current pricing estimates of concrete video production proposals, including single- or mixed-model shots, clip counts and explicit creative attempts. The host owns the creative plan and names each proposal; give mixed-model shots a factual rationale. Validate each selected mode with get_model_details. Compare proposals using the same output and attempts assumptions before calling an alternative cheaper or lower-cost. Separate base production from creative-attempt allowance: creative attempts are billable scenarios; technical failures follow the returned job and refund state. Estimates do not reserve a price or authorize generation. Prices use the connected environment and may differ between staging and production. If audio is always_generated or unavailable, omit settings.audio; only send it when optional. If aspectRatios is empty, omit aspectRatio; otherwise use a supported value. Do not use it to invent the creative plan, reserve a price, create a generation quote, inspect the wallet, or spend funds.

ParametersJSON Schema
NameRequiredDescriptionDefault
proposalsYesOne to four user-named video production proposals, including single-model or mixed-model approaches.

TDQS

A4.5/5.0
Behavior5/5

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

Beyond readOnlyHint/destructiveHint, it explains that estimates do not reserve price or authorize generation, notes environment pricing differences (staging vs production), describes how technical failures follow the job and refund state, and clarifies that creative attempts are billable while technical failures are not – all critical safety and side-effect context.

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

Conciseness4/5

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

The description is long (~300 words) but every sentence carries meaning – usage triggers, exclusions, parameter conditions, and behavioral caveats. It is front-loaded with the core function and organized from general to specific, with no fluff, though it could be tightened slightly.

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

Completeness4/5

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

For a read-only estimation tool, it covers prerequisites (get_model_details), environment differences, parameter constraints, and exclusions. It omits explicit return-format details, but the absence of an output schema and the tool's purpose make the expected response (an estimate) inferable.

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

Parameters4/5

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

Schema coverage is 100% already, but the description adds actionable conditional logic: omit settings.audio when not optional, omit aspectRatio when mode.aspectRatios is empty, and separate base production from creative-attempt allowance. These go beyond the schema's declarative descriptions and help the agent construct valid requests.

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

Purpose5/5

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

The description opens with a precise statement of purpose: 'current pricing estimates of concrete video production proposals.' It names specific scope (single- or mixed-model shots, clip counts, creative attempts) and explicitly lists non-uses ('invent the creative plan', 'reserve a price', 'create a generation quote', 'inspect the wallet', 'spend funds'), which clearly distinguishes it from generation and wallet tools.

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

Usage Guidelines4/5

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

It starts with 'Use this when' providing a clear trigger, and gives explicit exclusions. It advises comparing proposals on the same assumptions before calling an alternative cheaper/lower-cost, implying there are other pricing tools, though it doesn't name them. It also directs validation via get_model_details, which orients the agent to prerequisites.

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

compare_generation_pricesCompare compatible MaxVideoAI generation prices
Read-only
Inspect

Use this when an open image/video model choice or requested alternatives need prices for a simple single-output brief. One read returns up to three compatible models with current customer prices, favoring different prices; fewer if fewer meet every constraint. Use actual imported owned assets, exact mode, reference roles/combinations and explicit duration/resolution/audio requirements. Unspecified presets are disclosed; do not silently change requirements. Include a baseline model for freshly calculated savings; disclose configurationDiffers and never compare currencies. Keep labels/explanations brief, with no routine lip-sync caveats; price alone does not prove quality. Do not use to substitute an explicitly chosen model. No quotes, wallet reads, reservations, spending or media generation. After choice inspect get_model_details and prepare_generation for a fresh exact quote, then wait for approval. Invite a different model, resolution, duration or budget for a new quote and price comparison. For multi-shot production/attempt allowances use calculate_project_budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
promptYes
surfaceYes
settingsNoExplicit constraints only. Include durationSec for video. Leave unspecified resolution/framing null for disclosed supported presets. Never relax a requested value to get more models.
referencesNo
baselineModelIdNoReprice this exact model to calculate current savings. Never pass a remembered price.
baselineSettingsNoWhen changing resolution or duration, supply the original quote settings to reprice that configuration. Null uses the current scenario. Never pass an old price.
candidateModelIdsNoOnly explicitly requested alternatives; null compares the live eligible catalog. Never replace a named model without approval.
confirm_generationConfirm a MaxVideoAI generationA
DestructiveIdempotent
Inspect

Use only after explicit user approval of the exact fresh quote returned by prepare_generation. Display its exact price and wait for that approval first; ambiguous assent is not confirmation. This consumes the funding locked into the quote: wallet quotes may spend credits; an included trial does not. It contacts an external generation provider. A confirmation authorizes exactly one paid attempt and is consumed whether accepted, failed or refunded. A refund does not restore authorization. Every replacement is a new paid attempt requiring a fresh exact quote and new explicit user approval. Duplicate delivery of the identical confirmed request returns the existing job; never use this to retry a failed generation. After an ambiguous response, recover through get_generation_status or list_recent_generations rather than submitting a second paid attempt. An accepted job is not a completed result.

ParametersJSON Schema
NameRequiredDescriptionDefault
quoteIdYes
confirmedYes

TDQS

A4.9/5.0
Behavior5/5

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

The description goes far beyond annotations by disclosing that it contacts an external provider, consumes funding, that refunds do not restore authorization, and that a confirmation is consumed even on failure or refund. It also aligns with idempotentHint by noting duplicate delivery returns the existing job, adding meaningful behavioral context not present in annotations.

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

Conciseness5/5

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

The description is dense but every sentence carries critical information: preconditions, financial implications, idempotency, recovery. It is front-loaded with the most important usage rule and organized logically from precondition to consequences. No filler or redundancy.

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

Completeness5/5

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

For a tool with financial and external side effects, no output schema, and high complexity, the description covers all essentials: when to call, what it does, what happens on duplicate, refund, failure, and how to recover. It even notes that an accepted job is not a completed result, ensuring the agent understands the full lifecycle.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It references quoteId as the 'exact fresh quote returned by prepare_generation' and implies confirmed must be true via 'explicit user approval'. While it doesn't name the parameters directly, it gives functional meaning to the quoteId and the confirmation flag, adding value beyond the schema's UUID and const true.

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

Purpose5/5

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

The description states a specific action (confirm a generation), the exact precondition (after explicit user approval of the exact fresh quote from prepare_generation), and distinguishes it from siblings by specifying it consumes funding and authorizes exactly one paid attempt. It also clarifies that duplicate delivery returns an existing job, so it's clearly not a retry tool.

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

Usage Guidelines5/5

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

It explicitly says 'Use only after explicit user approval' and details when not to use it (never to retry a failed generation). It even recommends recovery paths through get_generation_status or list_recent_generations for ambiguous responses, giving clear when/when-not and alternatives.

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

get_account_statusGet MaxVideoAI account statusA
Read-only
Inspect

Use this when the user asks which MaxVideoAI account is connected, its current credit balance, trial state, spending limits, or safe account destinations. Do not use it to reveal a private email, collect payment details, charge credits, change the wallet, or generate media.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already mark it read-only and non-destructive; the description adds behavioral boundaries beyond that by stating it must not reveal private email, collect payments, charge credits, change the wallet, or generate media. It does not describe response shape or potential limitations, but the added exclusions are meaningful.

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

Conciseness5/5

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

Two front-loaded sentences: the first enumerates triggering intents, the second enumerates exclusions. Every clause earns its place, and there is no redundant restatement of the title.

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

Completeness5/5

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

With no parameters, read-only annotations, and a clear enumeration of returned data (account, balance, trial state, spending limits, destinations), the description is sufficient for an agent to invoke and interpret the tool correctly. The only mildly opaque term, 'safe account destinations,' is a minor domain detail.

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

Parameters4/5

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

There are zero parameters and schema coverage is 100%, so the baseline is 4. The description does not need to explain parameters; it adds value by enumerating the account-related data points an agent can expect.

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

Purpose5/5

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

The description names a clear resource (MaxVideoAI account) and the exact data the tool exposes: connected account, credit balance, trial state, spending limits, and safe account destinations. It also distances itself from sibling tools by excluding media generation, so an agent can distinguish it from get_generation_status and list_media.

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

Usage Guidelines5/5

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

It gives an explicit trigger condition ('when the user asks which MaxVideoAI account is connected...') and an explicit do-not-use list covering private email, payment details, charging credits, wallet changes, and media generation. This leaves no ambiguity about when to select this tool over alternatives.

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

get_generation_downloadRefresh a MaxVideoAI generation downloadA
Read-onlyIdempotent
Inspect

Use this from the MaxVideoAI result app to create a fresh short-lived attachment URL for one completed owned generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobIdYes
downloadYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds practical behavioral context: the URL is short-lived, requires generation completion, and is ownership-scoped. No contradiction with annotations.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every clause contributes meaning: source context, action, freshness, scope, and ownership constraint.

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

Completeness4/5

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

For a single-parameter tool with an output schema and strong annotations, the description covers the key constraints: where to call it, what it returns, and what prerequisites apply. The only minor gap is not explicitly naming jobId as the generation ID, but this is easily inferable.

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

Parameters3/5

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

The input schema provides only a bare jobId string with no descriptionholistically, and schema description coverage is 0%. The description implies jobId refers to a generation ('one completed owned generation') but never explicitly explains that jobId is the generation identifier, leaving some inference to the agent.

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

Purpose5/5

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

The description clearly states a specific action: create a fresh short-lived attachment URL for a completed owned generation. It distinguishes this from sibling tools like get_generation_status, prepare_generation, and present_generation by naming the exact resource and outcome.

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

Usage Guidelines4/5

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

The description gives clear context: use it from the MaxVideoAI result app and only for completed owned generations. It does not explicitly name alternatives or when not to use it, but the context is sufficiently directive.

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

get_generation_statusGet a MaxVideoAI generation statusA
Read-only
Inspect

Use this to follow or recover one known owned generation, including after interruption or an ambiguous submission response. It returns safe current status, failure/refund state and MaxVideoAI library/workspace destinations without exposing prompts, provider details or private media. An accepted or running job is not completed: do not claim completion until terminal success. When retry is returned, wait at least retry.afterSeconds before calling retry.tool with retry.arguments; do not repeatedly check sooner. When retry is null, stop automatic polling. For a technical failure inspect the refund state; do not resubmit automatically. Every replacement is a new paid attempt requiring a fresh quote and approval. For a completed job use present_generation once to deliver the saved result. For Audio, preserve the original output and use the same recovery flow.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true and destructiveHint=false, and the description reinforces this by saying it returns "safe current status" and does not expose prompts, provider details, or private media. It also adds important behavioral context: accepted/running jobs are not complete, retries have timing requirements, replacements are paid, and refund state should be checked after technical failure.

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

Conciseness5/5

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

The description is front-loaded with the core use case and then adds dense, operational guidance. Every sentence carries meaningful behavioral or routing information, and there is no filler or repetition beyond what is necessary for safe use.

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

Completeness5/5

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

Despite having no output schema, the description explains the important parts of the response: current status, failure/refund state, destinations, and retry instructions. It also covers post-success behavior with present_generation and accounts for Audio jobs. For a single-parameter read-only status tool, this is complete enough for an agent to act correctly.

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

Parameters3/5

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

The schema describes only jobId with min/max length, and schema description coverage is 0%. The description implies that jobId must refer to a known owned generation and mentions ambiguous submission responses, which hints at where the ID comes from. However, it never explicitly states how the jobId is obtained or validated, so the agent must infer the source from context.

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

Purpose5/5

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

The description clearly states a specific purpose: follow or recover one known owned generation, including after interruption or ambiguous submission. It also distinguishes the tool from sibling present_generation by explaining when to use that tool instead, and from list_recent_generations by focusing on a known single job.

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

Usage Guidelines5/5

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

The description gives explicit usage rules: use for recovery/polling, wait at least retry.afterSeconds before retrying, stop polling when retry is null, avoid repeated checks, do not resubmit on technical failure, and use present_generation once the job is complete. This is strong, actionable guidance that also warns against common misuse.

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

get_model_detailsGet MaxVideoAI model detailsA
Read-only
Inspect

Use this when the user needs exact current capabilities, limits, evidence and reviewed official promptingSources for one known public MaxVideoAI model. Read the selected mode before budgeting or quoting: required fields, settings, reference roles/counts/kinds, per-file and combined durations, audio policy and limits. t2v creates video from text; i2v and i2v_standard animate a first/source image and may accept a last frame; ref2v uses image/video/audio references; fl2v requires first_frame and last_frame images; v2v edits source video; r2v uses ordered reference videos; extend uses ordered clips; a2v follows owned audio; retake replaces part of an owned clip; reframe changes its canvas. i2v_standard is the published Standard route; check live prices before calling it cheaper. Only live generation-enabled modes are executable. Honor assetRequired and conditional assetRequiredWhen: required references must be private MaxVideoAI assets, never arbitrary public HTTPS URLs. If aspectRatios is empty, omit aspectRatio; if non-empty, include a supported aspectRatio. When audio is always_generated or unavailable, omit settings.audio; only send it when optional. For GPT Image edits use source/reference images and an optional mask image with the mask role; custom resolution needs imageWidth and imageHeight from live constraints. For prompt help, use relevant reviewed official provider promptingSources and share the returned URL when useful; if empty, say no reviewed official source was returned; do not invent a guide or substitute web search. Provider guides inform prompt craft, not MaxVideoAI availability or pricing; live details also govern settings and execution. Do not use this for exact pricing, generation, hidden models, or provider guarantees.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExact public MaxVideoAI model ID returned by list_models or recommend_models.

TDQS

A4.2/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, it discloses important behaviors: only live generation-enabled modes are executable, required references must be private MaxVideoAI assets, aspectRatio and audio settings have specific omission rules, and empty promptingSources should be reported as absent rather than invented. These are practical behavioral traits an agent cannot infer from annotations or the simple input schema.

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

Conciseness3/5

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

The opening sentence is strong and front-loaded, but the description becomes a dense single-paragraph dump of mode semantics, asset rules, and generation guidance. Much of this is valuable, but the t2v/ref2v/v2v taxonomy could be condensed or moved to an output schema or separate reference; it is more verbose than strictly necessary.

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

Completeness4/5

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

With no output schema, the description carries the burden of explaining return-value semantics, and it does so extensively: mode classification, asset requirements, aspect ratio and audio handling, promptingSource behavior, and execution boundaries. It lacks precise detail on what 'evidence' covers, but overall it gives an agent enough context to invoke the tool and interpret common results.

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

Parameters3/5

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

The single `id` parameter is already fully documented in the schema as 'Exact public MaxVideoAI model ID returned by list_models or recommend_models'. The description adds 'one known public' but does not meaningfully enhance the parameter's meaning, so the baseline 3 for high schema coverage applies.

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

Purpose5/5

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

The opening sentence precisely states the resource ('one known public MaxVideoAI model') and what it returns ('exact current capabilities, limits, evidence and reviewed official promptingSources'). It also differentiates this tool from list/recommend siblings by requiring a known model, and explicitly rules out pricing and generation use cases.

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

Usage Guidelines4/5

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

The description gives a clear when-to-use condition ('when the user needs exact current capabilities...'), practical timing ('before budgeting or quoting'), and explicit exclusions ('Do not use this for exact pricing, generation, hidden models, or provider guarantees'). It does not name a specific sibling tool as the alternative, but the schema's mention of list_models and recommend_models provides some routing context.

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

import_reference_filesImport private reference filesAInspect

Use this to import up to eight user-authorized image, video or audio files from temporary host file handles, including attachments or authorized generation results, into the connected private MaxVideoAI library. MaxVideoAI manages these references; the host owns creating or selecting reference media. Use returned asset IDs directly and preserve input order; do not call list_media after a successful direct import. On partial failure, keep successful IDs and retry only failed files. Do not invent or substitute download URLs, send local filesystem paths, re-import existing library assets, generate, or spend. When the host cannot expose a file handle, use create_reference_upload_link instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate readOnly=false, idempotent=false, and destructive=false, but the description adds meaningful behavioral context: it owns reference management, returns asset IDs, preserves input order, and avoids generation or spending. It also clarifies expected failure-mode behavior on partial failure, which goes well 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.

Conciseness5/5

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

The description is dense but every sentence carries operational value: purpose, ownership, return behavior, failure handling, prohibitions, and the alternative tool. It is front-loaded with the primary purpose and structured logically from what to do to what not to do.

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

Completeness5/5

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

For a tool with one parameter, no output schema, and rich annotations, the description is complete enough. It covers the input source, constraints, return semantics, failure recovery, prohibited actions, and the alternative path. No critical information an agent needs to invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the semantic meaning of download_url by saying files come from 'temporary host file handles' and warns against local filesystem paths or invented URLs. However, it does not explicitly describe file_id, file_name, or mime_type, leaving part of the nested object's meaning to inference from the schema.

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

Purpose5/5

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

The description uses a specific verb-resource pair: 'import up to eight user-authorized image, video or audio files... into the connected private MaxVideoAI library.' It clearly distinguishes this from create_reference_upload_link by naming the alternative and the condition that selects it. The scope and source of the files are explicit.

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

Usage Guidelines5/5

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

It states exactly when to use this tool, when not to use it ('do not call list_media after a successful direct import'), and which sibling to use instead ('use create_reference_upload_link instead'). It also provides concrete retry guidance for partial failures, leaving no ambiguity for an agent.

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

list_mediaList private MaxVideoAI reference mediaA
Read-only
Inspect

Use this when the user needs reusable private MaxVideoAI image, video, or audio asset IDs; filter by the required media kind and use only the returned safe metadata and controlled previews. Do not use it to upload files, expose storage or provider URLs, or start generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
cursorNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and non-destructive. The description adds useful behavioral context: assets are private, results are only safe metadata and controlled previews, and storage/provider URLs are not exposed. This complements the annotations without contradicting them.

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

Conciseness5/5

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

Two sentences, front-loaded with the use case and immediately followed by exclusions. Every clause adds information, and there is no filler or repetition.

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

Completeness3/5

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

Provides enough for a safe basic invocation: purpose, return type (safe metadata and previews), and exclusions. However, with no output schema and minimal parameter documentation, it leaves pagination semantics, the limit/cursor relationship, and whether kind can be omitted unresolved.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It gives semantic meaning for 'kind' as a media-kind filter, but it does not explain 'limit' or 'cursor', pagination behavior, or the fact that the schema lists no required parameters while the description says 'required media kind'.

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

Purpose5/5

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

States the action (list) and precise resource (private MaxVideoAI reference media yielding image/video/audio asset IDs). It also explicitly disambiguates from uploads, exposing URLs, and generation, so an agent can distinguish it from sibling tools.

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

Usage Guidelines5/5

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

Opens with an explicit when-to-use condition: user needs reusable private asset IDs. It also gives clear when-not-to-use exclusions: not for uploading files, exposing storage/provider URLs, or starting generation. This provides strong selection guidance even without naming alternatives.

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

list_modelsList MaxVideoAI modelsA
Read-only
Inspect

Use this when the user needs current public MaxVideoAI image or video model capabilities, including audio and reference-image support. Every filtering field is nullable: send null when the user did not state that constraint, never a placeholder. Do not use it for generation, exact pricing, private models, or provider guarantees.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoExact public MaxVideoAI model ID, or null unless the user named one.
modeNoRequested generation mode, or null unless the user constrained it.
audioNoWhether the user explicitly requires or excludes audio, or null when unstated.
limitNoMaximum number of matching models requested by the user, or null for the service default.
surfaceNoRequested media surface, or null unless the user constrained it.
resolutionNoRequested resolution, or null unless the user constrained it.
aspectRatioNoRequested aspect ratio, or null unless the user constrained it.
maxDurationSecNoMaximum duration requested by the user, or null. Never use 300 as a placeholder.
referenceImagesNoWhether the user explicitly requires or excludes reference images, or null when unstated.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds meaningful behavioral context beyond annotations: all filtering fields are nullable, null must be sent when a constraint is unstated, and placeholders are forbidden. It also clarifies the data scope as public rather than private or provider-guaranteed, which is useful for invocation.

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

Conciseness5/5

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

Three sentences with the primary usage guidance front-loaded)SkipHere. Every sentence earns its place: when to use, null-handling rule, and explicit exclusions. No filler or redundant restatement of the schema.

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

Completeness4/5

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

For a read-only filtering tool, the description explains scope, constraints, null semantics, and exclusions, which covers most invocation needs. There is no output schema and the description does not describe the exact return shape, but the phrase 'model capabilities' plus filter context makes the expected result reasonably inferable, leaving only a minor completeness gap.

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

Parameters3/5

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; each parameter already has a clear description like 'or null unless the user constrained it.' The description's global instruction that every filtering field is nullable reinforces the schema but does not add substantial new parameter-level meaning beyond what is already present.

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

Purpose5/5

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

The description states a specific action (list) applied to a clearly bounded resource: 'current public MaxVideoAI image or video model capabilities,' including audio and reference-image support. It further distinguishes itself by explicitly excluding generation, exact pricing, private models, and provider guarantees, so an agent can tell it apart from siblings like get_model_details or prepare_generation.

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

Usage Guidelines4/5

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

It opens with 'Use this when the user needs current public...' and closes with 'Do not use it for generation, exact pricing, private models, or provider guarantees,' giving practical selection guidance. It does not name specific sibling tools as alternatives, but the exclusions effectively route agents away from clearly different operations.

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

list_recent_generationsList recent MaxVideoAI generationsA
Read-only
Inspect

Use this when a job identifier or submission response was lost, or the user returns to recent work. Recover a bounded page from the same connected user's MaxVideoAI library before considering any second paid submission. Filter by surface video, image or audio when known, preserve the existing job IDs and use get_generation_status for follow-up. Do not claim completion for accepted/running jobs or use this to generate, retry, or charge. Completed results can be delivered through present_generation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
statusNo
surfaceNo

TDQS

A4.5/5.0
Behavior4/5

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

The annotations (readOnlyHint=true, destructiveHint=false) already establish the tool is safe. The description adds context beyond annotations: it mentions bounded page, same connected user, and explicitly warns not to claim completion for accepted/running jobs or to charge. This adds value and aligns with annotations. Minor gap: doesn't detail pagination or rate limits, but given annotations, this is sufficient.

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

Conciseness4/5

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

The description is a single paragraph with multiple sentences, each carrying weight. It is front-loaded with the primary use case and then provides constraints and alternatives. It could be slightly more concise by shortening the first sentence, but generally it is tight and informative.

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

Completeness4/5

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

Given the tool has 4 optional parameters and no output schema, the description provides enough context to call it correctly: it explains the purpose, constraints (same user, bounded page), filtering, and follow-up. It doesn't explain return values, but that is not required without output schema. The only missing piece could be more explicit on pagination, but the term 'bounded' implies it.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. It directly mentions the 'surface' parameter (filter by surface video, image or audio), which adds semantic meaning. It references 'bounded page' implying limit/cursor semantics. However, it doesn't explain the 'status' parameter in detail, but the overall guidance on filtering is helpful.

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

Purpose5/5

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

The description clearly states the tool's purpose: listing recent MaxVideoAI generations for the same connected user. It specifies the resource (MaxVideoAI library) and the action (list recent), and distinguishes it from siblings like get_generation_status and present_generation. The purpose is specific and actionable.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: when to use (when job ID lost or returning to recent work), what to do before considering a second paid submission, and alternatives (use get_generation_status for follow-up, present_generation for completed results). It also explicitly states when not to use it (do not use to generate, retry, or charge). This is exemplary.

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

prepare_generationPrepare a MaxVideoAI generationInspect

Use this to validate a complete selected AI video or image request and save an exact short-lived quote. Read get_model_details for the selected mode first, including t2v, i2v, i2v_standard, ref2v, fl2v, v2v, r2v, extend, a2v, retake and reframe. It saves the quote but does not spend or generate. Display the exact price, currency and validated request, then stop and wait for explicit user approval before confirm_generation. Required private references must be present; if missing, no exact quote can be created. A project budget is only an estimate. For nullable inputs, omit or send null when not explicitly required by the selected mode’s live details or the user. For video duration use settings.durationSec, never settings.duration. Use only supported settings and ordered reference roles; never infer constraints from a sibling mode. Treat expiresAt as UTC; declare definitive expiry only on QUOTE_EXPIRED, not a local-date comparison. If credits are insufficient, use create_topup_link for this quote. Funding, discussion and ambiguous assent do not approve generation. Never substitute a named model or use a quote as a generation result. After the quote, briefly invite another model, resolution, duration or budget for a new quote and price comparison; use compare_generation_prices for actual savings, never guess.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYes
promptYes
surfaceYes
engineIdYes
settingsNo
referencesNo
outputCountNoNumber of outputs. Video must use 1. Image limits are model-specific; read outputCount from get_model_details.
schemaVersionNo
present_generationPresent a MaxVideoAI generationA
Read-only
Inspect

Use this once to deliver a completed owned MaxVideoAI generation as inline video, image or original Audio in a compatible UI host. First verify completion with get_generation_status or list_recent_generations. Explain that the result is saved in the same connected MaxVideoAI library. If the host does not render the UI, use the returned resource link and library destination as fallback; never invent URLs. Do not poll, generate, retry, confirm, or charge with this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
jobIdYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds meaningful behavioral context: the result is already saved in the connected library, the tool must not invent URLs, and it should not poll, retry, confirm, or charge. It does not fully specify the exact return payload shape, but the mention of 'returned resource link and library destination' gives a useful baseline.

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

Conciseness5/5

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

The description is compact and well ordered: primary purpose first, then mandatory verification, then fallback behavior, then explicit exclusions. Every sentence contributes actionable guidance and there is minimal redundancy.

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

Completeness4/5

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

For a single-parameter presentation tool with rich sibling context, the description covers the key operational aspects: verification, one-time use, UI fallback, URL safety, and persistence of the generation. The main gap is that jobId semantics are undefined, and there is no explicit return contract despite the absence of an output schema, but the description is otherwise sufficient for safe invocation.

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

Parameters2/5

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

The input schema has one required parameter, jobId, with 0% schema description coverage, so the description carries the full burden. The description never explains what jobId means, where it comes from, or how it relates to a completed generation. The parameter name is somewhat self-explanatory, but the agent is left without explicit guidance on populating it.

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

Purpose5/5

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

The description states a specific verb and resource: 'deliver a completed owned MaxVideoAI generation as inline video, image or original Audio in a compatible UI host.' It also distinguishes itself from siblings by explicitly saying 'Do not poll, generate, retry, confirm, or charge with this tool,' making it clear this is a presentation-only operation, not generation or status checking.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: use once after completion, and verify completion first with get_generation_status or list_recent_generations. It also provides fallback behavior for incompatible hosts and names exclusions such as no retry, no confirm, and no charge, which routes the agent away from unintended operations.

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

recommend_modelsRecommend MaxVideoAI modelsA
Read-only
Inspect

Use this when the user is undecided or asks for advice on which AI video/image model fits a creative goal. Present the best-fit available executable model first, then strong alternatives from distinct model families when useful. Validate the selected mode with get_model_details. Nullable constraints must be null or omitted when unstated, never placeholders. Ask only for missing choices that change the result or budget. Clarify whether quality means story coherence, multi-shot continuity, reference/character fidelity, motion, audio or delivery resolution; never rank creative quality by resolution alone. Use calculate_project_budget on comparable proposals before calling an option cheaper or lower-cost. Mix models only when each shot has a factual rationale; do not force diversity or dilute a quality-first plan. Do not use when the user already chose a compatible model for validation, pricing or execution. Never substitute a named model without user approval. Use returned editorialGuidance: reference entries are reviewed starting points, alternative entries serve meaningful tradeoffs, and on_request entries are for explicit requests. Inspect reviewStatus, reviewedAt, rationale and provenance. Editorial preference is not measured quality or execution certification; a new version never inherits a review from its family. An idea, a prompt or a single asset can be a complete outcome; do not require a film or a multi-step recipe. Recommendations are capability matches with disclosed editorial preference. Do not use as an exact quote, generation command or guarantee that a provider will accept a request. Respect executable constraints and the user’s choice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoExact public model ID to consider, or null unless the user named one.
modeNoRequested generation mode, or null unless the user constrained it.
audioNoWhether the user explicitly requires or excludes audio, or null when unstated.
surfaceNoRequested media surface, or null unless the user constrained it.
useCaseNoCreative goal used only with reviewed MaxVideoAI model guidance, or null when unstated.
prioritiesNoOrdered user-stated factual priorities, most important first, or null when none of these values matches. For beautiful cinematography, expressive acting or smooth camera movement without an explicit listed priority, use null. highest_resolution requires a delivery-resolution preference such as 4K; it is not a proxy for overall creative quality. lower_cost requests a budget comparison when cheaper options are explicitly wanted. Asking what a project costs does not mean prefer the cheapest: keep priorities null and use calculate_project_budget for the estimate.
resolutionNoRequested resolution, or null unless the user constrained it.
aspectRatioNoRequested aspect ratio, or null unless the user constrained it.
maxDurationSecNoMaximum duration requested by the user, or null. Never use 300 as a placeholder.
referenceImagesNoWhether the user explicitly requires or excludes reference images, or null when unstated.
excludedModelIdsNoUp to ten public model IDs to leave out of the recommendations, or null.
preferredModelIdsNoUp to ten public model IDs the user would like considered when compatible, or null.
budgetCeilingCentsNoProject budget ceiling in cents, or null when unstated; use calculate_project_budget for current comparable totals.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare read-only/non-destructive; the description goes well beyond that by disclosing that output is a capability match with editorial preference, that editorial preference is not measured quality or execution certification, that a new version never inherits a family review, and by decoding returned editorialGuidance/reviewStatus/reviewedAt/rationale/provenance. It also states the mutation-adjacent constraint of not asking for placeholders and not forcing model diversity.

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

Conciseness3/5

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

One dense wall of text with the usage trigger front-loaded, which is good, but it repeats the same caveat family multiple times (editorial preference is not quality; not an exact quote/generation command; recommendations are capability matches) and mixes call-time guidance with output-interpretation guidance. For an advisory tool the volume is heavier than needed and sentences blur together.

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

Completeness4/5

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

No output schema exists, so the description carries extra weight and does explain the key returned concepts (editorialGuidance categories, reviewStatus, reviewedAt, rationale, provenance) plus the mode-validation and budget-comparison workflow. It stops short of describing the full response shape or failure modes, leaving a small gap for a 13-parameter tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter interpretation rules the schema does not fully carry: nullable constraints must be null or omitted rather than placeholder values, and only missing choices that change result or budget should be asked for. It reinforces meaning for priorities and budgetCeilingCents by routing cost questions to calculate_project_budget instead of filling lower_cost.

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

Purpose5/5

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

The opening sentence states a specific function (advise on / recommend AI video-image models for a creative goal) and distinguishes it from siblings by naming get_model_details for validation and calculate_project_budget for pricing. An agent can tell instantly that this is an advisory recommender, not a lister (list_models) or a detail lookup (get_model_details).

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

Usage Guidelines5/5

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

Explicit trigger ('when the user is undecided or asks for advice'), explicit exclusion ('Do not use when the user already chose a compatible model for validation, pricing or execution'), and named alternatives with conditions for delegating to get_model_details and calculate_project_budget. It also states a hard rule: never substitute a named model without user approval.

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.

  1. 1 tool update
    • Addedcompare_generation_prices
  2. 1 tool update
    • Changedprepare_generation1 field changed
      • changedInput schema / properties / settings / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Canonical MaxVideoAI settings only. Read the selected mode from get_model_details and include only compatible fields.",
        -    "properties": {
        -      "aspectRatio": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "If the selected mode aspectRatios list is non-empty, use one supported value. If it is empty, send null or omit this field."
        -      },
        -      "audio": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "Send only when the selected mode reports audio as optional; send null or omit when always_generated or unavailable."
        -      },
        -      "background": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "auto",
        -              "transparent",
        -              "opaque"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "Use only when get_model_details reports a background setting for the selected image model."
        -      },
        -      "cameraFixed": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "cfgScale": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "contextSec": {
        -        "anyOf": [
        -          {
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "cropEndX": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "cropEndY": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "cropStartX": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "cropStartY": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "durationSec": {
        -        "anyOf": [
        -          {
        -            "maximum": 86400,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "For video modes, use the exact key settings.durationSec for the requested duration in seconds; never send settings.duration. Send null when not applicable."
        -      },
        -      "editDepthBlur": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editFace": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editKeyframeIndexes": {
        -        "anyOf": [
        -          {
        -            "maxLength": 4096,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editNormalsAugmentation": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editPoseStrength": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editStrength": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "editTrajectorySparsity": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "enableWebSearch": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "exrExport": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "extendPosition": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "start",
        -              "end"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "fps": {
        -        "anyOf": [
        -          {
        -            "maximum": 240,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "guidanceScale": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "hdr": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "imageHeight": {
        -        "anyOf": [
        -          {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "GPT Image family only: custom output height in pixels when resolution is custom."
        -      },
        -      "imageWidth": {
        -        "anyOf": [
        -          {
        -            "exclusiveMinimum": 0,
        -            "maximum": 9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "GPT Image family only: custom output width in pixels when resolution is custom."
        -      },
        -      "limitGenerations": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "loop": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "modifyStrength": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "multiPrompt": {
        -        "anyOf": [
        -          {
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "durationSec": {
        -                  "maximum": 15,
        -                  "minimum": 1,
        -                  "type": "integer"
        -                },
        -                "prompt": {
        -                  "maxLength": 512,
        -                  "minLength": 1,
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "prompt",
        -                "durationSec"
        -              ],
        -              "type": "object"
        -            },
        -            "maxItems": 6,
        -            "minItems": 1,
        -            "type": "array"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "Kling multi-shot scenes. Use only when get_model_details reports the multiPrompt setting; otherwise send null or omit it. Omit the top-level prompt text content for this form."
        -      },
        -      "negativePrompt": {
        -        "anyOf": [
        -          {
        -            "maxLength": 4096,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "numFrames": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": 1,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "outputFormat": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "promptExpansionMode": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "balanced",
        -              "quality"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "Use only when get_model_details reports the promptExpansionMode setting for the selected mode."
        -      },
        -      "quality": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "reframeGridPositionX": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "reframeGridPositionY": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "resolution": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null,
        -        "description": "Use one resolution supported by the selected mode from get_model_details, or null when not applicable."
        -      },
        -      "retakeMode": {
        -        "anyOf": [
        -          {
        -            "enum": [
        -              "replace_audio",
        -              "replace_video",
        -              "replace_audio_and_video"
        -            ],
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "safetyChecker": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "seed": {
        -        "anyOf": [
        -          {
        -            "maximum": 9007199254740991,
        -            "minimum": -9007199254740991,
        -            "type": "integer"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "shotType": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "sourcePositionHeight": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "sourcePositionWidth": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "sourcePositionX": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "sourcePositionY": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "startTimeSec": {
        -        "anyOf": [
        -          {
        -            "minimum": 0,
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "style": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "thinkingLevel": {
        -        "anyOf": [
        -          {
        -            "maxLength": 64,
        -            "minLength": 1,
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      },
        -      "watermark": {
        -        "anyOf": [
        -          {
        -            "type": "boolean"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "default": null
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Canonical MaxVideoAI settings only. Read the selected mode from get_model_details and include only compatible fields.",
        +    "properties": {
        +      "aspectRatio": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "If the selected mode aspectRatios list is non-empty, use one supported value. If it is empty, send null or omit this field."
        +      },
        +      "audio": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Send only when the selected mode reports audio as optional; send null or omit when always_generated or unavailable."
        +      },
        +      "background": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "auto",
        +              "transparent",
        +              "opaque"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Use only when get_model_details reports a background setting for the selected image model."
        +      },
        +      "cameraFixed": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "cfgScale": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "contextSec": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "cropEndX": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "cropEndY": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "cropStartX": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "cropStartY": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "documentUrl": {
        +        "anyOf": [
        +          {
        +            "format": "uri",
        +            "maxLength": 4096,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Public HTTPS document reference; use only when reported by get_model_details. Mutually exclusive with webpageUrl and requires prompt expansion."
        +      },
        +      "durationSec": {
        +        "anyOf": [
        +          {
        +            "maximum": 86400,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "For video modes, use the exact key settings.durationSec for the requested duration in seconds; never send settings.duration. Send null when not applicable."
        +      },
        +      "editDepthBlur": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editFace": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editKeyframeIndexes": {
        +        "anyOf": [
        +          {
        +            "maxLength": 4096,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editNormalsAugmentation": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editPoseStrength": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editStrength": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "editTrajectorySparsity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "enablePromptExpansion": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "enableWebSearch": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "exrExport": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "extendPosition": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "start",
        +              "end"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "fps": {
        +        "anyOf": [
        +          {
        +            "maximum": 240,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "guidanceScale": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "hdr": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "imageHeight": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "GPT Image family only: custom output height in pixels when resolution is custom."
        +      },
        +      "imageWidth": {
        +        "anyOf": [
        +          {
        +            "exclusiveMinimum": 0,
        +            "maximum": 9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "GPT Image family only: custom output width in pixels when resolution is custom."
        +      },
        +      "limitGenerations": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "loop": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "modifyStrength": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "multiPrompt": {
        +        "anyOf": [
        +          {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "durationSec": {
        +                  "maximum": 15,
        +                  "minimum": 1,
        +                  "type": "integer"
        +                },
        +                "prompt": {
        +                  "maxLength": 512,
        +                  "minLength": 1,
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "prompt",
        +                "durationSec"
        +              ],
        +              "type": "object"
        +            },
        +            "maxItems": 6,
        +            "minItems": 1,
        +            "type": "array"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Kling multi-shot scenes. Use only when get_model_details reports the multiPrompt setting; otherwise send null or omit it. Omit the top-level prompt text content for this form."
        +      },
        +      "negativePrompt": {
        +        "anyOf": [
        +          {
        +            "maxLength": 4096,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "numFrames": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": 1,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "outputFormat": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "promptExpansionMode": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "disabled",
        +              "balanced",
        +              "quality"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Use only when get_model_details reports the promptExpansionMode setting for the selected mode."
        +      },
        +      "quality": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "reframeGridPositionX": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "reframeGridPositionY": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "resolution": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Use one resolution supported by the selected mode from get_model_details, or null when not applicable."
        +      },
        +      "retakeMode": {
        +        "anyOf": [
        +          {
        +            "enum": [
        +              "replace_audio",
        +              "replace_video",
        +              "replace_audio_and_video"
        +            ],
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "safetyChecker": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "seed": {
        +        "anyOf": [
        +          {
        +            "maximum": 9007199254740991,
        +            "minimum": -9007199254740991,
        +            "type": "integer"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "shotType": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "sourcePositionHeight": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "sourcePositionWidth": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "sourcePositionX": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "sourcePositionY": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "startTimeSec": {
        +        "anyOf": [
        +          {
        +            "minimum": 0,
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "style": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "thinkingLevel": {
        +        "anyOf": [
        +          {
        +            "maxLength": 64,
        +            "minLength": 1,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "watermark": {
        +        "anyOf": [
        +          {
        +            "type": "boolean"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "webpageUrl": {
        +        "anyOf": [
        +          {
        +            "format": "uri",
        +            "maxLength": 4096,
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null,
        +        "description": "Public HTTPS webpage reference without login; use only when reported by get_model_details. Mutually exclusive with documentUrl and requires prompt expansion."
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  3. 1 tool update
    • Changedrecommend_models1 field changed
      • changedInput schema / properties / priorities / description
        Previous value: -"Ordered user-stated factual priorities, most important first, or null when unstated. highest_resolution applies only when delivery resolution matters and is not a proxy for overall creative quality. Use lower_cost to request a project budget, not a price guess."New value: +"Ordered user-stated factual priorities, most important first, or null when none of these values matches. For beautiful cinematography, expressive acting or smooth camera movement without an explicit listed priority, use null. highest_resolution requires a delivery-resolution preference such as 4K; it is not a proxy for overall creative quality. lower_cost requests a budget comparison when cheaper options are explicitly wanted. Asking what a project costs does not mean prefer the cheapest: keep priorities null and use calculate_project_budget for the estimate."
  4. 15 tool updates
    • First observedcalculate_project_budget
    • First observedconfirm_generation
    • First observedcreate_reference_upload_link
    • First observedcreate_topup_link
    • First observedget_account_status
    • First observedget_generation_download
    • First observedget_generation_status
    • First observedget_model_details
    • First observedimport_reference_files
    • First observedlist_media
    • First observedlist_models
    • First observedlist_recent_generations
    • First observedprepare_generation
    • First observedpresent_generation
    • First observedrecommend_models

Publisher details

Operator
MaxVideoAI
Vendor relationship
First-party
Trust center
Unknown
Restrictions
A MaxVideoAI account and browser OAuth authorization are required. Paid generation starts only after the user approves the exact current quote. · Publisher source

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.