We use essential cookies for authentication and optional analytics cookies to improve the platform. Privacy Policy

    API Documentation

    Programmatic access to VidForgeX via the MCP (Model Context Protocol) server

    Professional Plan

    Protocol Overview

    VidForgeX exposes its capabilities through an MCP server — a JSON-RPC 2.0 HTTP endpoint that AI agents and custom clients can call directly.

    POST
    https://mcp.vidforgex.com/

    Every request is a JSON-RPC 2.0 call. Use tools/list to discover available tools and tools/call to invoke them.

    The MCP server also works natively with Claude Desktop, Cursor, and any MCP-compatible AI agent — see for agent connection configs.

    Authentication

    All requests require a vfx_-prefixed API key in the Authorization header. Generate keys from your .

    Authorization: Bearer vfx_your_key_here

    Keys use the prefix vfx_ followed by 40 hex characters.

    Keys are SHA-256 hashed server-side — if lost, rotate from the dashboard.

    Maximum 10 active keys per user.

    Request Format

    Every call is a JSON-RPC 2.0 object sent in the POST body:

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "<tool_name>",
        "arguments": { ... }
      }
    }

    Response envelope

    {
      "jsonrpc": "2.0",
      "id": 1,
      "result": {
        "content": [{ "type": "text", "text": "..." }]
      }
    }

    Error envelope

    {
      "jsonrpc": "2.0",
      "id": 1,
      "error": {
        "code": -32602,
        "message": ""session_id" is required"
      }
    }

    Rate Limits

    60
    Requests / minute (standard)
    300
    Requests / minute (elevated)

    Rate limits are per API key, applied with a sliding window. Elevated limits available on request.

    Available Tools

    29 tools included with your Professional plan. Configure to get dedicated per-app analysis sections automatically included in every screen recording session.

    analyze_sessionSubmit a video for AI analysis (Tracked Apps auto-applied for screen recording profiles)
    get_session_resultPoll for analysis results
    ask_about_sessionAsk a question about a specific video
    ask_about_personAsk a question about a tracked person
    tag_person_to_sessionLink a tracking profile to a video
    compare_profilesCompare two tracked persons
    get_person_progressionTrack performance over time
    find_person_in_videoLocate a person by reference image
    get_team_summaryAggregate team-level metrics
    get_sop_complianceRetrieve SOP compliance evaluation
    generate_sop_documentGenerate a compliance report document

    Code Examples

    cURL
    List all tools
    curl -X POST https://mcp.vidforgex.com/ \
      -H "Authorization: Bearer vfx_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
    cURL
    Call a tool
    curl -X POST https://mcp.vidforgex.com/ \
      -H "Authorization: Bearer vfx_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {
          "name": "get_session_result",
          "arguments": {
            "session_id": "your-video-id"
          }
        }
      }'
    Python
    Python
    import requests
    
    MCP_URL = "https://mcp.vidforgex.com/"
    HEADERS = {
        "Authorization": "Bearer vfx_your_key_here",
        "Content-Type": "application/json",
    }
    
    def call_tool(name: str, arguments: dict):
        payload = {
            "jsonrpc": "2.0",
            "id": 1,
            "method": "tools/call",
            "params": {"name": name, "arguments": arguments},
        }
        res = requests.post(MCP_URL, headers=HEADERS, json=payload)
        res.raise_for_status()
        return res.json()
    
    result = call_tool("get_session_result", {"session_id": "your-video-id"})
    print(result["result"]["content"][0]["text"])
    JavaScript
    Node.js / TypeScript
    const MCP_URL = "https://mcp.vidforgex.com/";
    const HEADERS = {
      "Authorization": "Bearer vfx_your_key_here",
      "Content-Type": "application/json",
    };
    
    async function callTool(name, arguments_) {
      const res = await fetch(MCP_URL, {
        method: "POST",
        headers: HEADERS,
        body: JSON.stringify({
          jsonrpc: "2.0",
          id: 1,
          method: "tools/call",
          params: { name, arguments: arguments_ },
        }),
      });
      const data = await res.json();
      return data;
    }
    
    const result = await callTool("get_session_result", { session_id: "your-video-id" });
    console.log(result.result.content[0].text);

    Error Codes

    -32700Parse error — invalid JSON in request body
    -32600Invalid request — not a valid JSON-RPC 2.0 object
    -32601Method not found — unknown method (e.g., not tools/call)
    -32602Invalid params — missing or invalid tool arguments
    -32603Internal error — upstream service failure
    -32001Not found — resource does not exist or access denied
    -32003Forbidden — API key lacks permission for this resource