{
  "name": "QuokkaPix",
  "surface": "video",
  "contractVersion": "1.7.0",
  "url": "https://video.quokkapix.com/#agent=1",
  "serviceContract": "https://quokkapix.com/agent-manifest.json",
  "surfaces": {
    "image": {
      "origin": "https://quokkapix.com",
      "agentUrl": "https://quokkapix.com/#agent=1",
      "manifest": "https://quokkapix.com/agent-manifest.json",
      "runtimeGlobal": "window.QuokkaPixAgent"
    },
    "video": {
      "origin": "https://video.quokkapix.com",
      "agentUrl": "https://video.quokkapix.com/#agent=1",
      "manifest": "https://video.quokkapix.com/agent-manifest.json",
      "runtimeGlobal": "window.QuokkaPixVideoAgent",
      "active": true
    }
  },
  "execution": {
    "type": "browser-only",
    "serverProcessing": false,
    "fileUpload": "Upload through the browser file input or dropzone.",
    "privacy": "Source and output media bytes remain on the user's device."
  },
  "limits": {
    "filesPerRun": 1,
    "maxTranscriptionSeconds": 2700
  },
  "payment": {
    "version": "2.0",
    "currency": "USDC",
    "image": {
      "freeFiles": 5,
      "mediumFiles": 25,
      "maxFiles": 50,
      "freePdfPages": 20,
      "mediumPdfPages": 50,
      "maxPdfPages": 300,
      "scenarioPrice": "0.02"
    },
    "video": {
      "freeSeconds": 300,
      "mediumSeconds": 900,
      "largeSeconds": 1800,
      "maxTranscriptionSeconds": 2700
    },
    "composition": {
      "chargeOncePerRun": true,
      "useHighestApplicableTier": true,
      "transcriptionPlusBurn": "transcription-tier",
      "burnExistingTranscript": "video-edit-tier",
      "webMcpSurcharge": false,
      "bridgeSurcharge": false
    },
    "products": {
      "image-standard": {
        "id": "image-standard",
        "scope": "agent-image-standard-run",
        "surface": "image",
        "price": "0.01",
        "currency": "USDC",
        "description": "Image run with 6-25 files or a PDF with 21-50 pages"
      },
      "image-large": {
        "id": "image-large",
        "scope": "agent-image-large-run",
        "surface": "image",
        "price": "0.02",
        "currency": "USDC",
        "description": "Image run with 26-50 files or a PDF with more than 50 pages"
      },
      "image-scenario": {
        "id": "image-scenario",
        "scope": "agent-image-scenario-run",
        "surface": "image",
        "price": "0.02",
        "currency": "USDC",
        "description": "One multi-step Image scenario run"
      },
      "video-standard": {
        "id": "video-standard",
        "scope": "agent-video-standard-run",
        "surface": "video",
        "price": "0.01",
        "currency": "USDC",
        "description": "Video edit over 5 and up to 15 minutes"
      },
      "video-medium": {
        "id": "video-medium",
        "scope": "agent-video-medium-run",
        "surface": "video",
        "price": "0.02",
        "currency": "USDC",
        "description": "Video edit over 15 and up to 30 minutes"
      },
      "video-long": {
        "id": "video-long",
        "scope": "agent-video-long-run",
        "surface": "video",
        "price": "0.03",
        "currency": "USDC",
        "description": "Video edit over 30 minutes"
      },
      "video-transcribe-standard": {
        "id": "video-transcribe-standard",
        "scope": "agent-video-transcribe-standard-run",
        "surface": "video",
        "price": "0.02",
        "currency": "USDC",
        "description": "Transcription over 5 and up to 15 minutes"
      },
      "video-transcribe-medium": {
        "id": "video-transcribe-medium",
        "scope": "agent-video-transcribe-medium-run",
        "surface": "video",
        "price": "0.04",
        "currency": "USDC",
        "description": "Transcription over 15 and up to 30 minutes"
      },
      "video-transcribe-long": {
        "id": "video-transcribe-long",
        "scope": "agent-video-transcribe-long-run",
        "surface": "video",
        "price": "0.06",
        "currency": "USDC",
        "description": "Transcription over 30 and up to 45 minutes"
      }
    }
  },
  "tools": [
    "cut",
    "crop",
    "convert",
    "compress",
    "audio",
    "transcribe"
  ],
  "discovery": {
    "llms": "https://video.quokkapix.com/llms.txt",
    "guide": "https://video.quokkapix.com/agents.html",
    "markdownGuide": "https://video.quokkapix.com/agents.md",
    "recipes": "https://video.quokkapix.com/agent-recipes/index.json",
    "rules": "https://video.quokkapix.com/rules/index.json",
    "compatibilityTest": "https://video.quokkapix.com/agent-test.html",
    "compatibilityMatrix": "https://video.quokkapix.com/browser-compatibility/",
    "benchmark": "https://video.quokkapix.com/browser-video-processing-benchmark/",
    "benchmarkProfile": "https://video.quokkapix.com/benchmarks/profile.json",
    "aiCatalog": "https://video.quokkapix.com/.well-known/ai-catalog.json"
  },
  "urlConfiguration": {
    "payloadParameter": "settings",
    "encoding": "UTF-8 JSON encoded as base64url",
    "scope": "All settings accepted by applySettings(), including segments, speed curves, crop transforms, compression, audio mixing and subtitle burn settings.",
    "simpleParameters": [
      "tool",
      "recipe",
      "lang",
      "start",
      "end",
      "action",
      "timeline-zoom",
      "audio-linked",
      "width",
      "height",
      "fit",
      "zoom",
      "offset-x",
      "offset-y",
      "rotation",
      "flip-x",
      "flip-y",
      "format",
      "quality",
      "resolution",
      "target-mb",
      "audio-mode",
      "audio-volume",
      "audio-format",
      "music-volume",
      "music-start",
      "music-trim-start",
      "music-trim-end",
      "fade-in",
      "fade-out",
      "loop-music",
      "transcript-language",
      "transcript-format",
      "burn-subtitles",
      "subtitle-position",
      "subtitle-size",
      "subtitle-color",
      "subtitle-style",
      "subtitle-background",
      "subtitle-lines"
    ]
  },
  "terminalStatuses": [
    "done",
    "error",
    "cancelled"
  ],
  "errorCodes": [
    "unsupported_format",
    "unsupported_codec",
    "no_video_track",
    "no_audio_track",
    "no_active_segments",
    "music_file_required",
    "memory_risk_high",
    "payment_required",
    "unlock_invalid",
    "browser_export_unavailable",
    "transcription_failed",
    "processing_cancelled",
    "processing_failed"
  ],
  "selectors": {
    "root": ".page-shell[data-agent-status]",
    "filePicker": "[data-agent='file-picker']",
    "start": "[data-agent='process-trigger']",
    "cancel": "[data-agent='cancel-trigger']",
    "clear": "[data-agent='clear-trigger']",
    "download": "[data-agent='download-link'][data-status='ready']",
    "settings": "[data-agent-setting]",
    "progress": "[data-agent-output='progress']",
    "transcript": "[data-agent-output='transcript']",
    "cropPreview": "[data-agent-output='crop-preview']",
    "musicFilePicker": "[data-agent='music-file-picker']",
    "segments": "[data-agent-output='segments']",
    "cutToolbar": "[data-agent='cut-toolbar']"
  },
  "resultQa": {
    "runtimeMethod": "window.QuokkaPixVideoAgent.getResultManifest().qa",
    "checks": [
      "browser_local_processing",
      "source_present",
      "outputs_present",
      "output_nonempty",
      "container_declared",
      "encoded_output_readback",
      "resolution",
      "duration",
      "recipe_rule_profile"
    ]
  },
  "localMcp": {
    "status": "supported",
    "minimumVersion": "0.5.0",
    "paymentMinimumVersion": "0.7.0",
    "guide": "https://quokkapix.com/mcp-runner.html",
    "tools": [
      "list_video_recipes",
      "get_video_recipe",
      "validate_video_recipe",
      "list_video_rule_profiles",
      "get_video_rule_profile",
      "validate_video_result_manifest",
      "process_video",
      "process_video_with_settings"
    ]
  },
  "remoteMcp": {
    "status": "supported",
    "minimumBridgeVersion": "0.7.0",
    "endpoint": "https://quokkapix.com/mcp",
    "transport": "MCP Streamable HTTP",
    "authorization": "OAuth authorization code with PKCE",
    "scopes": {
      "read": "mcp:tools",
      "execute": "bridge:execute"
    },
    "mediaBytesRelayed": false,
    "tools": [
      "list_video_recipes",
      "get_video_recipe",
      "validate_video_recipe",
      "list_video_rule_profiles",
      "get_video_rule_profile",
      "validate_video_result_manifest",
      "process_video",
      "process_video_with_settings"
    ]
  },
  "runtimeApi": [
    "getContract",
    "getState",
    "getResultManifest",
    "getPaymentPolicy",
    "getPaymentQuote",
    "setUnlockToken",
    "clearUnlockToken",
    "verifyUnlockToken",
    "listRecipes",
    "listRuleProfiles",
    "getRuleProfile",
    "getRecipe",
    "validateRecipe",
    "applyRecipe",
    "applySettings",
    "buildUrl",
    "start",
    "cancel",
    "clear",
    "getEvents",
    "clearEvents"
  ],
  "webMcp": {
    "status": "experimental",
    "interface": "document.modelContext.registerTool",
    "fallback": "Use window.QuokkaPixVideoAgent and stable data-agent selectors.",
    "tools": [
      "quokkapix.video.get_contract",
      "quokkapix.video.get_state",
      "quokkapix.video.get_result_manifest",
      "quokkapix.video.get_payment_policy",
      "quokkapix.video.get_payment_quote",
      "quokkapix.video.set_unlock_token",
      "quokkapix.video.list_recipes",
      "quokkapix.video.list_rule_profiles",
      "quokkapix.video.get_rule_profile",
      "quokkapix.video.get_recipe",
      "quokkapix.video.validate_recipe",
      "quokkapix.video.apply_recipe",
      "quokkapix.video.apply_settings",
      "quokkapix.video.start",
      "quokkapix.video.cancel",
      "quokkapix.video.clear"
    ]
  },
  "serviceModel": "one-service-multiple-browser-surfaces",
  "activeSurface": "video",
  "recipes": {
    "catalog": "https://video.quokkapix.com/agent-recipes/index.json",
    "count": 13
  },
  "ruleProfiles": {
    "catalog": "https://video.quokkapix.com/rules/index.json",
    "count": 3
  }
}
