MCPOutils MCP/Médias

Médias

Téléverser, étiqueter, organiser et modérer des photos et autres fichiers.

fetch_gbp_media

Writemedia:write

Fetch a location's Google Business Profile photos (owner-uploaded + user-generated) via the Google My Business v4 media APIs, dedup by the GBP media id, and store them in the client media library, tagged so they're traceable back to that GBP media item. Requires the location to have Google connected (returns status 'not_connected' otherwise). Google-only.

Paramètres
locationIdstringobligatoire
The location's id (from list_locations).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "fetch_gbp_media",
    "arguments": {
      "locationId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/moderate_pending_ugc_media

moderate_pending_ugc_media

Writemedia:write

Classify pending customer-submitted (UGC) photos in the media library as ok/needs_review/spam/skipped, using a business-context-aware vision prompt (client industry/description, mismatched-listing detection, platform-UI-chrome detection). Use this for requests like 'check for inappropriate photos customers uploaded', 'clean up the media library', or 'moderate new uploads' — it finds and flags anything spammy, unrelated, or inappropriate instead of waiting for the daily automatic sweep. Pass clientId to scope to one client; omit to sweep every client in this agency. Resumable: only touches rows that are unclassified or previously 'skipped' (retried after 24h).

Paramètres
clientIdstringfacultatif
Client id (from list_clients) to scope to. Omit to sweep every client in this agency.
limitnumberfacultatif
Max rows to return (1–200, default 50).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "moderate_pending_ugc_media",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/list_flagged_media

list_flagged_media

Readmedia:read

List customer-submitted (UGC) media library photos by moderation status — the read counterpart to moderate_pending_ugc_media. Use this to answer questions like 'what needs my attention', 'show me the spam photos', 'did any customer uploads look inappropriate', or 'what photos got flagged' by looking at the real current verdicts, instead of guessing. Returns id, mediaUrl, status, the classifier's one-line reason, createdAt, and the client/location it belongs to. Omit status to list every UGC photo regardless of verdict (including never-classified ones); omit clientId to search the whole agency.

Paramètres
status"ok" | "needs_review" | "spam" | "skipped"facultatif
Filter to one moderation status. Omit to list photos in every status, including never-classified.
clientIdstringfacultatif
Client id (from list_clients) to scope to. Omit to search the whole agency.
locationIdstringfacultatif
Location id (from list_locations) to scope to.
limitnumberfacultatif
Max rows to return (1–200, default 50).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_flagged_media",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/upload_asset

upload_asset

Writemedia:write

Upload a new file (e.g. a photo, image, PDF, or other file) into the agency's media library. Provide the file as a public https URL (fetched and stored — a URL pointing at a private/internal network address is rejected) or as base64 bytes. Max 100 MB. Optionally scope it to an account/client/location/brand, drop it straight into a folder, tag it, or associate it with locations. Returns the created asset (including its key, used by update_asset/delete_asset and folder/tag operations).

Paramètres
urlstringfacultatif
A public https URL to fetch and store. Use this OR base64.
base64stringfacultatif
Raw file bytes as base64 (a data: URL prefix is accepted). Use this OR url.
mimestringfacultatif
The file's MIME type. Inferred from the URL response or a data: URL prefix when omitted; required for plain base64 without a data: URL prefix.
filenamestringfacultatif
Filename to store. Defaults to the URL's basename, or "upload".
titlestringfacultatif
Display title. Defaults to the filename.
scopeType"account" | "client" | "location" | "brand"facultatif
Which kind of entity this asset belongs to.
scopeIdstringfacultatif
The id of the scoped entity (required together with scopeType) — a client id (list_clients) or location id (list_locations) for those two scope types; account/brand scoping has no lookup tool in this MCP surface.
folderIdstringfacultatif
A folder id (from list_asset_folders) to place this asset into immediately.
tagsstring[]facultatif
Tag names to apply immediately (created if they don't already exist).
locationIdsstring[]facultatif
Location ids (from list_locations) to associate this asset with.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_asset",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/update_asset

update_asset

Writemedia:write

Edit a photo/image's (or other file's) tags, folder memberships, or location associations (any source — uploads, Sydekick-generated, or synced media), and, for uploads only, its title/scope. Each of tags/folderIds/locationIds you pass REPLACES the full current list for that field — pass the complete desired list, not just additions. locationIds replaces only the associations added here (the asset's `assignedLocationIds`); synced media and GBP-imported photos also carry a location stamped by the source itself, which shows in `locationIds` and cannot be removed from this side. NOTE: unlike editing an asset's locations in the app UI, assigning a location here does NOT push the image into that location's Google-publish queue — that bridge is UI-only. For synced/UGC media only, status sets the moderation verdict by hand (ok, needs_review, or spam) — the same thing the Flag/Mark OK actions in the app do; optionally pair it with statusReason. Identify the asset by its key (e.g. "upload:abc123", from upload_asset or the library listing).

Paramètres
assetKeystringobligatoire
The asset's key, e.g. "upload:abc123" (required).
titlestringfacultatif
New title. Uploads only.
scopeType"account" | "client" | "location" | "brand"facultatif
New scope type. Uploads only.
scopeIdstringfacultatif
New scope id. Uploads only. A client id (list_clients) or location id (list_locations) for those two scope types; account/brand scoping has no lookup tool in this MCP surface.
tagsstring[]facultatif
Replaces the asset's full tag list.
folderIdsstring[]facultatif
Replaces the asset's full folder membership list (ids from list_asset_folders).
locationIdsstring[]facultatif
Replaces the asset's full list of locations assigned here (ids from list_locations). Locations stamped by the asset's own source are unaffected.
status"ok" | "needs_review" | "spam"facultatif
Sets the moderation verdict by hand. Synced/UGC media only.
statusReasonstringfacultatif
Optional note explaining the status, shown alongside it.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_asset",
    "arguments": {
      "assetKey": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/delete_asset

delete_asset

Writemedia:write

Archive an uploaded photo, image, or other file — this never permanently deletes it. The bytes, record, tags/folder memberships, and share links all stay in place; it just stops appearing anywhere in the library. Only uploads can be archived this way — Sydekick-generated or synced media assets are read-only here; remove them from folders or untag them instead. Identify the asset by its key (e.g. "upload:abc123").

Paramètres
assetKeystringobligatoire
The asset's key to delete, e.g. "upload:abc123" (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_asset",
    "arguments": {
      "assetKey": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/ai_edit_asset

ai_edit_asset

Writemedia:write

Regenerate a Sydekick-generated asset's image (or text) in place from a text prompt — the same "Edit with AI" action available in the Data tab. Generated assets only (uploads and synced media return an error). The first request after a period of inactivity can take a minute or more; later ones are faster. Identify the asset by its key (e.g. "generated:abc123"). Returns the refreshed asset at the same key.

Paramètres
assetKeystringobligatoire
The generated asset's key, e.g. "generated:abc123" (required).
promptstringobligatoire
What to change, in plain language (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "ai_edit_asset",
    "arguments": {
      "assetKey": "string",
      "prompt": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/list_asset_folders

list_asset_folders

Readmedia:read

List the agency's media-library folders (each can hold a mix of uploads, Sydekick-generated assets, and synced media). Optionally scope to an entity. Use this to find a folderId for update_asset, add_asset_to_folder, or remove_asset_from_folder.

Paramètres
scopeType"account" | "client" | "location" | "brand"facultatif
Filter by scope type.
scopeIdstringfacultatif
Filter by scope id — a client id (list_clients) or location id (list_locations) for those two scope types.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_asset_folders",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/create_asset_folder

create_asset_folder

Writemedia:write

Create a new media-library folder. Optionally scope it to an account/client/location/brand.

Paramètres
namestringobligatoire
Folder name (required).
descriptionstringfacultatif
A short description.
scopeType"account" | "client" | "location" | "brand"facultatif
Which kind of entity this folder belongs to.
scopeIdstringfacultatif
The id of the scoped entity — a client id (list_clients) or location id (list_locations) for those two scope types.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_asset_folder",
    "arguments": {
      "name": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/update_asset_folder

update_asset_folder

Writemedia:write

Rename or re-scope an existing media-library folder. Pass only the fields you want to change. Identify it by its id (from list_asset_folders).

Paramètres
folderIdstringobligatoire
The id of the folder to update (required).
namestringfacultatif
New name.
descriptionstringfacultatif
New description.
scopeType"account" | "client" | "location" | "brand"facultatif
New scope type.
scopeIdstringfacultatif
New scope id — a client id (list_clients) or location id (list_locations) for those two scope types.
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_asset_folder",
    "arguments": {
      "folderId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/delete_asset_folder

delete_asset_folder

Writemedia:write

Delete a media-library folder. The assets that were in it are NOT deleted — they only lose their membership in this folder. Identify it by its id (from list_asset_folders).

Paramètres
folderIdstringobligatoire
The id of the folder to delete (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_asset_folder",
    "arguments": {
      "folderId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/add_asset_to_folder

add_asset_to_folder

Writemedia:write

Add one or more assets to a folder. Idempotent — assets already in the folder are left as-is. Returns the folder's new total item count.

Paramètres
folderIdstringobligatoire
The id of the folder (required, from list_asset_folders).
assetKeysstring[]obligatoire
Asset keys to add, e.g. ["upload:abc123"] (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "add_asset_to_folder",
    "arguments": {
      "folderId": "string",
      "assetKeys": [
        "string"
      ]
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/remove_asset_from_folder

remove_asset_from_folder

Writemedia:write

Remove one asset from a folder. The asset itself is untouched. Returns the folder's new item count.

Paramètres
folderIdstringobligatoire
The id of the folder (required, from list_asset_folders).
assetKeystringobligatoire
The asset key to remove, e.g. "upload:abc123" (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "remove_asset_from_folder",
    "arguments": {
      "folderId": "string",
      "assetKey": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/list_asset_tags

list_asset_tags

Readmedia:read

List the agency's media-library tag vocabulary, each with its usage count. Use this before create_asset_tag/update_asset_tag/delete_asset_tag.

Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_asset_tags",
    "arguments": {}
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/create_asset_tag

create_asset_tag

Writemedia:write

Create a new media-library tag, or return the existing one if this exact name already exists (idempotent). Apply it to assets via update_asset's tags field.

Paramètres
namestringobligatoire
Tag name (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_asset_tag",
    "arguments": {
      "name": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/update_asset_tag

update_asset_tag

Writemedia:write

Rename a tag — applies everywhere it's used. If another tag already has the new name, this MERGES into it instead (moves every assignment onto the existing tag and removes this one) rather than creating a duplicate name. Identify it by its id (from list_asset_tags).

Paramètres
tagIdstringobligatoire
The id of the tag to rename (required, from list_asset_tags).
namestringobligatoire
The new name (required).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "update_asset_tag",
    "arguments": {
      "tagId": "string",
      "name": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.

MCPOutils MCP/Médias/delete_asset_tag

delete_asset_tag

Writemedia:write

Permanently delete a tag and remove it from every asset it was applied to. The assets themselves are untouched. Returns how many assets lost the tag. Identify it by its id (from list_asset_tags).

Paramètres
tagIdstringobligatoire
The id of the tag to delete (required, from list_asset_tags).
Exemple de requête
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "delete_asset_tag",
    "arguments": {
      "tagId": "string"
    }
  }
}
Exemple de réponse
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "..."
      }
    ]
  }
}

La forme de la réponse est indicative — le contenu réel dépend de l'outil et de vos données.