# generate_asset_reference

Render an asset's reference image in the channel's art style — the visual anchor that keeps a character/environment looking identical across every shot. EVERY character, environment, and object asset needs one before generate_voiceover (the server enforces this; fire the jobs for all assets, then one await_jobs). Async — the job writes the image onto the asset row: await_jobs(project_id), then list_assets and view_image the file_path to check likeness.

Agent View of the PolicyLayer registry record for `generate_asset_reference`. HTML page: https://policylayer.com/tools/com-framesail-framesail/generate-asset-reference

## Facts

- Tool: `generate_asset_reference`
- Server: Framesail (`https://api.framesail.com/mcp`) — https://policylayer.com/tools/com-framesail-framesail.md
- Homepage: https://github.com/https://api.framesail.com/mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 4 (1 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `model` | string | no | Image model ID; empty uses the server default for reference images |
| `asset_id` | string | yes | ID of the asset to render a reference image for, from list_assets |
| `settings` | object | no | Model-specific settings (e.g. image quality/orientation); valid keys come from the model's settings_schema in list_models |
| `editable_sections` | object | no | Per-call prompt section overrides, keyed by section name; see get_section_template for the reference-image job |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "generate_asset_reference",
    "arguments": {
      "asset_id": "<asset_id>"
    }
  }
}
```

## Why generate_asset_reference is rated Medium

The tool creates new image assets and writes them to the database/storage (asset rows), which is a reversible data modification. While it triggers external rendering operations (similar to Execute), the primary effect is writing generated content to asset records. This is Write rather than Execute because the focus is on the persistent modification of asset data rather than executing arbitrary code.

From the tool's own definition: "Generates and renders reference images that are written to asset rows. The description states 'the job writes the image onto the asset row' and the tool modifies asset data by adding visual reference content. This is a create/modify operation."

Risk signals: Bulk/mass operation — affects multiple targets

## Use case

AI agents use generate_asset_reference to create or update resources in Framesail, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Framesail environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Framesail:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "generate_asset_reference": {
      "limits": [
        {
          "counter": "generate_asset_reference_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Framesail (67)

- `delete_asset` — Destructive — https://policylayer.com/tools/com-framesail-framesail/delete-asset.md
- `delete_project` — Destructive — https://policylayer.com/tools/com-framesail-framesail/delete-project.md
- `delete_style` — Destructive — https://policylayer.com/tools/com-framesail-framesail/delete-style.md
- `director_note` — Destructive — https://policylayer.com/tools/com-framesail-framesail/director-note.md
- `remove_music_track` — Destructive — https://policylayer.com/tools/com-framesail-framesail/remove-music-track.md
- `scan_script` — Destructive — https://policylayer.com/tools/com-framesail-framesail/scan-script.md
- `analyze_style` — Execute — https://policylayer.com/tools/com-framesail-framesail/analyze-style.md
- `build_scenes` — Execute — https://policylayer.com/tools/com-framesail-framesail/build-scenes.md
- `export_video` — Execute — https://policylayer.com/tools/com-framesail-framesail/export-video.md
- `regenerate_segment_asset` — Execute — https://policylayer.com/tools/com-framesail-framesail/regenerate-segment-asset.md
- `await_jobs` — Read — https://policylayer.com/tools/com-framesail-framesail/await-jobs.md
- `browse_audio_library` — Read — https://policylayer.com/tools/com-framesail-framesail/browse-audio-library.md
- `get_credit_balance` — Read — https://policylayer.com/tools/com-framesail-framesail/get-credit-balance.md
- `get_pipeline_progress` — Read — https://policylayer.com/tools/com-framesail-framesail/get-pipeline-progress.md
- `get_project` — Read — https://policylayer.com/tools/com-framesail-framesail/get-project.md
- `get_script` — Read — https://policylayer.com/tools/com-framesail-framesail/get-script.md
- `get_section_template` — Read — https://policylayer.com/tools/com-framesail-framesail/get-section-template.md
- `get_segment_assets` — Read — https://policylayer.com/tools/com-framesail-framesail/get-segment-assets.md
- `get_segments` — Read — https://policylayer.com/tools/com-framesail-framesail/get-segments.md
- `get_style` — Read — https://policylayer.com/tools/com-framesail-framesail/get-style.md
- `get_video_url` — Read — https://policylayer.com/tools/com-framesail-framesail/get-video-url.md
- `get_workflow_status` — Read — https://policylayer.com/tools/com-framesail-framesail/get-workflow-status.md
- `list_assets` — Read — https://policylayer.com/tools/com-framesail-framesail/list-assets.md
- `list_channels` — Read — https://policylayer.com/tools/com-framesail-framesail/list-channels.md
- `list_models` — Read — https://policylayer.com/tools/com-framesail-framesail/list-models.md
- `list_music_tracks` — Read — https://policylayer.com/tools/com-framesail-framesail/list-music-tracks.md
- `list_projects` — Read — https://policylayer.com/tools/com-framesail-framesail/list-projects.md
- `list_provider_keys` — Read — https://policylayer.com/tools/com-framesail-framesail/list-provider-keys.md
- `list_scenes` — Read — https://policylayer.com/tools/com-framesail-framesail/list-scenes.md
- `list_style_presets` — Read — https://policylayer.com/tools/com-framesail-framesail/list-style-presets.md
- …and 37 more: https://policylayer.com/tools/com-framesail-framesail.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-framesail-framesail · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-framesail-framesail
