Spy Tool — SwipeHarbor

Guide

Use Mirvio from an AI client with MCP.

The Mirvio MCP server lets an MCP client run the cloud reframe, compress, and metadata jobs on your account. It uses the same cloud-output allowance as the web tools. A free account includes 5 cloud outputs, once. Paid plans include a monthly allowance. See pricing.

1. Create a token

  1. Sign in and open Account.
  2. Under “MCP access for AI clients”, enter a name and select Create token.
  3. Copy the token. Mirvio shows it only once and stores only a hash.
  4. To stop access, select Revoke. The next request with that token fails.

The token goes in your client configuration, not in a chat message. Do not share it. Each token can only use your own uploads, jobs, and allowance.

2. Add the server to your client

Endpoint: https://mirvio.ai/api/mcp (Streamable HTTP, stateless). Put the token in an environment variable named MIRVIO_MCP_TOKEN.

Claude Code

claude mcp add --transport http mirvio https://mirvio.ai/api/mcp \
  --header "Authorization: Bearer $MIRVIO_MCP_TOKEN"

Cursor (~/.cursor/mcp.json)

{
  "mcpServers": {
    "mirvio": {
      "url": "https://mirvio.ai/api/mcp",
      "headers": { "Authorization": "Bearer ${env:MIRVIO_MCP_TOKEN}" }
    }
  }
}

VS Code (.vscode/mcp.json)

{
  "inputs": [
    { "type": "promptString", "id": "mirvio-token", "description": "Mirvio MCP token", "password": true }
  ],
  "servers": {
    "mirvio": {
      "type": "http",
      "url": "https://mirvio.ai/api/mcp",
      "headers": { "Authorization": "Bearer ${input:mirvio-token}" }
    }
  }
}

OpenAI Codex CLI (~/.codex/config.toml)

[mcp_servers.mirvio]
url = "https://mirvio.ai/api/mcp"
bearer_token_env_var = "MIRVIO_MCP_TOKEN"

Claude Desktop and other stdio-only clients

Use the mcp-remote bridge (requires Node.js):

{
  "mcpServers": {
    "mirvio": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mirvio.ai/api/mcp",
               "--header", "Authorization:${AUTH_HEADER}"],
      "env": { "AUTH_HEADER": "Bearer paste-your-token-here" }
    }
  }
}

3. Run a job

  1. Ask your client to call get_account to see your remaining cloud outputs.
  2. create_upload returns a signed address and a curl command. The client runs the command on your computer. The upload returns a receipt.
  3. confirm_upload takes that receipt.
  4. submit_jobs queues the jobs. Each job uses one cloud output. The client must set acknowledgeVideoJobs to the exact number of jobs, or the request fails without a charge. A repeated requestKey returns the first batch without a second charge.
  5. get_job_status shows progress. Jobs run asynchronously, usually within a few minutes. A job that fails, or a queued job that does not finish within 6 hours, returns its cloud output. A finished job keeps its charge, even if its result expires before you download it.
  6. get_download_url returns a link that works for 5 minutes. Results expire after 24 hours.

Tools and costs

ToolWhat it doesCost
get_accountPlan, remaining cloud outputs, and costsFree
create_uploadSigned upload address and a curl command for one fileFree
confirm_uploadConfirm the upload with its receiptFree
submit_jobsQueue 1–10 reframe, compress, or metadata jobs1 cloud output per job
get_job_statusStatus of each job in a batchFree
get_download_urlSigned 5-minute download link for a finished jobFree

Reframe targets 9:16, 16:9, 1:1, or 4:5 with a crop or a blurred background. Compress targets a file size from 100 KB to 1 GB. Metadata replaces device and capture tags.

Limits

  • Authentication uses a personal bearer token. Clients that connect only through OAuth, such as claude.ai web connectors and ChatGPT connectors, are not supported yet.
  • The client must be able to run curl (or another HTTP request) to upload the file.
  • Upload limits are the same as the web tools: 2 GB per file and 100 files or 10 GB a day; 250 MB per file and 20 files on the free trial.
  • Up to 10 active tokens per account.