Omniscient Master Suite OMNISCIENT · 3.1

Shutterstock Uploader v1.0.0

Social & publishing shutterstock-upload 3 actions MCP

Upload photos and video to Shutterstock Contributor over its FTPS drop, with optional description/keywords delivered as a matching metadata sheet, using vault-stored credentials.

The omniscient:// link needs a protocol handler on your machine, which is not built yet. Until then it does nothing — use the commands below.

Actions

Jump to: check_authuploadupload_folder

Test connection

check_auth

Log in to the Shutterstock Contributor FTPS drop and straight back out, to verify the stored credentials work without uploading anything.

Inputs

NameTypeRequired / defaultValues and notes
profile profile optional, default shutterstock

Outputs

NameTypeNotes
ok bool
host string
username string

Upload one file

upload Destructive

Upload a single photo or video to Shutterstock. An optional description/keywords pair is delivered as a matching <file>.csv metadata sheet over the same connection.

Inputs

NameTypeRequired / defaultValues and notes
file path required
description text optional, default ""
keywords string optional, default ""
profile profile optional, default shutterstock

Outputs

NameTypeNotes
name string
metadata_uploaded bool

Upload a folder

upload_folder Destructive

Upload every photo/video in a folder to Shutterstock, skipping files already marked uploaded, with a shared description/keywords pair.

Inputs

NameTypeRequired / defaultValues and notes
folder path required
description text optional, default ""
keywords string optional, default ""
recursive bool optional, default false
skip_uploaded bool optional, default true
profile profile optional, default shutterstock

Outputs

NameTypeNotes
count int
failed int
uploaded json

Use it

Test connection

Command line

shell
python app.py --action check_auth --params '{}'

Run from the app’s own folder. Single quotes work in bash and PowerShell; in cmd.exe use double quotes and escape the inner ones.

MCP tool

mcp
run_action("shutterstock-upload", "check_auth", {})

Workflow node

json
{
  "id": "n0",
  "app": "shutterstock-upload",
  "action": "check_auth",
  "params": {},
  "inputs": {}
}

Upload one file

Command line

shell
python app.py --action upload --params '{"file": "D:/path/to/file"}'

# preview first - destructive action, nothing is changed:
python app.py --action upload --params '{"file": "D:/path/to/file"}' --dry-run

Run from the app’s own folder. Single quotes work in bash and PowerShell; in cmd.exe use double quotes and escape the inner ones.

MCP tool

mcp
run_action("shutterstock-upload", "upload", {"file": "D:/path/to/file"})

# preview first:
run_action("shutterstock-upload", "upload", {"file": "D:/path/to/file"}, dry_run=true)

Workflow node

json
{
  "id": "n0",
  "app": "shutterstock-upload",
  "action": "upload",
  "params": {
    "file": "D:/path/to/file"
  },
  "inputs": {}
}

Upload a folder

Command line

shell
python app.py --action upload_folder --params '{"folder": "D:/path/to/folder"}'

# preview first - destructive action, nothing is changed:
python app.py --action upload_folder --params '{"folder": "D:/path/to/folder"}' --dry-run

Run from the app’s own folder. Single quotes work in bash and PowerShell; in cmd.exe use double quotes and escape the inner ones.

MCP tool

mcp
run_action("shutterstock-upload", "upload_folder", {"folder": "D:/path/to/folder"})

# preview first:
run_action("shutterstock-upload", "upload_folder", {"folder": "D:/path/to/folder"}, dry_run=true)

Workflow node

json
{
  "id": "n0",
  "app": "shutterstock-upload",
  "action": "upload_folder",
  "params": {
    "folder": "D:/path/to/folder"
  },
  "inputs": {}
}

Example prompts

Things you can say to Claude, Cursor or Codex once the MCP server is registered.