> ## Documentation Index
> Fetch the complete documentation index at: https://adcp-docs-ja.pier1.co.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# get_creative_features

> get_creative_features はクリエイティブマニフェストをガバナンスエージェントに対して評価し、AdCP のブランドセーフティとコンプライアンスのための機能値を返します。

# get\_creative\_features

<Info>
  **AdCP 3.0 プロポーザル** - このタスクは AdCP 3.0 向けに開発中です。
</Info>

クリエイティブマニフェストを評価し、クリエイティブガバナンスエージェントから機能値を返します。

## ユースケース

* **セキュリティスキャン**: マルウェア、自動リダイレクト、資格情報収集、クロークの検出
* **クリエイティブ品質**: ブランド一貫性、プラットフォーム最適化、ガイドライン遵守の評価
* **コンテンツ分類**: IAB コンテンツタクソノミーまたはその他の標準に対するクリエイティブコンテンツの分類
* **アクセシビリティ**: WCAG コンプライアンス、スクリーンリーダー互換性のチェック

## リクエスト

```json theme={null}
{
  "$schema": "/schemas/creative/get-creative-features-request.json",
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "html5-display-300x250"
    },
    "assets": {
      "creative_html": {
        "url": "https://cdn.agency.com/creative/abc123.html"
      }
    }
  },
  "feature_ids": ["auto_redirect", "credential_harvest", "cloaking"]
}
```

### パラメーター

| パラメーター              | 型         | 必須  | 説明                                                 |
| ------------------- | --------- | --- | -------------------------------------------------- |
| `creative_manifest` | object    | Yes | `format_id` と `assets` を含むクリエイティブマニフェスト            |
| `feature_ids`       | string\[] | No  | 特定の機能にフィルタリングします。省略した場合、エージェントがサポートするすべての機能を評価します。 |

### ビルド評価器として使う場合の認証

`get_creative_features` は、`build_creative.evaluator.agent_url` または `build_creative.evaluator.feature_agent.agent_url` が外部評価器を指す場合に使われる評価器コントラクトでもあります。そのフローでは、クリエイティブ/セラーエージェントが呼び出し元となり、評価器はトランスポート上でそれを認証します。JWKS ディスカバリーを伴う RFC 9421 リクエスト署名が推奨され、双方が取り決めた場合は mTLS や事前プロビジョニングされた Bearer/API キー認証情報も許容されます。

リクエストペイロードは認証チャネルではありません。評価器は、`agent_url`、`account`、`context`、`ext`、または `creative_manifest` 内のフィールドを呼び出し元の識別の証明として扱ってはならず（MUST NOT）、呼び出し元は評価器の認証情報や呼び出し元が提供する信頼素材をそれらのフィールドに入れてはなりません（MUST NOT）。`api_key`、`client_secret`、`bearer`、`authorization`、`jwk`、`jwks`、`jwks_uri` のような認証情報や信頼素材のペイロードキーは非準拠であり、[`CREDENTIAL_IN_ARGS`](/docs/building/by-layer/L3/error-handling#authentication-and-access) で拒否すべきです。

トランスポートを認証した後、評価器は呼び出し元を許可されたクリエイティブエージェント/アカウント設定にマッピングします。認識されないクリエイティブエージェントによって署名された、またはその認証情報を運ぶリクエストは、認証または認可に失敗すべきです。ペイロードが期待されるアカウントを名指ししているからといって受け入れるべきではありません。

この呼び出しが `build_creative` によって開始され、評価器が到達不能または生成エージェントのトランスポート認証を拒否した場合、バイヤーに見えるビルドは、評価が利用できなかったという理由だけで失敗するのではなく、アドバイザリな `errors[]` ノートを伴うセラーデフォルトのランキングにフォールバックすべきです。

## レスポンス

<CodeGroup>
  ```json セキュリティスキャナー（クリーン） theme={null}
  {
    "$schema": "/schemas/creative/get-creative-features-response.json",
    "results": [
      { "feature_id": "auto_redirect", "value": false },
      { "feature_id": "credential_harvest", "value": false },
      { "feature_id": "cloaking", "value": false }
    ],
    "detail_url": "https://scanner.example.com/reports/ctx_abc123"
  }
  ```

  ```json セキュリティスキャナー（脅威検出） theme={null}
  {
    "$schema": "/schemas/creative/get-creative-features-response.json",
    "results": [
      { "feature_id": "auto_redirect", "value": true, "confidence": 0.97 },
      { "feature_id": "credential_harvest", "value": true, "confidence": 0.91 },
      { "feature_id": "cloaking", "value": false }
    ],
    "detail_url": "https://scanner.example.com/reports/ctx_def456"
  }
  ```

  ```json クリエイティブ品質プラットフォーム theme={null}
  {
    "$schema": "/schemas/creative/get-creative-features-response.json",
    "results": [
      { "feature_id": "brand_consistency", "value": 87, "unit": "percentage" },
      { "feature_id": "platform_optimized", "value": true },
      { "feature_id": "creative_quality_score", "value": 92, "unit": "score" }
    ],
    "detail_url": "https://quality.example.com/reports/ctx_ghi789"
  }
  ```

  ```json コンテンツ分類器 theme={null}
  {
    "$schema": "/schemas/creative/get-creative-features-response.json",
    "results": [
      { "feature_id": "iab_casinos_gambling", "value": true, "confidence": 0.95 },
      { "feature_id": "iab_automotive", "value": false, "confidence": 0.12 }
    ],
    "detail_url": "https://categorizer.example.com/reports/ctx_jkl012"
  }
  ```
</CodeGroup>

### レスポンスフィールド

| フィールド                           | 説明                                              |
| ------------------------------- | ----------------------------------------------- |
| `results`                       | 機能評価結果の配列                                       |
| `results[].feature_id`          | 評価された機能                                         |
| `results[].value`               | 機能値: boolean（バイナリ）、number（定量的）、または string（カテゴリ） |
| `results[].confidence`          | 信頼スコア（0-1）、該当する場合                               |
| `results[].unit`                | 定量的値の単位（例: `percentage`、`score`）                |
| `results[].expires_at`          | この評価が期限切れになり更新が必要な時刻                            |
| `results[].measured_at`         | この機能が評価された時刻                                    |
| `results[].methodology_version` | 使用された方法論のバージョン                                  |
| `results[].details`             | ベンダー固有の詳細                                       |
| `detail_url`                    | ベンダーの完全な評価レポートへの URL。ベンダーによるアクセス制御が適用されます。      |

### エラーレスポンス

```json theme={null}
{
  "errors": [
    {
      "code": "CREATIVE_INACCESSIBLE",
      "message": "Could not retrieve creative assets for evaluation"
    }
  ]
}
```

## 非同期評価

評価に時間がかかる場合（例: サンドボックスでのマルウェアスキャン）、エージェントは `status: "working"` を返し、完了時に Webhook で結果を配信します。標準の[非同期タスクパターン](/docs/building/by-layer/L3/async-operations)を使うため、カスタムステータス値は不要です。

## オーケストレーターのロジック

オーケストレーターはプロパティリストの機能要件と同じ方法で、クライアントサイドで機能要件を適用する:

```javascript theme={null}
const result = await agent.getCreativeFeatures({
  creative_manifest: manifest
});

if (result.errors) {
  // Handle error - reject or retry
  return;
}

// Apply security requirements
const threats = result.results.filter(
  f => ['auto_redirect', 'credential_harvest', 'cloaking'].includes(f.feature_id)
    && f.value === true
);
if (threats.length > 0) {
  // Reject - security threat detected
  return;
}

// Apply quality requirements
const quality = result.results.find(f => f.feature_id === 'brand_consistency');
if (quality && quality.value < 80) {
  // Reject - below quality threshold
  return;
}
```

## プロパティガバナンスとの関係

クリエイティブガバナンスはプロパティガバナンスと同じパターンに従う:

| 概念             | プロパティガバナンス                           | クリエイティブガバナンス                             |
| -------------- | ------------------------------------ | ---------------------------------------- |
| **評価対象**       | プロパティ（ウェブサイト、アプリ）                    | クリエイティブ（マニフェスト）                          |
| **機能宣言**       | `governance.property_features`       | `governance.creative_features`           |
| **評価タスク**      | プロパティリストフィルター                        | `get_creative_features`                  |
| **機能値**        | `property-feature-value` スキーマ        | 同じフィールド（value、confidence、expires\_at など） |
| **詳細インテリジェンス** | `detail_url` / `methodology_url` の背後 | `detail_url` / `methodology_url` の背後     |
