Search loads only when you use it. Browse all categories below.

MCP tool

Create asset

sosoapi_create_asset

Register an asset record for media or text you already host (asset_url, asset_type). It uploads nothing: use sosoapi_upload_asset for a local file or sosoapi_import_asset_url to have SosoAPI fetch a public URL. Pass workspace_id (refused without it once explicit targeting is enforced). Optional idempotency_key.

Read as Markdown

Profiles and transports

Profiles: full · Transports: stdio, http

Choose core or full to control which tools your client sees; this does not change its permissions. Local file upload requires stdio and is unavailable over HTTP. Set SOSOAPI_OUTPUT_SCHEMAS=1 to include output schemas in discovery. Tools return structured results with or without that setting.

Permissions and side effects

Annotations help clients describe a tool. Each call still checks the user’s authentication, role, resource access and capability grants.

{
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": false,
  "openWorldHint": false
}

Input fields

Required means required inside its parent object and selected branch. A required child does not make an optional parent required. Rules and field names below are copied from the contract.

Input fields
Field / branchType / requiredConstraints
$objectRequired in parent
  • additionalProperties: false
workspace_idstringOptional / item
  • format: "uuid"
asset_typestringRequired in parent
  • enum: ["text","image","video"]
asset_urlstringRequired in parent
  • minLength: 1
  • maxLength: 2048
titlestringOptional / item
  • maxLength: 200
descriptionstringOptional / item
  • maxLength: 2000
tagsarrayOptional / item
  • maxItems: 50
tags[]stringOptional / item
  • maxLength: 64
metadataobjectOptional / item

Free-form JSON object; its serialized UTF-8 size must not exceed 16384 bytes.

  • additionalProperties: {}
metadata.*any JSON valueOptional / item—
sourcestringOptional / item
  • maxLength: 64
source_metadataobjectOptional / item

Free-form JSON object; its serialized UTF-8 size must not exceed 16384 bytes.

  • additionalProperties: {}
source_metadata.*any JSON valueOptional / item—
idempotency_keystringOptional / item
  • minLength: 8
  • maxLength: 160
Complete JSON Schema
{
  "type": "object",
  "properties": {
    "workspace_id": {
      "type": "string",
      "format": "uuid"
    },
    "asset_type": {
      "type": "string",
      "enum": [
        "text",
        "image",
        "video"
      ]
    },
    "asset_url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "title": {
      "type": "string",
      "maxLength": 200
    },
    "description": {
      "type": "string",
      "maxLength": 2000
    },
    "tags": {
      "maxItems": 50,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 64
      }
    },
    "metadata": {
      "type": "object",
      "additionalProperties": {},
      "description": "Free-form JSON object; its serialized UTF-8 size must not exceed 16384 bytes."
    },
    "source": {
      "type": "string",
      "maxLength": 64
    },
    "source_metadata": {
      "type": "object",
      "additionalProperties": {},
      "description": "Free-form JSON object; its serialized UTF-8 size must not exceed 16384 bytes."
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 160
    }
  },
  "required": [
    "asset_type",
    "asset_url"
  ],
  "additionalProperties": false
}

Structured output

This schema describes structuredContent in a successful tool result. The MCP response also includes content and may set isError when a call fails. For publishing, read the post’s final result rather than treating an accepted request or text response as confirmation. The linked API operation explains permissions and retry rules.

Required means required inside its parent object and selected branch. A required child does not make an optional parent required. Rules and field names below are copied from the contract.

Structured output
Field / branchType / requiredConstraints
$objectRequired in parent
  • additionalProperties: false
assetobjectRequired in parent
  • additionalProperties: false
asset.idinteger | stringRequired in parent—
asset.idanyOf 1integerRequired in parent
  • minimum: -9007199254740991
  • maximum: 9007199254740991
asset.idanyOf 2stringRequired in parent—
asset.workspace_idstringRequired in parent
  • format: "uuid"
asset.user_idstringRequired in parent
  • format: "uuid"
asset.asset_typestringRequired in parent
  • enum: ["text","image","video","audio"]
asset.asset_urlstring | nullRequired in parent—
asset.asset_urlanyOf 1stringRequired in parent—
asset.asset_urlanyOf 2nullRequired in parent—
asset.preview_urlstring | nullOptional / item

Workspace-authorized temporary read URL. Refresh through Asset read/list after preview_expires_at; keep asset_url as persisted media identity.

—
asset.preview_urlanyOf 1stringOptional / item
  • format: "uri"
asset.preview_urlanyOf 2nullOptional / item—
asset.preview_expires_atstring | nullOptional / item—
asset.preview_expires_atanyOf 1stringOptional / item
  • format: "date-time"
  • pattern: "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
asset.preview_expires_atanyOf 2nullOptional / item—
asset.titlestring | nullRequired in parent—
asset.titleanyOf 1stringRequired in parent—
asset.titleanyOf 2nullRequired in parent—
asset.descriptionstring | nullRequired in parent—
asset.descriptionanyOf 1stringRequired in parent—
asset.descriptionanyOf 2nullRequired in parent—
asset.tagsarray | nullRequired in parent—
asset.tagsanyOf 1arrayRequired in parent—
asset.tags[]anyOf 1stringOptional / item—
asset.tagsanyOf 2nullRequired in parent—
asset.metadataobject | nullRequired in parent—
asset.metadataanyOf 1objectRequired in parent
  • additionalProperties: {}
asset.metadata.*anyOf 1any JSON valueOptional / item—
asset.metadataanyOf 2nullRequired in parent—
asset.sourcestring | nullOptional / item—
asset.sourceanyOf 1stringOptional / item—
asset.sourceanyOf 2nullOptional / item—
asset.source_metadataobject | nullOptional / item—
asset.source_metadataanyOf 1objectOptional / item
  • additionalProperties: {}
asset.source_metadata.*anyOf 1any JSON valueOptional / item—
asset.source_metadataanyOf 2nullOptional / item—
asset.created_atstringRequired in parent—
asset.versionintegerOptional / item
  • maximum: 9007199254740991
  • exclusiveMinimum: 0
dedupedbooleanRequired in parent—
Complete JSON Schema
{
  "type": "object",
  "properties": {
    "asset": {
      "type": "object",
      "properties": {
        "id": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": -9007199254740991,
              "maximum": 9007199254740991
            },
            {
              "type": "string"
            }
          ]
        },
        "workspace_id": {
          "type": "string",
          "format": "uuid"
        },
        "user_id": {
          "type": "string",
          "format": "uuid"
        },
        "asset_type": {
          "type": "string",
          "enum": [
            "text",
            "image",
            "video",
            "audio"
          ]
        },
        "asset_url": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "preview_url": {
          "description": "Workspace-authorized temporary read URL. Refresh through Asset read/list after preview_expires_at; keep asset_url as persisted media identity.",
          "anyOf": [
            {
              "type": "string",
              "format": "uri"
            },
            {
              "type": "null"
            }
          ]
        },
        "preview_expires_at": {
          "anyOf": [
            {
              "type": "string",
              "format": "date-time",
              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "description": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "tags": {
          "anyOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "null"
            }
          ]
        },
        "metadata": {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "source": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ]
        },
        "source_metadata": {
          "anyOf": [
            {
              "type": "object",
              "propertyNames": {
                "type": "string"
              },
              "additionalProperties": {}
            },
            {
              "type": "null"
            }
          ]
        },
        "created_at": {
          "type": "string"
        },
        "version": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "id",
        "workspace_id",
        "user_id",
        "asset_type",
        "asset_url",
        "title",
        "description",
        "tags",
        "metadata",
        "created_at"
      ],
      "additionalProperties": false
    },
    "deduped": {
      "type": "boolean"
    }
  },
  "required": [
    "asset",
    "deduped"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}

Example tool call

These examples use fictional values checked against the schemas. Replace the IDs with ones you are authorized to use, the media with ready assets and the dates with your confirmed publishing time. Check the account’s eligibility before submitting a write. This page sends no API requests.

{
  "name": "sosoapi_create_asset",
  "arguments": {
    "asset_type": "text",
    "asset_url": "example"
  }
}

structuredContent

{
  "asset": {
    "id": 0,
    "workspace_id": "11111111-1111-4111-8111-111111111111",
    "user_id": "11111111-1111-4111-8111-111111111111",
    "asset_type": "text",
    "asset_url": null,
    "title": null,
    "description": null,
    "tags": null,
    "metadata": null,
    "created_at": "example"
  },
  "deduped": false
}
Install or connect MCP