Skip to main content
Glama
BlockRunAI

BlockRun MCP

Official
by BlockRunAI

blockrun_realface

Enroll a real person's face or AI character into a BytePlus RealFace asset for Seedance 2.0 video generation, with liveness verification and wallet-paid enrollment.

Instructions

Enroll a real person's face as a BytePlus RealFace asset, then drive Seedance 2.0 video with it (blockrun_video real_face_asset_id).

A RealFace asset (ta_xxxx) lets Seedance 2.0 / 2.0-fast / 2.0-mini generate video of a SPECIFIC real person — not a generic seed image. Only those three models: seedance-2.5 is numerically newer but does NOT accept ta_ assets, and seedance-1.5-pro never did. Enrollment is a multi-step flow because BytePlus requires a live phone liveness check (the real person nods + blinks on camera) before a face photo can be uploaded.

Actions:

  • init: FREE. Create an asset group + a phone H5 link. The tool renders the link as a QR code and opens it; the real person scans it on their phone and completes the ~1 min liveness check. Pass group_id to refresh an expired link.

  • status: FREE. Poll a group until status:"active" (ready_to_finalize:true). The H5 link is valid ~120s — re-init if it expires.

  • enroll: PAID ($0.01). Settles on Solana or Base from a wallet, or against your BlockRun account key. After the group is active, upload a clear front-facing photo (image_url) of the SAME person. Returns the ta_xxxx asset id.

  • portrait: PAID ($0.01). Settles on Solana or Base from a wallet, or against your BlockRun account key. Virtual Portrait — enroll an AI-GENERATED character from an image URL directly, NO liveness needed (one step: name + image_url → ta_xxxx). For fictional/AI characters only; for a real person use the init→status→enroll liveness flow.

  • list: FREE, WALLET MODE ONLY (assets are indexed by wallet address). List the RealFace + Virtual Portrait assets enrolled by this wallet (their ta_xxxx ids + names) so you can pick one for blockrun_video.

Typical flow:

  1. blockrun_realface action:"init" name:"Alice" → scan QR on phone, do liveness

  2. blockrun_realface action:"status" group_id:"legacy_rf_…" → repeat until ready_to_finalize:true

  3. blockrun_realface action:"enroll" name:"Alice" group_id:"legacy_rf_…" image_url:"https://…/alice.jpg" → ta_xxxx

  4. blockrun_video model:"bytedance/seedance-2.0" real_face_asset_id:"ta_xxxx" prompt:"…"

Privacy: BlockRun does not store face/liveness data — only the asset id, name, and the photo URL you supply.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameNoDisplay name for the person/character (required for init, enroll, and portrait).
actionYesWhat to do
agent_idNoAgent identifier for budget tracking and enforcement (enroll only).
group_idNoAsset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link). Not used by portrait.
image_urlNoPublic HTTPS URL to a clear front-facing face image (JPG/PNG/WEBP, ≤10MB). Required for enroll and portrait.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.45.1
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. Changed4 schema fields changedv0.22.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "init",
      -  "status",
      -  "enroll",
      -  "list"
      -]New value: +[
      +  "init",
      +  "status",
      +  "enroll",
      +  "portrait",
      +  "list"
      +]
    • changedInput schema / properties / group_id / description
      Previous value: -"Asset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link)."New value: +"Asset-group id from init (required for status and enroll; pass to init to refresh an expired H5 link). Not used by portrait."
    • changedInput schema / properties / image_url / description
      Previous value: -"Public HTTPS URL to a clear front-facing face photo (JPG/PNG/WEBP, ≤10MB). Required for enroll."New value: +"Public HTTPS URL to a clear front-facing face image (JPG/PNG/WEBP, ≤10MB). Required for enroll and portrait."
    • changedInput schema / properties / name / description
      Previous value: -"Display name for the person (required for init and enroll)."New value: +"Display name for the person/character (required for init, enroll, and portrait)."
  3. First observedv0.16.2

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are sparse (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description carries the full burden and delivers. It discloses the multi-step liveness requirement, the ~120s H5 link expiry with re-init instruction, per-action costs ($0.01), settlement mechanisms (Solana/Base wallet or account key), wallet-mode-only for list, and a privacy statement (no face/liveness data stored). Rich and complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose, but the description is long and partially redundant. The action list, the typical-flow example, and the model-compatibility paragraph overlap; the flow example restates what the action bullets already say. For a 5-action tool some length is warranted, but trimming the redundant step-by-step example would tighten it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a complex multi-step tool with no output schema and sparse annotations. It covers the full lifecycle (init→status→enroll/portrait→list), cost, payment routes, timing/liveness constraints, model compatibility, and privacy. An agent has everything needed to sequence calls correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema: group_id can refresh an expired H5 link or is unused by portrait; image_url must be the SAME person as the liveness check for enroll; agent_id is budget-tracking for enroll only. These constraints are not fully apparent from schema alone, earning a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a precise verb+resource statement: enroll a real person's face as a BytePlus RealFace asset, then drive Seedance 2.0 video with it. It clearly distinguishes this tool from its consumer blockrun_video (which takes real_face_asset_id) and differentiates portrait (AI characters, no liveness) from enroll (real person, liveness).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Exceptional routing guidance. Each of the five actions has explicit when-to-use context (FREE vs PAID, liveness vs no-liveness, wallet-only for list). It names the model constraint explicitly — seedance-2.5 is numerically newer but does NOT accept ta_ assets — and gives a step-by-step typical flow. Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.