Skip to main content
Glama
BlockRun MCP

BlockRun MCP

Official
by BlockRunAI

blockrun_realface

Enroll a real person's face as a BytePlus RealFace asset through a liveness check, then use its asset ID to generate Seedance 2.0 videos of that specific person.

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, Base or Arc 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, Base or Arc 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

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.8/5.0
Behavior5/5

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

Annotations only cover the generic non-read-only/non-destructive profile, while the description discloses what actually matters: per-action cost (FREE vs PAID $0.01), payment rails, the ~120s H5 link expiry and re-init recovery, multi-step liveness prerequisite, wallet-only indexing for list, and a privacy statement about what is not stored.

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

Conciseness4/5

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

Front-loaded with the capability and the model-compatibility constraint, then action bullets and a worked flow. Some redundancy between the action bullets and the numbered flow (e.g. re-stating init/status/enroll parameters), but every line carries operational value.

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?

For a five-action, paid, multi-step workflow spanning an out-of-band phone liveness check, the description covers prerequisites, costs, expiry/recovery, model compatibility, sibling handoff, privacy, and the returned ta_xxxx id. No output schema is present, and the key return value is described inline.

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 the baseline is 3, but the description adds real per-action semantics: which params each action needs (group_id for status/enroll, image_url for enroll/portrait), that image_url must be the SAME person as the liveness check, and that group_id doubles as a refresh token for init.

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?

States a specific verb and resource: enroll a real person's face as a BytePlus RealFace asset and drive Seedance 2.0 video with it. It immediately distinguishes itself from sibling media tools by naming blockrun_video and the real_face_asset_id handoff.

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?

Every action carries explicit when-to-use guidance, plus exclusions: 'Only those three models: seedance-2.5 ... does NOT accept ta_ assets', and 'For fictional/AI characters only; for a real person use the init→status→enroll liveness flow.' The numbered typical flow removes any remaining ambiguity about ordering.

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