Default model tools

identity_asset_ingest

Add an image or texture to FX Studio

Ingests an image/logo/texture from HTTPS or base64 into the account's asset library. Without project_id it serves account authoring; an accessible Project selects its account. Returned asset IDs listed in a scene's settings.asset_ids admit those exact bytes to the isolated scene runtime. A scene has no ambient network or account credentials.

Surface: Default model and app

Product release eb8538f4a297f331d0399351c1e175bffcd212d2
Public contract commit 20688e11af473a363145ed880d5019c90a7ec1e2
Public contract SHA-256 87a94b85a84dc19245fc03f9b544c70d64bd9f5e08585dcccb38157cace5700d
Captured 2026-10-04T11:55:45.577Z. Review or improve this contract on GitHub.

These blocks show the complete MCP descriptors captured from serving Rails. Security schemes and resource URIs can differ by connected host.

Default model descriptor

{
  "name": "identity_asset_ingest",
  "title": "Add an image or texture to FX Studio",
  "description": "Ingests an image/logo/texture from HTTPS or base64 into the account's asset library. Without project_id it serves account authoring; an accessible Project selects its account. Returned asset IDs listed in a scene's settings.asset_ids admit those exact bytes to the isolated scene runtime. A scene has no ambient network or account credentials.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID; this is the account boundary for the uploaded asset."
      },
      "url": {
        "type": "string",
        "description": "HTTPS image URL to fetch; exactly one of url or data_base64."
      },
      "data_base64": {
        "type": "string",
        "description": "Base64 image bytes, optionally as a data:image/...;base64 URL; exactly one of data_base64 or url."
      },
      "kind": {
        "type": "string",
        "enum": [
          "logo",
          "image"
        ],
        "description": "logo for a brand mark/wordmark asset; image for supporting imagery."
      },
      "name": {
        "type": "string",
        "description": "Human name for the asset."
      }
    },
    "required": [
      "kind",
      "name"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Add an image or texture to FX Studio",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false,
    "openWorldHint": true
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "model",
        "app"
      ]
    },
    "openai/widgetAccessible": true
  }
}

App descriptor

{
  "name": "identity_asset_ingest",
  "title": "Add an image or texture to FX Studio",
  "description": "Ingests an image/logo/texture from HTTPS or base64 into the account's asset library. Without project_id it serves account authoring; an accessible Project selects its account. Returned asset IDs listed in a scene's settings.asset_ids admit those exact bytes to the isolated scene runtime. A scene has no ambient network or account credentials.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID; this is the account boundary for the uploaded asset."
      },
      "url": {
        "type": "string",
        "description": "HTTPS image URL to fetch; exactly one of url or data_base64."
      },
      "data_base64": {
        "type": "string",
        "description": "Base64 image bytes, optionally as a data:image/...;base64 URL; exactly one of data_base64 or url."
      },
      "kind": {
        "type": "string",
        "enum": [
          "logo",
          "image"
        ],
        "description": "logo for a brand mark/wordmark asset; image for supporting imagery."
      },
      "name": {
        "type": "string",
        "description": "Human name for the asset."
      }
    },
    "required": [
      "kind",
      "name"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Add an image or texture to FX Studio",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false,
    "openWorldHint": true
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "model",
        "app"
      ]
    },
    "openai/widgetAccessible": true
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "description": "Account-scoped asset ref with asset_id, kind, content_type, sha256, and authenticated url."
      },
      "warnings": {
        "type": "array",
        "items": {
          "type": "object"
        }
      },
      "schema": {
        "type": "string",
        "description": "Receipt schema identifier, bitterclip.identity_asset_ingest_receipt.v0."
      },
      "account_id": {
        "type": "string",
        "description": "Account public ID that owns the asset."
      },
      "project_id": {
        "type": "string",
        "description": "Project public ID the asset was ingested through; absent for an account-level ingest."
      },
      "blockers": {
        "type": "array",
        "items": {
          "type": "object"
        },
        "description": "Typed blockers; empty when the call succeeded."
      }
    },
    "required": [],
    "additionalProperties": false
  }
}

Live Workspace descriptor

{
  "name": "identity_asset_ingest",
  "title": "Add an image or texture to FX Studio",
  "description": "Ingests an image/logo/texture from HTTPS or base64 into the account's asset library. Without project_id it serves account authoring; an accessible Project selects its account. Returned asset IDs listed in a scene's settings.asset_ids admit those exact bytes to the isolated scene runtime. A scene has no ambient network or account credentials.",
  "inputSchema": {
    "type": "object",
    "properties": {
      "project_id": {
        "type": "string",
        "description": "Project public ID; this is the account boundary for the uploaded asset."
      },
      "url": {
        "type": "string",
        "description": "HTTPS image URL to fetch; exactly one of url or data_base64."
      },
      "data_base64": {
        "type": "string",
        "description": "Base64 image bytes, optionally as a data:image/...;base64 URL; exactly one of data_base64 or url."
      },
      "kind": {
        "type": "string",
        "enum": [
          "logo",
          "image"
        ],
        "description": "logo for a brand mark/wordmark asset; image for supporting imagery."
      },
      "name": {
        "type": "string",
        "description": "Human name for the asset."
      }
    },
    "required": [
      "kind",
      "name"
    ],
    "additionalProperties": false
  },
  "annotations": {
    "title": "Add an image or texture to FX Studio",
    "readOnlyHint": false,
    "destructiveHint": false,
    "idempotentHint": false,
    "openWorldHint": true
  },
  "securitySchemes": [
    {
      "type": "noauth"
    }
  ],
  "_meta": {
    "securitySchemes": [
      {
        "type": "noauth"
      }
    ],
    "ui": {
      "visibility": [
        "model",
        "app"
      ]
    },
    "openai/widgetAccessible": true
  },
  "outputSchema": {
    "type": "object",
    "properties": {
      "asset": {
        "type": "object",
        "description": "Account-scoped asset ref with asset_id, kind, content_type, sha256, and authenticated url."
      },
      "warnings": {
        "type": "array",
        "items": {
          "type": "object"
        }
      },
      "schema": {
        "type": "string",
        "description": "Receipt schema identifier, bitterclip.identity_asset_ingest_receipt.v0."
      },
      "account_id": {
        "type": "string",
        "description": "Account public ID that owns the asset."
      },
      "project_id": {
        "type": "string",
        "description": "Project public ID the asset was ingested through; absent for an account-level ingest."
      },
      "blockers": {
        "type": "array",
        "items": {
          "type": "object"
        },
        "description": "Typed blockers; empty when the call succeeded."
      }
    },
    "required": [],
    "additionalProperties": false
  }
}

Errors

[
  "project_not_found",
  "invalid_input"
]

Examples

[
  {
    "label": "Upload a logo for a new brand",
    "input": {
      "project_id": "show_...",
      "url": "https://example.com/logo.png",
      "kind": "logo",
      "name": "Acme mark"
    }
  }
]