# 連結專案素材

Canonical URL: https://sosoapi.ai/zh-hant/docs/mcp/link-project-asset

`sosoapi_link_project_asset`

將現有素材以 identity、source 或 reference 關係連結到專案。需要 editor 角色及 idempotency_key。

## Profiles 及連接方式

Profiles: full

Transports: stdio, http

Profile 只影響工具可見性，唔會授權。HTTP 冇本機檔案上傳。SOSOAPI_OUTPUT_SCHEMAS=1 會宣告輸出 schema；兩種模式都會回傳 structured results。

## 權限及改動

MCP annotations 只係發現提示，唔係存取控制保證；仍然有實際登入、角色、資源及能力檢查。

```json
{
  "readOnlyHint": false,
  "destructiveHint": false,
  "idempotentHint": true,
  "openWorldHint": false
}
```

`/studio-api/projects/assets/link` — agent:operate; synchronous_http_response

## 輸入欄位

```json
{
  "type": "object",
  "properties": {
    "project_id": {
      "type": "string",
      "format": "uuid"
    },
    "asset_id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "relationship": {
      "type": "string",
      "enum": [
        "identity",
        "source",
        "reference"
      ]
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 160
    }
  },
  "required": [
    "project_id",
    "asset_id",
    "relationship",
    "idempotency_key"
  ],
  "additionalProperties": false
}
```

## 結構化輸出

此 schema 描述成功工具結果嘅 structuredContent。MCP envelope 亦包括 content，失敗可能設定 isError；唔好將文字收據或接受請求當成平台終態。權限及重試規則見對應 API 操作。

```json
{
  "type": "object",
  "properties": {
    "contract_version": {
      "type": "string",
      "const": "project/v1"
    },
    "link": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "workspace_id": {
              "type": "string",
              "format": "uuid"
            },
            "project_id": {
              "type": "string",
              "format": "uuid"
            },
            "asset_id": {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            "relationship": {
              "type": "string",
              "enum": [
                "identity",
                "source",
                "reference"
              ]
            },
            "source": {
              "type": "string",
              "enum": [
                "user",
                "api_key",
                "delegated_ai",
                "migration",
                "scheduled_post",
                "project_default"
              ]
            },
            "created_by": {
              "anyOf": [
                {
                  "type": "string",
                  "format": "uuid"
                },
                {
                  "type": "null"
                }
              ]
            },
            "created_at": {
              "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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
            }
          },
          "required": [
            "workspace_id",
            "project_id",
            "asset_id",
            "relationship",
            "source",
            "created_by",
            "created_at"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ]
    },
    "receipt_id": {
      "type": "string",
      "format": "uuid"
    },
    "applied": {
      "type": "boolean"
    },
    "deduped": {
      "type": "boolean"
    }
  },
  "required": [
    "contract_version",
    "link",
    "receipt_id",
    "applied",
    "deduped"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#",
  "additionalProperties": false
}
```

## 工具呼叫範例

以下虛構值已按 contract 驗證，唔係真實帳戶 ID、憑證或發佈紀錄。請用已授權範圍回傳嘅 ID、已準備好嘅素材及已審核排程取代，寫入前核對平台資格。此頁唔會呼叫 API。

```json
{
  "name": "sosoapi_link_project_asset",
  "arguments": {
    "project_id": "11111111-1111-4111-8111-111111111111",
    "asset_id": 1,
    "relationship": "identity",
    "idempotency_key": "example-intent-0001"
  }
}
```

structuredContent

```json
{
  "contract_version": "project/v1",
  "link": null,
  "receipt_id": "11111111-1111-4111-8111-111111111111",
  "applied": false,
  "deduped": false
}
```

## 對應 API 操作

- [/studio-api/projects/assets/link](https://sosoapi.ai/zh-hant/docs/api/studio-api-projects-assets-link)
