Skip to main content
Glama

FaceLink

Python CI GitHub release License: GPL-3.0-or-later

FaceLink verwandelt eine eingeschränkte Shot-Beschreibung in bearbeitbare Blender-Szenenanimation. Es zielt auf Previs/White-Model-Arbeit ab: Schauspieler, Requisiten und Kameras bleiben gewöhnliche Blender-Objekte mit gewöhnlichen Keyframes, sodass Künstler das Ergebnis ziehen, neu timen und überschreiben können.

FaceLink ist kein Text-zu-Video-Generator und gibt einem LLM keine uneingeschränkte Python-Ausführung. Das Modell erzeugt eine typisierte ShotSpec; FaceLink validiert sie, kompiliert sie in eine kleine Whitelist von Patch-Operationen, inszeniert eine menschenlesbare Überprüfung in Blender und ändert die Szene erst, nachdem der Künstler Apply Staged Patch drückt.

Demo

FaceLink verwandelt eine Shot-Anweisung in bearbeitbare Blender-Keyframes

Diese viersekündige Demo wird aus der enthaltenen bearbeitbaren .blend-Szene gerendert. Die Bewegung wurde durch FaceLinks echten Patch-Executor angewendet und bleibt 24 gewöhnliche bearbeitbare Keyframe-Werte – kein generiertes Video, das außerhalb von Blender gebacken wurde.

Related MCP server: BlenderMCP

Aktuelles MVP

  • scannt die offene Blender-Szene und vergibt Objekten stabile FaceLink-IDs;

  • kompiliert move_to, turn_to, look_at, wait und play_clip-Beats;

  • erstellt/aktualisiert bearbeitbare Transforms, Keyframes, Kameras und Tracking-Constraints;

  • plant Transforms im Weltraum und konvertiert sie für parentete Blender-Objekte;

  • stellt den Workflow über einen MCP-Server für Codex/ChatGPT-kompatible MCP-Clients bereit;

  • unterstützt OpenAI-API-Key-Planung mit Structured Outputs;

  • führt eine nur auf localhost laufende, authentifizierte Brücke zwischen dem MCP-Prozess und Blender aus;

  • unterstützt Blender-seitiges Stage/Review/Apply/Discard, persistente Audit-Historie und sicheres Rollback auf eine ausgewählte aktuelle Sitzungsrevision.

  • lehnt intern überlappende Transform-/Action-Zeitlinien ab, warnt vor dem Überschreiben vorhandener Keyframes und lehnt kollidierende FaceLink-NLA-Clips ab;

  • zeigt gestaffelte Weltraum-Bewegungspfade und vorhergesagte Kamera-Frusten direkt im Blender-Viewport an, ohne Szenen-Datablocks zu erstellen;

  • scannt explizit markierte Navigationsmeshes und Hindernisse, plant deterministische Multi-Segment- Lokomotionspfade und warnt, wenn die gesweepten Grenzen eines Akteurs ein markiertes Hindernis schneiden;

  • erstellt Fingerabdrücke der gesamten Navigationsumgebung, sodass ein neu hinzugefügtes Hindernis oder ein bearbeitetes Navigationsmesh einen bereits gestaffelten Plan ungültig macht;

  • inventarisiert Armature-Bone-Hierarchien und bearbeitbare Blender-Actions, einschließlich Pose-Bone- Kanälen, Ruheorientierungen, Framebreichweiten und deterministischen Inhalts-Fingerabdrücken;

  • schlägt nur zur Überprüfung gedachte Bone-Maps mittels deterministischer Namensnormalisierung vor und misst dann die gemappte Hierarchie, lokale Ruheachsen und skalen-normalisierte Bone-Proportionen vor der Ausführung;

  • kopiert kompatible Actions über ein offenes rename_only-Bone-Map-Profil, schreibt bearbeitbare FCurve-Pfade neu, platziert das Ergebnis in NLA und entfernt erstellte Kopien beim Rollback;

  • sampelt überprüfte bake_pose-Profile in gewöhnliche bearbeitbare Ziel-Actions und korrigiert unterschiedliche lokale Ruheachsen und Bone-Skala mit expliziter Root-Motion-Politik und begrenzter Arbeit;

  • wertet vorhandene eigenständige Quell-Rig-Constraints und Treiber mit bake_evaluated_pose aus und backt dann die endgültige Deform-Bone-Pose in eine gewöhnliche bearbeitbare Action;

  • überträgt optional die Root-Motion des Armature-Objekts als platzierungserhaltendes relatives Delta, mit Quell-Einheiten- oder Rig-Skala-angepasster Übersetzung;

  • sagt den gestaffelten Kamerarahmen voraus, ohne Szenen-Datablocks zu erstellen, und misst Zielgröße, Zentrumsversatz, Safe-Area-Passung, Clipping und Zentrumspunkt-Okklusion, bevor der Künstler anwendet;

  • lehnt einen gestaffelten Plan ab, wenn sich ein referenzierter Transform, eine Parent-Verbindung, eine Sperre oder ein Szenen-Timing-Wert nach dem Szenen-Scan geändert hat.

Unterstützte Blender-Versionen

  • Primär: Blender 4.5 LTS (getestet mit 4.5.12)

  • Minimum: Blender 4.2 LTS

  • Best effort: Blender 5.x

Die auf dem Entwicklungsrechner gefundene Blender-4.0.2-Installation stammt aus der Zeit vor der Erweiterungs-Baseline. FaceLinks Quellcode kann dort weiterhin für Smoke-Tests geladen werden, aber 4.0 ist keine deklarierte unterstützte Version.

Die Alpha-Version installieren

Laden Sie FaceLink-Setup-0.3.8.exe von der FaceLink 0.3.8 Alpha-Version herunter, öffnen Sie sie, wählen Sie Check setup, dann Install FaceLink.

Diese Alpha-EXE ist noch nicht code-signiert, daher zeigt Windows SmartScreen möglicherweise eine Warnung zu einem unbekannten Herausgeber. Verifizieren Sie sie gegen die SHA256SUMS.txt der Version, bevor Sie More info → Run anyway wählen, und verwenden Sie nur Dateien, die von der offiziellen FaceLink-Versionsseite heruntergeladen wurden.

FaceLink grafischer Windows-Installer

FaceLink bündelt kein Blender. Es erkennt eine vorhandene offizielle Blender-4.2-oder-neuer-Installation, was die Version klein hält und jedem Künstler die Wahl lässt, Blender 4.5 LTS oder eine neuere kompatible Version zu verwenden. Wenn Blender fehlt, installieren Sie es von der offiziellen Blender-LTS-Seite.

Der grafische Installer enthält den FaceLink-Host, die Erweiterung, das Prüfsummen-Manifest und das sichere PowerShell-Backend in einer kleinen EXE. Er verifiziert die eingebetteten Dateien, erkennt Python und Blender, installiert beide FaceLink-Komponenten und konfiguriert sicher die gemeinsame lokale ChatGPT-Desktop/Codex- MCP-Datei. Er fordert keinen Administratorzugriff an und speichert keinen API-Key.

Für eine manuelle Windows-Installation halten Sie die vier rohen Versionsdateien zusammen und führen Sie aus:

.\install-windows.ps1 `
  -WheelPath .\facelink-0.3.8-py3-none-any.whl `
  -ExtensionZipPath .\facelink-0.3.8.zip `
  -ChecksumsPath .\SHA256SUMS.txt

Das Skript verifiziert die Versions-Hashes, findet Python 3.11+ und Blender 4.2+, erstellt einen isolierten FaceLink-Host, installiert die Erweiterung und konfiguriert den genauen facelink-mcp.exe-Pfad. Übergeben Sie -PlanOnly, um jeden aufgelösten Pfad zu inspizieren, ohne etwas zu installieren. Übergeben Sie -BlenderExe C:\path\to\blender.exe, wenn Blender portabel oder nicht auf einem herkömmlichen Pfad ist. Übergeben Sie -SkipMcpConfiguration, um die lokale MCP-Konfiguration unangetastet zu lassen. Für eine vorhandene FaceLink-Erweiterung aktualisieren Sie sie über Blender-Preferences oder entfernen Sie die alte Version, bevor Sie den Erweiterungs-Installationsschritt ausführen.

Nachdem Sie FaceLinks Brücke in Blender gestartet haben, validieren Sie das vollständige Setup:

facelink doctor --blender-exe C:\path\to\blender.exe

Die Diagnose gibt niemals API-Keys oder das Blender-Bridge-Bearer-Token aus. Ein fehlender API-Key ist nur eine Warnung, da ein MCP-Client sein eigenes Modell verwenden kann.

Um die beiden Komponenten manuell zu installieren, fahren Sie unten fort.

In Blender 4.2 oder neuer öffnen Sie Edit → Preferences → Get Extensions → Install from Disk, wählen Sie facelink-0.3.8.zip, aktivieren Sie FaceLink, öffnen Sie den FaceLink-Tab in der 3D-Viewport- Seitenleiste und drücken Sie Start Bridge.

Installieren Sie den Python-Host in einer isolierten Python-3.11-oder-neuer-Umgebung:

py -3.11 -m venv .venv
.\.venv\Scripts\python -m pip install .\facelink-0.3.8-py3-none-any.whl
.\.venv\Scripts\facelink-mcp

Verwenden Sie SHA256SUMS.txt aus der Version, um jedes heruntergeladene Artefakt zu verifizieren. Fahren Sie unten mit der MCP-Client-Konfiguration und dem sicheren Stage/Review/Apply-Workflow fort.

Für die Entwicklung installieren

cd E:\FaceLink
$env:UV_CACHE_DIR='E:\CodexData\Work\FaceLink\uv-cache'
uv sync --extra dev
uv run pytest

Für die reproduzierbare Multi-Version-Akzeptanzmatrix, einschließlich echter Erweiterungsinstallation:

./scripts/run_acceptance.ps1

Das Harness schreibt JUnit-, Coverage-, pro-Blender-JSON- und Befehlsprotokolle unter artifacts/. Siehe docs/TESTING.md für die genauen Gates und bekannten Ausschlüsse.

Die Blender-Erweiterung bauen:

$env:FACELINK_BLENDER_EXE='C:\path\to\Blender\blender.exe' # optional if on PATH
./scripts/build_extension.ps1

Dann in Blender 4.5: Edit → Preferences → Get Extensions → Install from Disk, wählen Sie dist/facelink-0.3.8.zip, aktivieren Sie FaceLink und öffnen Sie den FaceLink-Tab in der 3D-Viewport- Seitenleiste. Drücken Sie Start Bridge.

Den MCP-Server ausführen:

uv run facelink-mcp

Sicher die gemeinsame lokale ChatGPT-Desktop/Codex-Konfiguration erstellen oder aktualisieren:

uv run facelink configure-mcp `
  --mcp-launcher E:\FaceLink\.venv\Scripts\facelink-mcp.exe `
  --instance-dir E:\CodexData\Work\FaceLink\instances

FaceLink sichert eine vorhandene ~/.codex/config.toml, bewahrt nicht zusammenhängende Einstellungen und besitzt nur seinen klar markierten Block. Die resultierende OpenAI-kompatible Konfiguration ist TOML:

[mcp_servers.facelink]
command = "E:\\FaceLink\\.venv\\Scripts\\facelink-mcp.exe"
enabled = true

[mcp_servers.facelink.env]
FACELINK_INSTANCE_DIR = "E:\\CodexData\\Work\\FaceLink\\instances"

Die ChatGPT-Desktop-App, die Codex-CLI und die Codex-IDE-Erweiterung teilen sich diese lokale Konfiguration. ChatGPT im Web liest keine lokale MCP-Konfiguration und würde ein separat gehostetes Plugin erfordern. Siehe die offizielle OpenAI-MCP-Dokumentation. Dieselbe FACELINK_INSTANCE_DIR wird für zukünftige Blender-Prozesse gesetzt; starten Sie Blender und den MCP-Client nach der Installation neu.

Mit einem MCP-Client ist die sichere Standardsequenz:

  1. scan_scene

  2. die natürliche Sprach-Anfrage des Benutzers in einen typisierten Shot umwandeln und preview_shot aufrufen

  3. stage_scene_patch aufrufen

  4. den Benutzer die Zusammenfassung in Blender prüfen lassen und Apply Staged Patch oder Discard drücken

Dieser Pfad verwendet das bereits im MCP-Client verfügbare Modell; FaceLink selbst benötigt keinen API-Key. apply_scene_patch bleibt als expliziter Power-User-Bypass verfügbar.

BYOK-Planung

$env:OPENAI_API_KEY='your-key'
uv run facelink plan --brief "Cube walks to Marker in 2 seconds, camera follows Cube" `
  --snapshot scene.json --out shot.json

Oder die laufende Blender-Szene scannen, planen, kompilieren und das Ergebnis in einem Befehl stagen:

$env:OPENAI_API_KEY='your-key'
uv run facelink workflow `
  --brief "Cube walks to Marker in 2 seconds, camera follows Cube"

Der Befehl wendet nichts an. Überprüfen und genehmigen Sie das gestaffelte Ergebnis in Blender.

Um eine vorhandene Action auf eine kompatible Armature mit unterschiedlichen Bone-Namen auszurichten, übergeben Sie ein überprüftes offenes Profil:

uv run facelink validate-profile `
  --profile profiles/mixamo_to_facelink_compact.json

uv run facelink suggest-profile `
  --snapshot scene.json --source-rig source-armature-id `
  --target-rig target-armature-id --action "Mixamo Walk" `
  --name "Reviewed map" --out suggestion.json

uv run facelink analyze-profile `
  --profile profiles/mixamo_to_facelink_compact.json `
  --snapshot scene.json --source-rig source-armature-id `
  --target-rig target-armature-id --out compatibility.json

uv run facelink plan `
  --brief "Apply Mixamo Walk to the target rig for two seconds" `
  --snapshot scene.json `
  --retarget-profile profiles/mixamo_to_facelink_compact.json `
  --out shot.json

Vorschläge werden niemals automatisch angewendet und tragen immer review_required: true. Das Kompatibilitätsergebnis ist safe, review, bake_required oder incompatible. Der Compiler blockiert rename_only, wenn Hierarchie, Ruheorientierung oder Proportionen Backen erfordern. FaceLink erstellt Fingerabdrücke sowohl der Actions als auch der referenzierten Rigs, sodass Kurven- oder Ruhepose-Bearbeitungen nach dem Scan vor der Mutation fehlschlagen; es blockiert auch unskalierte Pose-Bone-Übersetzungskanäle über unterschiedlich große Rigs. Generierte Actions und NLA-Streifen bleiben gewöhnliche bearbeitbare Blender-Daten. Siehe profiles/README.md und examples/retargeted_clip_shot.json.

Wenn die Analyse bake_required sagt, weil lokale Ruheachsen oder Rig-Skala unterschiedlich sind, ändern Sie das überprüfte Profil auf adapter: "bake_pose", setzen Sie sein explizites source_rig und optional sample_step (1-16) und root_motion (scale, preserve oder drop). FaceLink sampelt die native Framebreichweite der Quell-Action, schreibt lineare Location/Rotation/Scale-Keys in eine normale Ziel-Action und legt sie in denselben bearbeitbaren NLA-Workflow. Objekt-Level-Action-Kanäle werden weggelassen, es sei denn, object_motion ist explizit; andernfalls muss Root-Motion auf einem gemappten Root-Pose- Bone liegen. Dieser erste Adapter erfordert äquivalente gemappte Parent-Hierarchie und uneingeschränkte Quell-/Ziel-Deform-Bones. Siehe profiles/mixamo_to_facelink_compact_bake.json und examples/baked_retargeted_clip_shot.json.

Wenn die Quell-Action Controller-Bones oder Custom Properties animiert und die Quell-Deform-Bones ihre endgültige Bewegung durch Constraints/Treiber erhalten, verwenden Sie adapter: "bake_evaluated_pose". Die überprüfte bone_map mappt Quell-Deform-Bones – nicht die Controller-Kanäle – auf Ziel-Deform-Bones. Version 1 erlaubt nur Abhängigkeiten auf demselben Quell-Armature-Objekt/Daten, lehnt externe Hilfsobjekte und szenengesteuerte Variablen ab und erfordert weiterhin äquivalente gemappte Parent-Hierarchie plus uneingeschränkte/ungedriverte Ziel-Bones. Es entdeckt keine Controller oder konvertiert IK/FK-Systeme automatisch. Siehe profiles/controller_to_deform_evaluated_bake.json und examples/evaluated_retargeted_clip_shot.json.

Wenn sich die gesamte Objektbewegung auf dem Quell-Armature-Objekt befindet, füge object_motion: "preserve" oder "scale" zu einem der beiden Bake-Adapter hinzu. FaceLink verwendet die Transformation des Quellobjekts relativ zu seinem ersten abgetasteten Frame, wendet diese Delta nach der aktuellen Welt-Transformation des Zielobjekts an und schreibt gewöhnliche Objekt-Location/Rotation/Scale-FCurves in denselben generierten Action. scale multipliziert die Delta-Translation mit dem Median-Verhältnis der Längen des gemappten Rigs; preserve behält Quell-Einheiten bei. Version 1 erfordert unparented Quell-/Ziel-Armatures mit keinen Objekt-Constraints oder getriebenen Zielobjekt-Transformationen. Siehe profiles/object_motion_bake.json und examples/object_motion_clip_shot.json.

FaceLink-Revisionen von der Kommandozeile aus inspizieren oder zurücksetzen:

uv run facelink history
uv run facelink rollback --revision rev-0123456789abcdef

Revisions-Metadaten werden in der .blend-Datei gespeichert. Ausführbare Rollback-Snapshots bleiben bewusst nur für die Sitzung bestehen, da sie Live-Blender-Datablock-Referenzen enthalten. Das Zurücksetzen auf eine ältere Revision setzt auch jede neuere FaceLink-Revision zurück, um einen linearen Szenenzustand zu bewahren.

Ein API-Schlüssel ist optional, wenn ein MCP-Client die Sprachmodell-Planung selbst durchführt. ChatGPT-Abonnements und OpenAI-API-Abrechnung sind getrennt; eine ChatGPT-Mitgliedschaft ist kein API-Schlüssel. Siehe docs/ARCHITECTURE.md für die Vertrauensgrenze.

Navigations-Workflow

Wähle ein begehbares Mesh aus und verwende FaceLink → Navigation → Navmesh. Wähle Wände, Requisiten oder andere blockierende Objekte aus und markiere sie als Obstacle. Ein move_to-Beat behält die bestehende gerade Linie standardmäßig bei; setze path_mode auf navmesh, um durch verbundene Navigationsdreiecke zu routen. Der Compiler verteilt gewöhnliche bearbeitbare Location-Keyframes nach Pfaddistanz und erzwingt lineare Interpolation, sodass gebogene Handles die begehbare Korridor nicht verlassen können.

Navigation ist bewusst explizit. FaceLink errät keine Objektnamen oder behandelt nicht stillschweigend jedes Meshl-Objekt als Hindernis. Die derzeitige Planung in v0.3.0 wird auf XY projiziert und ist für einzelne Previs-Bodenebenen gedacht; gestapelte Stockwerke, live bewegte Hindernisse und Menschenmengen-Routing sind noch nicht unterstützt. Siehe examples/messwalk_walk_shot.json.

Kamera-Kompositions-Vorabprüfung

Kameraeinstellungen mit einem Ziel werden während des Stagings überprüft. FaceLink projiziert die Weltgrenzen des Targets in die vorhergesagte Kameraperspektive und meldet Beschnitt, unsichere Ränder, die Objektgröße und Abweichung der Konturzone. Ein schreibgeschützter Blender-Raycast meldet, wenn ein anderes Objekt das Zielzentrum blockiert. dolly_in beditiert sowohl Start als auch Ende. Schwellenwerte sind in camera.composition eingetragen, bleiben im ShotSpec sichtbar und können explizit deaktiviert werden. Siehe examples/composition_checked_shot.json.

Dies ist eine deterministische Vorabprüfung, keine künstlerische Qualitätsbewertung. Sie rendert nicht, verwendet kein Visuelles modell, bewertes Licht nicht und garantiert nicht, dass jeder Teil eines komplexen Subjekts nicht verdeckt ist. Version 0.3.3 benötigt Perspektivkameras ohne Objektivverschiebung und meldet andere Projektionstypen als nicht unterstützt, anstatt irreführende Metriken in den Ausgaben zu liefern.

Repository-Karte

src/facelink/          Core schemas, compiler, bridge client, providers, CLI and MCP server
blender_extension/    Zero-dependency Blender extension and local bridge
schemas/              Portable JSON Schema for integrations
examples/             Example editable shot specifications
tests/                 Unit tests and a Blender headless smoke test
scripts/               Build and verification scripts
docs/                  Architecture, protocol and development notes

Projektstatus

Version 0.3.8 ist eine Creator-Review-Alpha, noch kein Produktions- Animationssystem in Produktionsreife. Dieses Bake-Tool führt begrenztes transformbewusste Pose-Baking für geprüfte Mappings durch und kann bestehende Constraints und Treiber auswerten, wenn jede Abhängigkeit auf der erkannten Quell-Armature. Es kann auch unparented, unconstrained Armature-Objekt-Bewegung übertragen, ohne die Startplatzierung des Ziels zu verschieben. Das Tool ist keine Inferenzkontrolle, kein Übersetzer für IK/FK-Systeme, folgt keine externen Hilfsobjekte, löst keine unterschiedlich gemappten Parent-Hierarchien, behandelt keine parenthaltenden/constructierten Objekt-Root, synthesiert keine fehlende Bewegung und beurteiltund keine visuelle Ergebnisse. Multi-Level-Navigation, Multi-Shot-Sequenzierung und visuelle Diff-Overlay bleiben Folgeaufgaben.

Der Windows-Release verfügt nun über einen einzelnen Datei-Bildschirminstaller, eine sichere lokale MCP-Konfiguration, einen secretsicheren Umgebungs-Doctor und eine reproduDa blenden-Remake-Demonstration. Vor der breiteren Bereitstellung dieser Alpha sollten Sie die Installation mit Nicht-Entwicklern testen und die Linux/macOS-Installationsabdeckung vollständig zcoverage shließen.

Lizenz

FaceLink ist freie Software, die unter der GNU-GPL-Version 3 oder jeder neueren Version lizenziert ist. Die Blender-Erweiterungsverbreitung enthält bleibt denselben Lizenztext enthalten.

Available Tools

17 tools
analyze_retarget_profileC

Measure hierarchy, rest-axis and proportion safety for a reviewed bone map.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes
source_rig_idYes
target_rig_idYes
scene_snapshotYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description must disclose behavior, but it only says 'Measure', which implies a read-only operation without confirming side effects or lack of mutations. It fails to mention return format, potential errors, or any safety guarantees.

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

Conciseness2/5

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

The description is a single sentence, which is brief but severely under-specified. It omits critical information like parameter roles, expected inputs, and output semantics, making it more under-specified than concise.

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

Completeness2/5

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

Given the high complexity of the input schemas (nested object types, many fields) and the existence of an output schema, the description lacks completeness. It doesn't explain what 'measure safety' means in terms of return values or how the tool evaluates the bone map against the provided rigs and scene.

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

Parameters1/5

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

The schema contains 4 complex parameters (profile, source_rig_id, target_rig_id, scene_snapshot) with 0% description coverage. The description provides no explanation of what these parameters mean or how they are used, leaving the agent without essential semantic guidance.

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

Purpose4/5

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

The description uses the verb 'Measure' and specifies three measurable aspects (hierarchy, rest-axis, proportion safety) for a reviewed bone map. This distinguishes it from sibling tools like validate_retarget_profile, though the phrase 'reviewed bone map' is somewhat unclear and doesn't explicitly reference the profile object.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as validate_retarget_profile or suggest_retarget_profile_map. The description gives no context for selection or preconditions.

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

apply_scene_patchB

Power-user escape hatch: apply a white-listed patch without Blender review staging.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits itself. It indicates a bypass of review staging but lacks details on side effects, validation, undo capability, or safety implications. This is insufficient for a mutation tool that applies patches directly.

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?

The description is one clear, front-loaded sentence that efficiently expresses the core purpose. It is not bloated, though it could be expanded slightly without losing conciseness.

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

Completeness2/5

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

Given the tool's complexity (large nested schema), absence of annotations, and no parameter descriptions, a single sentence is inadequate. Major gaps include patch structure, fingerprint validation, the meaning of 'white-listed', and workflow integration with sibling tools.

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

Parameters1/5

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

Schema description coverage is 0% and the description provides zero information about the patch parameter or instance_id. The complex ScenePatch schema is left entirely self-documenting, leaving the agent without semantic guidance for constructing valid inputs.

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?

The description clearly states the action ('apply'), the resource ('a white-listed patch'), and the key differentiator ('without Blender review staging'), effectively distinguishing it from the staged patch workflow represented by sibling tools.

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

Usage Guidelines3/5

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

The phrase 'power-user escape hatch' implies an alternative to the normal staging workflow, but it does not explicitly name alternatives (like stage_scene_patch) or provide when-not-to-use guidance. The usage context is implied rather than clearly stated.

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

apply_staged_patchC

Apply the patch that a human has reviewed in Blender.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states that a human-reviewed patch is applied, but doesn't disclose side effects, reversibility, or whether it requires any prerequisites. For a mutating operation, this is insufficient behavioral transparency.

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

Conciseness5/5

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

Single sentence with no filler, front-loads the core action. It's appropriately sized for a simple tool, though it sacrifices completeness for brevity.

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

Completeness2/5

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

The tool has an output schema and low parameter count, but the description omits crucial context about the patch application workflow, such as whether it can be undone, how it relates to staged patches, or what the output means. Given the sibling tools suggest a review/apply pipeline, more context would be needed.

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

Parameters1/5

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

The schema lists one optional parameter, instance_id, with no description in the schema (0% coverage). The description provides no context for what instance_id means or how it should be used, leaving the agent to guess. Since the parameter name is relatively self-explanatory, it's not a 0, but the description adds no value.

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

Purpose4/5

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

The description uses the verb 'Apply' and identifies the resource as 'the patch that a human has reviewed in Blender,' clearly distinguishing it from staging or discarding operations. However, it doesn't explicitly contrast with apply_scene_patch, a closely named sibling, so it's clear but not fully differentiated.

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

Usage Guidelines3/5

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

The phrase 'that a human has reviewed' implies the appropriate time is after human review, offering some guidance. But there are no explicit when-to-use versus alternatives, no mention of workflow steps like get_staged_patch or discard_staged_patch, and no exclusions. The guidance is implied rather than explicit.

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

discard_staged_patchA

Discard the staged patch without changing Blender.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the transparency burden. It reveals a key behavioral aspect—this operation does not change Blender—but does not disclose other important details such as idempotency, whether the discard is reversible, or any side effects on the patch data. More specifics would be needed for full transparency.

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

Conciseness5/5

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

The description is a single, single-purpose sentence without extraneous words. It effectively communicates the tool's function in as few words as possible, demonstrating excellent conciseness and structure.

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

Completeness4/5

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

For a simple tool with an optional parameter and an existing output schema, the description adequately covers the core functionality. It could be improved by noting the consequence of discarding (e.g., the patch is permanently lost), but overall it is sufficient for an agent to understand the primary use.

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

Parameters2/5

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

The lone parameter instance_id has no description in the schema, and the description does not mention it at all. With 0% schema description coverage, the tool description should compensate but does not, leaving the agent to rely on the parameter name alone.

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?

The description uses a specific verb 'discard' and names the resource 'staged patch,' clearly identifying what the tool does. The phrase 'without changing Blender' adds a distinguishing context, differentiating it from sibling tools like apply_staged_patch or undo_last_apply.

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

Usage Guidelines3/5

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

The description implies the tool is for discarding a staged patch, but it does not explicitly state when to use it versus alternatives like apply_staged_patch or get_staged_patch. No exclusions or alternative guidance is provided, so usage context is only implicitly conveyed.

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

get_blender_jobA

Get the status of a previously submitted Blender job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the burden of behavioral disclosure. It accurately indicates this is a read-only operation, but it doesn't explain what happens when the job ID is invalid, whether it returns partial results, or any side effects. The simplicity of the tool lowers the risk, but the description adds no extra context beyond the basic read semantics.

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

Conciseness5/5

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

A single, concise sentence that gets straight to the point. It contains no fluff, no redundant content, and is immediately scannable. The length is appropriate for the tool's simplicity.

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

Completeness4/5

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

The presence of an output schema means return-value documentation is already handled, so the description does not need to explain response fields. For a simple get-status operation, the description covers the core scenario. It doesn't mention error cases or status semantics, but given the tool's narrow scope and the output schema, it is sufficiently complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate. The word 'Blender job' implies that 'job_id' refers to the Blender job identifier, but 'instance_id' is left entirely unexplained. The optional parameter's purpose is unclear—does it specify a particular instance or filter? Because the description does not clarify either parameter beyond what the schema already shows, it falls short for a 0%-coverage case.

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?

The description uses a specific verb and object: 'Get the status of a previously submitted Blender job.' It clearly identifies the resource (Blender job) and the action (retrieve status), and it implicitly distinguishes this from siblings like 'list_blender_instances' or 'preview_shot.' The phrase 'previously submitted' hints that the job must already exist, which adds scope.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. Usage is only implied by the verb 'get' and the term 'status.' No comparison with sibling tools is provided, so this is a bare minimum.

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

get_staged_patchA

Read the patch and artist-facing summary currently waiting for approval.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

Annotations are not provided, so the description carries the burden. It says 'Read', which indicates a non-mutating operation, but it doesn't disclose details such as whether the patch is returned in a specific format, what happens if there's no staged patch, or any rate limits. It adds minimal behavioral context beyond the verb itself.

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

Conciseness5/5

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

The description is a single concise sentence, about 12 words, with no redundancy. It is front-loaded with the verb 'Read' and quickly identifies the target. Perfectly concise.

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

Completeness3/5

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

With an output schema present, the description needn't explain return values, but it still lacks context on preconditions (e.g., a staged patch exists), side effects, or the meaning of instance_id. Given the sibling tools like apply_staged_patch and discard_staged_patch, it is clearly part of a workflow, but the description doesn't elaborate. Overall, adequate but with notable gaps, earning a 3.

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

Parameters3/5

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

Schema description coverage is 0%, but there is only one parameter (instance_id) that is optional and nullable. The description doesn't explain what instance_id refers to (likely the instance identifier) or how it affects the result. Given the low coverage, the description should compensate, but it adds no param information. The baseline for low coverage is below 3, but the single param is simple, so a 3 seems appropriate.

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

Purpose4/5

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

The description clearly states the tool reads (Read) a patch and artist-facing summary waiting for approval, distinguishing it from apply_staged_patch and discard_staged_patch. It is specific about the resource (staged patch) and its state (waiting for approval), though it doesn't explicitly mention the return type.

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

Usage Guidelines4/5

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

The phrase 'currently waiting for approval' implies it's used before applying or discarding a staged patch, which provides context. However, it doesn't explicitly state when not to use it or mention alternatives like get_blender_job, so it falls short of a 5.

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

list_blender_instancesA

List Blender windows that currently have the FaceLink bridge running.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It adds the behavioral condition 'currently have the FaceLink bridge running', which is useful. However, it does not explicitly state read-only nature or side effects; while 'List' implies a safe operation, the description could be more explicit about being read-only and non-destructive.

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

Conciseness5/5

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

The description is a single sentence, front-loaded with the verb, and contains no filler. Every word contributes meaning, making it highly concise and easy to parse.

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?

Given the simplicity of the tool (no params, no annotations, and an output schema exists), the description is complete. It states what it lists and the specific filter condition. The output schema covers return values, so no further detail is needed.

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?

The tool has zero parameters and the schema is empty, so there is nothing to explain. The baseline for 0 params is 4, and the description does not need to add parameter details. It appropriately avoids irrelevant information.

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?

The description clearly states the action ('List') and the resource ('Blender windows that currently have the FaceLink bridge running'). It distinguishes from sibling tools like facelink_health and get_blender_job by specifying the exact scope (only instances with the bridge active).

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

Usage Guidelines4/5

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

The description implies usage when you need to enumerate active Blender instances. It does not explicitly mention alternatives or exclusions, but the context is clear given the sibling list; the agent can infer this is the tool for listing connected instances. No explicit guidance on when not to use, but the purpose is unambiguous.

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

list_revision_historyA

List persistent FaceLink audit entries and current-session rollback availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that audit entries are persistent and rollback availability is current-session, which adds context. However, it doesn't mention side effects, read-only nature, or what 'availability' entails beyond the schema.

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?

The description is one concise sentence, front-loaded with the core action. It is efficient, though it could benefit from a brief note on the parameter.

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

Completeness3/5

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

Given an output schema exists, the description need not explain return values. But with no annotations and a single undocumented parameter, it leaves some gaps about why instance_id matters and what 'rollback availability' means practically. It's adequate but not complete.

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 0%, and there is only one parameter with no description. The description does not explain what instance_id does, so it fails to add meaning. However, with only one optional parameter, the gap is less critical, but the description should at least hint at filtering by instance.

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

Purpose4/5

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

The description clearly states the tool lists persistent audit entries and rollback availability for FaceLink, using specific verbs and resources. It distinguishes from siblings like rollback_to_revision by focusing on listing, though it doesn't explicitly name alternatives.

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

Usage Guidelines3/5

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

It implies usage for auditing and checking rollback, but no explicit when-to-use or when-not-to-use guidance. Sibling tools suggest a broader ecosystem, but the description lacks exclusions or alternatives.

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

preview_shotB

Compile a shot, including deterministic navmesh paths, without applying it.

ParametersJSON Schema
NameRequiredDescriptionDefault
shot_specYes
scene_snapshotYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states that the tool does not apply the shot and that navmesh paths are deterministic, but it does not clarify whether temporary state is created, what the compiled output represents, or whether a valid scene snapshot is a prerequisite.

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

Conciseness5/5

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

The description is a single sentence that front-loads the verb and key constraints, with no filler, repetition, or vague qualifiers. It conveys the core purpose and the most important behavioral qualifier extremely efficiently.

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

Completeness2/5

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

Despite a very complex schema with two large required structs and no annotations, the description is only one sentence. The output schema exists, so return values need not be detailed, but the description omits invocation context, prerequisites, and the distinction from validation/staging tools, making it insufficient for reliable tool selection in a complex workflow.

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

Parameters2/5

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

Schema description coverage is 0%, yet the description adds no meaning to the two required top-level parameters, shot_spec and scene_snapshot, or how they interact. The parameter names are somewhat self-explanatory, but the description fails to compensate for the absent schema descriptions.

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

Purpose4/5

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

The description uses a specific verb ('Compile') and resource ('shot'), and adds scope via 'including deterministic navmesh paths' and 'without applying it,' which distinguishes it from apply/stage tools. It is clear enough for a preview action, though 'compile' is somewhat domain-specific and does not explicitly contrast with validate_shot_spec.

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

Usage Guidelines3/5

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

The phrase 'without applying it' implies this is for previewing before an apply/stage action, giving some usage context. However, it never names alternatives like apply_scene_patch, stage_scene_patch, or validate_shot_spec, nor states when to prefer this tool over them.

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

rollback_to_revisionB

Undo the selected revision and every newer FaceLink revision in this session.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo
revision_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the scope of the operation ('selected revision and every newer') and session-level scoping, which is useful. However, it does not state whether the operation is reversible, whether it creates a new revision, or how it affects instances, leaving important safety aspects undisclosed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no superfluous words. It conveys the core action and scope in 12 words, achieving excellent conciseness without sacrificing immediate clarity.

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

Completeness2/5

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

For a destructive rollback operation with no annotations, the description omits critical context: the role of instance_id, the permanence of the undo, and any relationship to the output schema. While the output schema is available, the description is not complete enough for safe and correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not map 'selected revision' to the revision_id parameter or explain the purpose of instance_id. The agent cannot derive parameter meanings from the description beyond their names, and instance_id is entirely unexplained.

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?

The description uses the specific verb 'Undo' with the resource 'FaceLink revision' and explicitly defines the scope as 'the selected revision and every newer', which clearly distinguishes it from sibling tools like list_revision_history and undo_last_apply. The purpose is immediately understandable.

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

Usage Guidelines2/5

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

No explicit guidance is given on when to use this tool versus alternatives. It does not mention list_revision_history, undo_last_apply, or any criteria for when a rollback is appropriate, leaving the agent to infer usage from the broad description.

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

scan_sceneB

Read stable IDs, bounds, nav data, armature bones and Action channel inventories.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'Read' implies a read-only operation, it does not explicitly state safety, authorization requirements, or potential side effects, leaving the agent uncertain about the tool's impact.

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

Conciseness5/5

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

The description is a single, focused sentence that lists the data types without any redundant wording or unnecessary detail. It front-loads the action and immediately conveys the scope of the tool.

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

Completeness2/5

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

Despite having an output schema (so return format disclosure is less critical), the description remains incomplete. It misses usage context, parameter semantics, and any indication of when this tool is appropriate, leaving an agent underprepared to invoke it correctly.

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

Parameters2/5

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

The sole parameter instance_id is completely absent from the description, and the schema has no description for it (0% coverage). The description fails to explain what this parameter is for or how it affects the scan, forcing the agent to infer its meaning from the title alone.

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?

The description uses the verb 'Read' and explicitly lists the data types (stable IDs, bounds, nav data, armature bones, Action channel inventories), making the tool's purpose specific and understandable. It clearly distinguishes from siblings by focusing on a broad scene scan rather than specialized validation or analysis, even though it doesn't name alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It lacks any mention of use cases, prerequisites, or contexts where this scan is preferred, and doesn't address when not to use it.

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

stage_scene_patchA

Stage a patch in Blender for visible human review without changing the scene.

ParametersJSON Schema
NameRequiredDescriptionDefault
patchYes
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

The description is transparent about the key behavior: it stages the patch without modifying the scene. However, it does not detail potential side effects (e.g., storing the patch, requiring permissions) or what happens to existing staged patches. Given the lack of annotations, it covers the most critical behavior but not exhaustively.

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

Conciseness5/5

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

The description is a single, clear sentence with no fluff. It efficiently conveys purpose and behavior without unnecessary detail.

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

Completeness3/5

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

The description is sufficient for a basic understanding of the operation, but it omits any context about the patch structure, the meaning of 'staging', or how it relates to other tools like get_staged_patch or discard_staged_patch. While an output schema exists (so return values are not required), the description does not address prerequisites or error conditions.

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

Parameters1/5

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

Schema coverage is 0%. The description does not explain any of the parameters (patch, instance_id) or the nested structure (ScenePatch, PatchOperation). With a complex schema, this omission leaves the agent without guidance on how to construct valid inputs, failing to compensate for the low schema coverage.

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?

The description clearly states the tool's purpose: to stage a patch in Blender for human review, explicitly noting it does not change the scene. This distinguishes it from apply_scene_patch and other sibling tools.

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

Usage Guidelines4/5

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

It specifies when to use it (for review before applying) and highlights the non-destructive nature ('without changing the scene'), giving clear guidance. It does not explicitly mention when not to use it, but the context implies it is for staging rather than applying.

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

suggest_retarget_profile_mapB

Suggest exact/normalized/alias bone matches; output always requires human review.

ParametersJSON Schema
NameRequiredDescriptionDefault
action_nameNo
profile_nameYes
source_rig_idYes
target_rig_idYes
scene_snapshotYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses an important behavioral trait: 'output always requires human review', which implies the tool doesn't commit changes and returns suggestions only. However, it does not describe what happens on failure, whether the output is a full map or just candidate matches, or what the output schema contains (though an output schema exists). The description adds the human-review requirement, which is valuable, but it's minimal.

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?

The description is extremely concise: one sentence with two clauses. It front-loads the core purpose and adds one behavioral note. No waste, but it is so short it lacks detail for other dimensions. For what it intends to cover, it's well-structured.

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

Completeness2/5

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

The tool takes a complex scene_snapshot object, has an output schema, and is in a domain where sibling tools suggest a workflow (validate/analyze/suggest). The description is insufficient: it does not mention how the scene_snapshot is used, whether action_name is required for generating a map, what the output format is (despite an output schema), or potential side effects. Given the complexity of the input and the tool's role in a pipeline, the description is too thin.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the description provides no parameter explanations beyond what the schema names suggest. The schema itself has 5 parameters (source_rig_id, target_rig_id, profile_name, scene_snapshot, action_name optional) with clear names and types, but no descriptions anywhere. The tool description does not explain the role of scene_snapshot or action_name, nor how they affect the suggestion. Since coverage is 0%, the description must compensate, and it fails to do so.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Suggest exact/normalized/alias bone matches' for retarget profiles. It identifies the specific action (suggest bone matches) and the resource (retarget profile map). However, it doesn't explicitly distinguish itself from sibling tools like 'validate_retarget_profile' or 'analyze_retarget_profile', though the verb 'suggest' implies a generative step versus validation/analysis.

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

Usage Guidelines3/5

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

The description implies it's used when you need to suggest bone matches for a retarget profile, but it doesn't explicitly state when to use it versus alternatives like 'validate_retarget_profile' or 'analyze_retarget_profile'. It also doesn't mention prerequisites (e.g., that the profile must exist) or that the scene_snapshot is required. The sentence 'output always requires human review' gives some usage guidance (the output shouldn't be applied automatically), but it lacks explicit exclusions or alternative tool recommendations.

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

undo_last_applyC

Ask Blender to undo the most recent edit.

ParametersJSON Schema
NameRequiredDescriptionDefault
instance_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'undo,' but fails to mention side effects (e.g., whether it is destructive, if there's an undo history limit, or what happens if there are no edits to undo). The optional instance_id parameter's role is also unexplored.

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?

The description is a single, concise sentence with no fluff. It is appropriately front-loaded, though its brevity sacrifices important detail.

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

Completeness2/5

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

Given the presence of an output schema and only one optional parameter, a slightly richer description would suffice. However, the description omits crucial context about undo scope, error behavior, and when to use this tool, making it incomplete for a mutating operation.

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

Parameters1/5

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

The input schema has one parameter, instance_id, but the description provides zero explanation of what it does or how it affects the undo operation. With 0% schema description coverage, the description must compensate but doesn't.

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

Purpose4/5

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

The description clearly states the action ('undo') and the target ('most recent edit') in Blender. However, it does not distinguish from sibling tools like rollback_to_revision, which also reverts changes, so it misses the chance to differentiate.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like rollback_to_revision or other undo mechanisms. The description only states what it does, not when it is appropriate.

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

validate_retarget_profileA

Validate a rename-only or sampled pose-bake profile without changing Blender.

ParametersJSON Schema
NameRequiredDescriptionDefault
profileYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

There are no annotations, so the description carries the burden. It explicitly states 'without changing Blender' which discloses non-destructive behavior. However, it doesn't disclose what the validation actually checks (e.g., bone map validity, adapter constraints) or what the output looks like, though an output schema exists.

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

Conciseness5/5

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

The description is a single, concise sentence that efficiently conveys the purpose and key constraint. No wasted words, and the key phrase 'without changing Blender' is front-loaded.

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

Completeness3/5

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

The tool has an output schema (though not shown in the context) and a single complex parameter. The description is minimal but adequate for a validation tool with a clear non-destructive guarantee. It could benefit from noting what validation entails, but given the schema richness the description is reasonably complete.

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?

The tool has only one parameter, 'profile', which is fully defined in the input schema with a detailed retarget profile structure. Schema description coverage is 0%, but the schema itself provides rich semantics for the profile. The description adds minimal value beyond stating the validation scope, so a baseline of 4 is appropriate given the strong schema.

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

Purpose4/5

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

The description clearly states the tool validates a retarget profile (rename-only or sampled pose-bake) and explicitly notes it does not change Blender. This distinguishes it from other profile-related tools like analyze_retarget_profile and suggest_retarget_profile_map.

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

Usage Guidelines3/5

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

The description implies usage for validating a profile before applying, and the explicit 'without changing Blender' provides a key safety context. However, it does not specify when to use this over analyze_retarget_profile or other validation tools, nor does it mention any prerequisites or alternatives.

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

validate_shot_specC

Validate a typed shot without changing Blender.

ParametersJSON Schema
NameRequiredDescriptionDefault
shot_specYes
scene_snapshotYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior3/5

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

The description discloses a key behavioral trait (non-destructive, 'without changing Blender'), which is valuable given no annotations are provided. However, it omits other important behaviors like return values, error handling, or side effects, leaving the agent to infer from the output schema.

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?

The description is a single sentence with no wasted words, front-loading the action verb. It is efficient, though perhaps too terse given the tool's complexity, but conciseness itself is good.

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

Completeness1/5

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

For a tool with two highly complex nested parameters and an output schema, the description is severely inadequate. It provides zero context about validation logic, constraints, or expected behavior, making it almost useless for an agent to gauge what will happen or how to interpret results.

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

Parameters2/5

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

Schema description coverage is 0%, and the description provides no information about the two parameters (shot_spec and scene_snapshot). While 'typed shot' hints at shot_spec, scene_snapshot is completely unmentioned, failing to compensate for the low schema coverage.

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

Purpose4/5

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

The description clearly states the tool validates a typed shot and explicitly notes it does not change Blender. It distinguishes from siblings like preview_shot by emphasizing validation over previewing, though it does not elaborate on what validation entails.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The only hint is 'without changing Blender,' implying a dry-run safety check, but there is no explicit mention of use cases, exclusions, or related tools such as preview_shot or apply_scene_patch.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv0.3.8
    • First observedanalyze_retarget_profile
    • First observedapply_scene_patch
    • First observedapply_staged_patch
    • First observeddiscard_staged_patch
    • First observedfacelink_health
    • First observedget_blender_job
    • First observedget_staged_patch
    • First observedlist_blender_instances
    • First observedlist_revision_history
    • First observedpreview_shot
    • First observedrollback_to_revision
    • First observedscan_scene
    • First observedstage_scene_patch
    • First observedsuggest_retarget_profile_map
    • First observedundo_last_apply
    • First observedvalidate_retarget_profile
    • First observedvalidate_shot_spec

TDQS

B3.2/5.0

Scored across 17 tools

Disambiguation4/5

The tools are largely separated by lifecycle stage and resource type, such as validate, preview, stage, apply, and rollback. A couple of pairs, like validate_retarget_profile vs analyze_retarget_profile and apply_staged_patch vs apply_scene_patch, are close enough to require careful reading, but the descriptions do distinguish them.

Naming Consistency4/5

Most tools follow a clean action_object snake_case pattern like list_, get_, validate_, stage_, apply_, and discard_. facelink_health breaks the pattern as a noun phrase, and rollback_to_revision uses a preposition instead of a direct object, but these are minor deviations.

Tool Count4/5

17 tools is slightly above the typical 3-15 range, but the server covers several distinct workflow areas: instance health, retargeting, shots, staged patches, and revisions. The count is reasonable for the scope, though it could be tightened.

Completeness4/5

The set covers the core safety-oriented lifecycle: scan, validate, preview, stage, review, apply, and rollback. Obvious minor gaps exist, such as no Blender job submission/cancellation and no explicit apply/save for retarget profiles, but agents can work around them via scene patches and external job submission.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Enables AI-powered control of Blender through natural language, allowing users to create, manipulate, and automate 3D scenes, objects, materials, animations, and more via Claude or other MCP clients.
    71
    53
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables natural language creation and refinement of Blender scenes through structured MCP tools, with persistent object identity, visual validation, and reversible edits.
    23
    MIT