Skip to main content
Glama
Wiro MCP Server

Wiro MCP Server

Official
by wiroai

Run a Wiro model

run_model

Executes AI models on Wiro for image, video, text, audio, and 3D tasks; first fetch the model schema, then submit model-specific parameters and optionally wait for results.

Instructions

Run any AI model on Wiro. Supports image, video, text, audio, 3D, and more. Call get_model_schema first. With wait=true this performs a bounded wait; when the response contains nextAction.tool = "wait_for_task", call that tool with the exact arguments returned. Do not resubmit the original request. A completed tool-call turn instead returns a run_model continuation template; execute its calls, fill its toolOutputs, and invoke it once. When the task completes, present every returned media resource in the user-facing response instead of reporting only task metadata.

Input Schema

NameRequiredDescriptionDefault
waitNoIf true, poll until completion and return the result. If false, return the task identifiers immediately.
modelYesModel slug in "owner/model" format, e.g. "google/veo3-1", "google/nano-banana-pro"
paramsYesModel-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. Pass json and json-array parameters as structured JSON values in this same object. File parameters take public URLs, no upload needed: one URL for fileinput, an array of URLs for combinefileinput, and for multifileinput the URLs comma-separated in its matching ...UrlMultiple field. A parameter you leave out gets the default get_model_schema shows for it. A run fills nothing for the ones it marks as samples (file fields, ids that contain "input", the prompt and the LLM chat fields), picks a random seed, and refuses a required parameter that is missing. To continue a chat, send the same session_id with the next prompt, without previousTaskToken. A turn that ended with tool calls is continued with previousTaskToken, toolOutputs rows (call_id and output) and the same session_id, as its nextAction shows.
timeout_secondsNoMaximum seconds to wait when wait=true. The 45-second default is safe for clients with a 60-second tool timeout.

Output Schema

NameRequiredDescriptionDefault
taskYes
errorNo
stateYes
outputsYes
responseNo
nextActionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv1.4.1
    • changedInput schema / properties / model / description
      Previous value: -"Model slug in \"owner/model\" format, e.g. \"openai/sora-2\", \"google/nano-banana-pro\""New value: +"Model slug in \"owner/model\" format, e.g. \"google/veo3-1\", \"google/nano-banana-pro\""
    • changedInput schema / properties / params / description
      Previous value: -"Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. Pass json and json-array parameters as structured JSON values in this same object. Continue a completed turn with previousTaskToken: add toolOutputs rows with call_id and output for tool results, or provide exactly one new prompt or non-empty messages value for a stateful next turn. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs."New value: +"Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. Pass json and json-array parameters as structured JSON values in this same object. File parameters take public URLs, no upload needed: one URL for fileinput, an array of URLs for combinefileinput, and for multifileinput the URLs comma-separated in its matching ...UrlMultiple field. A parameter you leave out gets the default get_model_schema shows for it. A run fills nothing for the ones it marks as samples (file fields, ids that contain \"input\", the prompt and the LLM chat fields), picks a random seed, and refuses a required parameter that is missing. To continue a chat, send the same session_id with the next prompt, without previousTaskToken. A turn that ended with tool calls is continued with previousTaskToken, toolOutputs rows (call_id and output) and the same session_id, as its nextAction shows."
    • removedOutput schema / properties / outputs / items / properties / url / format
      Removed value: -"uri"
    • addedOutput schema / properties / task / properties / chargedUsd
      Added value: +{
      +  "description": "What the payer was charged, after any discount.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / task / properties / costUsd / description
      Added value: +"The model's list price for this task."
  2. Changed4 schema fields changedv1.3.0
    • changedInput schema / properties / params / description
      Previous value: -"Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs."New value: +"Model-specific parameters as key-value pairs. Use get_model_schema to discover available parameters. Pass json and json-array parameters as structured JSON values in this same object. Continue a completed turn with previousTaskToken: add toolOutputs rows with call_id and output for tool results, or provide exactly one new prompt or non-empty messages value for a stateful next turn. For file parameters (fileinput, multifileinput, combinefileinput), pass URLs directly — no upload needed. For combinefileinput, pass an array of URLs."
    • addedOutput schema / properties / outputs / items / properties / finishreason
      Added value: +{
      +  "enum": [
      +    "stop",
      +    "tool_calls",
      +    "length",
      +    "content_filter",
      +    "error"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / outputs / items / properties / segments
      Added value: +{
      +  "items": {
      +    "anyOf": [
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "text": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "enum": [
      +              "thinking",
      +              "answer"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "arguments": {
      +            "type": "string"
      +          },
      +          "call_id": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "enum": [
      +              "in_progress",
      +              "completed",
      +              "incomplete"
      +            ],
      +            "type": "string"
      +          },
      +          "type": {
      +            "const": "function_call",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "id",
      +          "call_id",
      +          "name",
      +          "arguments",
      +          "status"
      +        ],
      +        "type": "object"
      +      },
      +      {
      +        "additionalProperties": false,
      +        "properties": {
      +          "call_id": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "input": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "status": {
      +            "$ref": "#/properties/outputs/items/properties/segments/items/anyOf/1/properties/status"
      +          },
      +          "type": {
      +            "const": "custom_tool_call",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "id",
      +          "call_id",
      +          "name",
      +          "input",
      +          "status"
      +        ],
      +        "type": "object"
      +      }
      +    ]
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / outputs / items / properties / usage
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "input_tokens": {
      +      "maximum": 1000000000000000,
      +      "minimum": 0,
      +      "type": "integer"
      +    },
      +    "input_tokens_details": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "audio_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "cache_write_1h_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "cache_write_5m_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "cache_write_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "cached_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "image_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "text_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "video_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "output_tokens": {
      +      "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +    },
      +    "output_tokens_details": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "accepted_prediction_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "audio_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "image_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "reasoning_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "rejected_prediction_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "text_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "video_tokens": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "server_tool_use": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "bash_code_execution_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "code_execution_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "computer_use_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "file_search_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "image_generation_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "text_editor_code_execution_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "web_fetch_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        },
      +        "web_search_requests": {
      +          "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "total_tokens": {
      +      "$ref": "#/properties/outputs/items/properties/usage/properties/input_tokens"
      +    }
      +  },
      +  "required": [
      +    "input_tokens",
      +    "output_tokens",
      +    "total_tokens"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv1.2.3
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  4. Changed4 schema fields changedv1.2.1
    • changedInput schema / properties / timeout_seconds / default
      Previous value: -120New value: +45
    • changedInput schema / properties / timeout_seconds / description
      Previous value: -"Max seconds to wait for completion (only when wait=true)"New value: +"Maximum seconds to wait when wait=true. The 45-second default is safe for clients with a 60-second tool timeout."
    • changedInput schema / properties / wait / description
      Previous value: -"If true, poll until completion and return result. If false, return task token immediately."New value: +"If true, poll until completion and return the result. If false, return the task identifiers immediately."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "error": {
      +      "type": "string"
      +    },
      +    "nextAction": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "arguments": {
      +          "additionalProperties": {},
      +          "type": "object"
      +        },
      +        "reason": {
      +          "type": "string"
      +        },
      +        "tool": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tool",
      +        "arguments",
      +        "reason"
      +      ],
      +      "type": "object"
      +    },
      +    "outputs": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "kind": {
      +            "enum": [
      +              "image",
      +              "video",
      +              "audio",
      +              "text",
      +              "file"
      +            ],
      +            "type": "string"
      +          },
      +          "mimeType": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "sizeBytes": {
      +            "anyOf": [
      +              {
      +                "minimum": 0,
      +                "type": "integer"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          },
      +          "text": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "format": "uri",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "mimeType",
      +          "sizeBytes",
      +          "kind"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "response": {
      +      "type": "string"
      +    },
      +    "state": {
      +      "enum": [
      +        "submitted",
      +        "running",
      +        "completed",
      +        "failed",
      +        "cancelled"
      +      ],
      +      "type": "string"
      +    },
      +    "task": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "costUsd": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "durationSeconds": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "exitCode": {
      +          "type": "string"
      +        },
      +        "id": {
      +          "type": "string"
      +        },
      +        "model": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "type": "string"
      +        },
      +        "token": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "task",
      +    "outputs"
      +  ],
      +  "type": "object"
      +}
  5. First observedv1.1.4

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare the non-read-only, open-world, non-idempotent profile, and the description adds real behavioral context beyond them: bounded waiting, async task identifiers when wait=false, the continuation-token flow, and the no-resubmit rule. It omits cost/credit implications of running a model (despite a get_task_price sibling) and what happens on timeout or partial failure, which are material for a paid, non-idempotent run.

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

Conciseness4/5

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

Front-loaded with purpose, then prerequisites, then the branching follow-up logic; each sentence carries operational weight. It is dense and instruction-heavy, with the final media-presentation directive sitting somewhat apart from the tool's own invocation semantics, but nothing is redundant.

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 an output schema present, return-value explanation is not required, and the description covers the genuinely hard parts: model discovery, async vs. wait, and multi-turn continuation. Remaining gaps are cost awareness and timeout/failure handling for a non-idempotent, billable operation.

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% and the params field is documented in depth there, so the baseline applies. The description's mention of wait=true and the session_id/toolOutputs continuation mechanics restates or lightly contextualizes what the schema already spells out rather than adding new parameter semantics.

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

Purpose5/5

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

States a specific verb and resource ('Run any AI model on Wiro') plus the supported media modalities, which immediately separates it from siblings like search_models, get_model_schema, and wait_for_task. The prerequisite ('Call get_model_schema first') further pins down its role in the tool graph.

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?

Explicitly routes the agent: use get_model_schema before calling, use wait_for_task with the returned arguments when nextAction.tool indicates it, and do not resubmit the original request. It also tells the agent how to handle the continuation-template path and what to present on completion, covering both when-to-use and when-not-to-resubmit.

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