UnblurVideo

Use UnblurVideo with your Agent

Connect remote MCP, use the CLI, or install the skill. Every entry point uses the same account and product API.

Remote MCP

Add this URL to your client, then sign in and review the permissions. No local MCP server is required.

https://unblurvideo.com/mcp

Codex CLI

codex mcp add unblurvideo --url https://unblurvideo.com/mcp
codex mcp login unblurvideo

Grok Build

grok mcp add --transport http unblurvideo https://unblurvideo.com/mcp

Open Grok Build and authorize when prompted. You can also open /mcps and use its sign-in action.

Start with a read-only usage action before submitting work. Review or revoke connected Agents.

CLI

Requires Node.js 22 or later. Create a project API key in API keys, then set UNBLURVIDEO_API_KEY through your secret store. Keep credentials out of request files and command arguments.

npm install -g unblurvideo-client
unblurvideo --help
  • unblurvideo usage --request request.json — Read your remaining account credits.
  • unblurvideo upload --request request.json — Reserve an account-owned upload and return a private 10-minute PUT link. Send the raw MP4 bytes to that URL outside MCP. Requires enough credits for a preview; capped at 3 active and 10 uploads per account per day. Supply fileId to renew an unused upload link.
  • unblurvideo files --request request.json — List recent unexpired uploads for this account. Use after a lost upload response before reserving another file.
  • unblurvideo file --request request.json — Read metadata and readiness of your uploaded video.
  • unblurvideo quote --request request.json — Get a server-calculated price before generating a preview or full video.
  • unblurvideo enhance --request request.json — Start one paid asynchronous video enhancement using an accepted quote. Save the returned task ID; never retry with a new request ID automatically.
  • unblurvideo job --request request.json — Read status and settlement of your task after a disconnect.
  • unblurvideo delete --request request.json — Delete your input and related results. Future access stops immediately; provider copies follow their own retention policy.
  • unblurvideo result --request request.json — Get a private 10-minute download URL for a completed video. Download outside MCP; keep the URL out of logs.

Successful output is JSON; errors go to stderr with a nonzero exit code. Use --request-id to identify one intended call. Billable requests are never retried automatically.

Existing local MCP configurations can continue using unblurvideo mcp with the API key in the client's secret environment.

npm install -g unblurvideo-client@latest
npm uninstall -g unblurvideo-client

Skill

The skill teaches an Agent when and how to use these actions. It contains public instructions and fictional examples. It does not contain credentials or grant access.

unblurvideo skill install --target codex
# Or for Grok Build:
unblurvideo skill install --target grok
npx unblurvideo-client skill install --target codex

The installer uses the shared ~/.agents/skills/unblurvideo/ directory. Restart your Agent session to discover the skill. Connect remote MCP or configure the CLI key separately.

Download the public SKILL.md for manual installation. Re-running the installer updates an unmodified managed skill; edited files are protected.

unblurvideo skill uninstall --target codex

Available actions

unblurvideo_usage

Read your remaining account credits.

Input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

unblurvideo_upload

Reserve an account-owned upload and return a private 10-minute PUT link. Send the raw MP4 bytes to that URL outside MCP. Requires enough credits for a preview; capped at 3 active and 10 uploads per account per day. Supply fileId to renew an unused upload link.

Input schema
{
  "type": "object",
  "properties": {
    "filename": {
      "type": "string",
      "pattern": "\\.mp4$",
      "maxLength": 160
    },
    "bytes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 95000000
    },
    "fileId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    }
  },
  "required": [],
  "additionalProperties": false,
  "oneOf": [
    {
      "required": [
        "filename",
        "bytes"
      ],
      "not": {
        "required": [
          "fileId"
        ]
      }
    },
    {
      "required": [
        "fileId"
      ],
      "not": {
        "anyOf": [
          {
            "required": [
              "filename"
            ]
          },
          {
            "required": [
              "bytes"
            ]
          }
        ]
      }
    }
  ]
}

unblurvideo_files

List recent unexpired uploads for this account. Use after a lost upload response before reserving another file.

Input schema
{
  "type": "object",
  "properties": {},
  "required": [],
  "additionalProperties": false
}

unblurvideo_file

Read metadata and readiness of your uploaded video.

Input schema
{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    }
  },
  "required": [
    "fileId"
  ],
  "additionalProperties": false
}

unblurvideo_quote

Get a server-calculated price before generating a preview or full video.

Input schema
{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    },
    "kind": {
      "type": "string",
      "enum": [
        "preview",
        "full"
      ]
    },
    "start": {
      "type": "number",
      "minimum": 0
    }
  },
  "required": [
    "fileId",
    "kind"
  ],
  "additionalProperties": false
}

unblurvideo_enhance

Start one paid asynchronous video enhancement using an accepted quote. Save the returned task ID; never retry with a new request ID automatically.

Input schema
{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    },
    "kind": {
      "type": "string",
      "enum": [
        "preview",
        "full"
      ]
    },
    "start": {
      "type": "number",
      "minimum": 0
    },
    "acceptedCredits": {
      "type": "integer",
      "minimum": 1
    },
    "policyRevision": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "request_id": {
      "type": "string",
      "pattern": "^[a-zA-Z0-9_-]{1,100}$"
    }
  },
  "required": [
    "fileId",
    "kind",
    "acceptedCredits",
    "policyRevision",
    "request_id"
  ],
  "additionalProperties": false
}

unblurvideo_job

Read status and settlement of your task after a disconnect.

Input schema
{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    }
  },
  "required": [
    "jobId"
  ],
  "additionalProperties": false
}

unblurvideo_delete

Delete your input and related results. Future access stops immediately; provider copies follow their own retention policy.

Input schema
{
  "type": "object",
  "properties": {
    "fileId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    }
  },
  "required": [
    "fileId"
  ],
  "additionalProperties": false
}

unblurvideo_result

Get a private 10-minute download URL for a completed video. Download outside MCP; keep the URL out of logs.

Input schema
{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "pattern": "^[a-f0-9-]{36}$"
    }
  },
  "required": [
    "jobId"
  ],
  "additionalProperties": false
}

Usage and recovery

Uses existing UnblurVideo credits. A 3-second preview costs 6 credits. Full-video price depends on verified duration and resolution; request a quote. Failed processing restores credits. Agent connections cannot purchase credits.

  • Authentication expired: reconnect or check your API key.
  • Insufficient quota: stop and review your balance. Connections cannot buy credits automatically.
  • Connection lost: check usage or the returned task ID before starting a new billable request.
  • Async actions: keep the returned task ID and query its status. A dropped connection does not cancel the task.

Task support depends on the published actions above. Process only SFW videos you have permission to use. Inputs go to UnblurVideo and its video processing providers. Request a quote and explicit approval before spending credits. Never automatically repeat paid work with a new request ID. Keep task IDs for recovery. Files expire after 24 hours.

Data handling