BRADFORD OPERATIONS
  • About

For agents

MCP

A remote MCP server any client can add by URL, and what is coming on the person’s own machine.

  • Applies to MCP, A2A and HTTP clients
  • Updated October 30, 2026

Contents

  1. 01Remote MCP server
  2. 02Examples
  3. 03On the person’s own machine

01Remote MCP server

URL
https://www.bradfordoperations.com/api/mcp
Transport
Streamable HTTP, POST only, JSON responses, stateless (no session id)
Protocol versions
2026-07-28, 2025-11-25, 2025-06-18, 2025-03-26
Key
None. Read-only; 60 requests a minute per address.

Any MCP client that takes a server URL can add it. Tools:

  • find_services: Say what you want done for footage or a film, in plain words ("I want to make a DCP", "give my footage a glitch look"). Returns the Bradford services that fit (status, price, next steps) and any matching looks; matched is false, with no services, when Bradford does not offer it.
  • find_looks: Direction words in ("worn VHS tape", "risograph in blue and orange", "CRT screen"), the matching looks out, best first, each with what it does, its parameters and before/after sample URLs. The whole gallery is https://www.bradfordoperations.com/agents/looks.json.
  • get_look: One look by id (e.g. "glitch/Receiver/factoryLook:6"): what it does, its params, the effect's controls with ranges, and its sample.

02Examples

Discover (protocol 2026-07-28)
curl -s https://www.bradfordoperations.com/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}}}}'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "supportedVersions": [
      "2026-07-28",
      "2025-11-25",
      "2025-06-18",
      "2025-03-26"
    ],
    "capabilities": {
      "tools": {}
    },
    "instructions": "Ask what Bradford Operations can do for footage or a film, in plain words (find_services), find Glitch and Textures looks by direction words (find_looks) and read one look's parameters and before/afte… (trimmed)",
    "cacheScope": "public",
    "ttlMs": 3600000,
    "resultType": "complete",
    "_meta": {
      "io.modelcontextprotocol/serverInfo": {
        "name": "bradford-operations",
        "title": "Bradford Operations",
        "version": "1.0.0",
        "websiteUrl": "https://www.bradfordoperations.com/software/agents"
      }
    }
  }
}
Find looks for a direction
curl -s https://www.bradfordoperations.com/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{}},"name":"find_looks","arguments":{"direction":"worn VHS tape","limit":2}}}'
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "glitch/Encoder/factoryLook:3: Worn VTR heads: a 3 µs head-switch tear at the bottom of the frame and slight timebase jitter. (still https://www.bradfordoperations.com/images/plugins/samples/glitch/enc… (trimmed)"
      }
    ],
    "structuredContent": {
      "matched": true,
      "looks": [
        {
          "id": "glitch/Encoder/factoryLook:3",
          "product": "glitch",
          "look": "factoryLook:3",
          "name": "VTR · worn heads · 3 µs head switch",
          "does": "Worn VTR heads: a 3 µs head-switch tear at the bottom of the frame and slight timebase jitter.",
          "directions": [
            "analog video",
            "composite video",
            "… 12 more (trimmed)"
          ],
          "params": {
            "headSwitchUs": 3,
            "jitterUs": 0.12,
            "headSwitchLines": 7
          },
          "paramsAre": "differences from the effect defaults; ranges are in effects[].controls and menus",
          "sample": {
            "form": "wipe",
            "mime": "video/mp4",
            "width": 720,
            "height": 540,
            "durationSec": 2,
            "fps": 24,
            "afterStill": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-3-still.webp",
            "afterSequence": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-3-seq.webp",
            "sequenceFrames": [
              0,
              12,
              "… 2 more (trimmed)"
            ],
            "before": "https://www.bradfordoperations.com/images/plugins/samples/glitch/source.webp",
            "after": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-3.mp4",
            "note": "after is a 2 s wipe (the look left of a moving divider, the untreated frame right of it) for people; afterStill is the full treated frame and afterSequence four kept frames, for models.",
            "chain": [
              {
                "effect": "com.bradfordoperations.glitch.Encoder",
                "params": {
                  "headSwitchUs": 3,
                  "jitterUs": 0.12,
                  "headSwitchLines": 7
                },
                "lookVersion": 1
              },
              {
                "effect": "com.bradfordoperations.glitch.Receiver",
                "params": {},
                "lookVersion": 1
              }
            ],
            "license": {
              "after": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "before": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "afterStill": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "afterSequence": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              }
            }
          },
          "renderedBy": {
            "service": "glitch-looks",
            "plugin": "Bradford Glitch",
            "lookVersion": 1
          },
          "effect": {
            "id": "com.bradfordoperations.glitch.Encoder",
            "key": "Encoder",
            "name": "Encoder"
          },
          "matched": [
            "VHS",
            "worn tape",
            "… 1 more (trimmed)"
          ]
        },
        {
          "id": "glitch/Encoder/factoryLook:1",
          "product": "glitch",
          "look": "factoryLook:1",
          "name": "NTSC · 4fsc SD · reference",
          "does": "A clean NTSC composite signal at 4fsc, decoded by a Receiver at its defaults: the reference analog picture.",
          "directions": [
            "analog video",
            "composite video",
            "… 9 more (trimmed)"
          ],
          "params": {},
          "paramsAre": "differences from the effect defaults; ranges are in effects[].controls and menus",
          "sample": {
            "form": "wipe",
            "mime": "video/mp4",
            "width": 720,
            "height": 540,
            "durationSec": 2,
            "fps": 24,
            "afterStill": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-1-still.webp",
            "afterSequence": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-1-seq.webp",
            "sequenceFrames": [
              0,
              12,
              "… 2 more (trimmed)"
            ],
            "before": "https://www.bradfordoperations.com/images/plugins/samples/glitch/source.webp",
            "after": "https://www.bradfordoperations.com/images/plugins/samples/glitch/encoder-factorylook-1.mp4",
            "note": "after is a 2 s wipe (the look left of a moving divider, the untreated frame right of it) for people; afterStill is the full treated frame and afterSequence four kept frames, for models.",
            "chain": [
              {
                "effect": "com.bradfordoperations.glitch.Encoder",
                "params": {},
                "lookVersion": 1
              },
              {
                "effect": "com.bradfordoperations.glitch.Receiver",
                "params": {},
                "lookVersion": 1
              }
            ],
            "license": {
              "after": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "before": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "afterStill": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              },
              "afterSequence": {
                "source": "prelinger-openroada-t360",
                "license": "cc-public-domain-dedication",
                "licenseName": "Creative Commons Public Domain Dedication",
                "status": "cleared"
              }
            }
          },
          "renderedBy": {
            "service": "glitch-looks",
            "plugin": "Bradford Glitch",
            "lookVersion": 1
          },
          "effect": {
            "id": "com.bradfordoperations.glitch.Encoder",
            "key": "Encoder",
            "name": "Encoder"
          },
          "matched": [
            "VHS"
          ]
        }
      ]
    },
    "resultType": "complete",
    "_meta": {
      "io.modelcontextprotocol/serverInfo": {
        "name": "bradford-operations",
        "title": "Bradford Operations",
        "version": "1.0.0",
        "websiteUrl": "https://www.bradfordoperations.com/software/agents"
      }
    }
  }
}
Clients on the 2025 protocol start with initialize
curl -s https://www.bradfordoperations.com/api/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"example","version":"1.0"}}}'
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-11-25",
    "capabilities": {
      "tools": {
        "listChanged": false
      }
    },
    "serverInfo": {
      "name": "bradford-operations",
      "title": "Bradford Operations",
      "version": "1.0.0",
      "websiteUrl": "https://www.bradfordoperations.com/software/agents"
    },
    "instructions": "Ask what Bradford Operations can do for footage or a film, in plain words (find_services), find Glitch and Textures looks by direction words (find_looks) and re… (trimmed)"
  }
}

03On the person’s own machine

  • bradford-fx (local MCP, stdio) (coming): Ships with the Bradford Plugins desktop app, which is not released yet. The effects engine inside the app speaks MCP; the app's "Connect to an agent" registers it with Claude Desktop or Claude Code as `bradford-fx` (command: the app's bradford_fx, args: ["mcp"]). Tools list effects and looks, describe parameters, validate a stack and render previews and files on the person's own machine with their license.
  • build_stack_from_references (local MCP, stdio) (coming): Built and tested by Bradford, not yet shipped to customers. Reference pictures and a written direction in, a validated Glitch/Textures stack out. Runs beside bradford-fx; abstains when the direction is not something these effects can make.
  • Cloud renders (CLI/MCP and API) (coming): Send footage and a stack to Bradford's render fleet from the Plugins app's CLI or MCP; the render comes back as a new version in the person's Lab library. Needs a Lab account, a license for the plugin, and a Lab balance: $1.00 per finished minute at HD, $3.00 at 4K, charged by the second.

Next: The A2A agent card and the agent that answers it.

A2A