AI Slop Code RIsk Monitor

ahujasid/mcp-for-blender

Community plugin to control Blender 3D with any LLM of your choice. Not affiliated with the official Blender Foundation.

35.1 High pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for ahujasid/mcp-for-blender, a Python project with 30,481 GitHub stars. SynthScan examined 30,943 lines of code across 61 source files, recording 954 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 35.1 (High pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

35.1
Adjusted Signal
35.1
Raw Pattern Score
100%
Time Factor
2026-10-06
Last Push
30.5K
Stars
Python
Language
30.9K
Lines of Code
61
Files
954
Pattern Hits
2026-10-12
Scan Date
0.92
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 51.5/100 · HIGH

Can maintainers explain intent, assumptions, and trade-offs? 513 finding(s).

Hallucinated Dependency & Supply Chain Risk 16.6/100 · LOW

Are imports declared and package/API names verified? 32 finding(s).

Agent Over-Engineering Ratio 76.7/100 · CRITICAL

Are wrappers, guards, and repeated structures necessary? 830 finding(s).

PR Review Velocity Impact 89.7/100 · CRITICAL

Which changes need focused human review? 954 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 8HIGH 48MEDIUM 71LOW 827

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 954 distinct pattern matches across 14 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers414 hits · 372 pts
SeverityFileLineSnippetContext
LOW⚡addon.py1070def _blendermcp_depsgraph_post(scene, depsgraph=None):CODE
LOW⚡addon.py1074def _telemetry_consent_enabled():CODE
LOW⚡addon.py1085def _register_edit_capture_handlers():CODE
LOW⚡addon.py1102def sync_edit_capture_handlers():CODE
LOW⚡addon.py1118def _unregister_edit_capture_handlers():CODE
LOW⚡addon.py1486 def _execute_command_internal(self, command):CODE
LOW⚡addon.py4878 def poll_hunyuan_job_status_ai(self, job_id: str):CODE
LOW⚡addon.py6102def _redraw_when_update_checked():CODE
LOW⚡addon.py6112def _start_addon_update_check():CODE
LOW⚡addon.py6121def _addon_update_check_on_startup():CODE
LOWaddon.py65def _blendermcp_port_has_listener(host, port):CODE
LOWaddon.py75def _blendermcp_ensure_server_running():CODE
LOWaddon.py113def _blendermcp_schedule_auto_start(delay=0.5):CODE
LOWaddon.py129def _blendermcp_register_auto_start():CODE
LOWaddon.py138def _blendermcp_unregister_auto_start():CODE
LOWaddon.py205def _polypizza_summarize_model(model):CODE
LOWaddon.py501def _polyhaven_uncompress_head(raw):CODE
LOWaddon.py556def _polyhaven_category_paths(nodes, depth=None, _level=1):CODE
LOWaddon.py628def _polyhaven_summarize_asset(slug, record):CODE
LOWaddon.py698def _polyhaven_resolution_rank(resolution):CODE
LOWaddon.py706def _polyhaven_sorted_resolutions(resolutions):CODE
LOWaddon.py740def _polyhaven_select_texture_maps(files_data, resolution, file_format):CODE
LOWaddon.py772def _polyhaven_set_colorspace(image, is_color_data):CODE
LOWaddon.py945 def _resync_operator_baseline(self):CODE
LOWaddon.py1130def get_blendermcp_addon_preferences(context=None):CODE
LOWaddon.py2780 def get_polyhaven_asset_preview(self, asset_id):CODE
LOWaddon.py2945 def _polyhaven_build_material(self, asset_id, maps):CODE
LOWaddon.py3030 def _polyhaven_import_texture(self, asset_id, files_data, resolution, file_format):CODE
LOWaddon.py3103 def _polyhaven_fetch_model_files(self, files_data, resolution, file_format, dest_dir):CODE
LOWaddon.py3492 def create_rodin_job_main_site(CODE
LOWaddon.py3572 def poll_rodin_job_status_main_site(self, subscription_key: str):CODE
LOWaddon.py3592 def poll_rodin_job_status_fal_ai(self, request_id: str):CODE
LOWaddon.py3685 def import_generated_asset_main_site(self, task_uuid: str, name: str):CODE
LOWaddon.py3755 def import_generated_asset_fal_ai(self, request_id: str, name: str):CODE
LOWaddon.py3943 def get_sketchfab_model_preview(self, uid):CODE
LOWaddon.py4629 def get_tencent_cloud_sign_headers(CODE
LOWaddon.py4721 def create_hunyuan_job_main_site(CODE
LOWaddon.py4791 def create_hunyuan_job_local_site(CODE
LOWaddon.py4925 def import_generated_asset_hunyuan(self, *args, **kwargs):CODE
LOWaddon.py4961 def import_generated_asset_hunyuan_ai(self, name: str, zip_file_url: str):CODE
LOWaddon.py5229def premium_enabled_generators():CODE
LOWaddon.py5361def premium_integration_status(integration, enabled):CODE
LOWaddon.py5527def premium_create_hunyuan_job(text_prompt=None, image=None, quality=None):CODE
LOWaddon.py5535def premium_poll_hunyuan_job_status(job_id=None):CODE
LOWaddon.py5552def premium_import_generated_asset_hunyuan(name, zip_file_url):CODE
LOWaddon.py5717 def _on_telemetry_consent_changed(self, context):CODE
LOWtests/test_hunyuan_import_security.py92def test_hunyuan_import_prefers_glb_urls(monkeypatch):CODE
LOWtests/test_hunyuan_import_security.py127def test_hunyuan_zip_rejects_path_traversal(monkeypatch):CODE
LOWtests/test_sketchfab_status.py69def test_disabled_sketchfab_does_not_report_a_saved_key_as_ready(monkeypatch):CODE
LOWtests/test_sketchfab_status.py92def test_enabled_sketchfab_reports_a_valid_key_as_ready(monkeypatch):CODE
LOWtests/test_setup_cli.py50def test_adds_entry_and_keeps_other_servers(tmp_path):CODE
LOWtests/test_setup_cli.py64def test_creates_missing_file_without_backup(tmp_path):CODE
LOWtests/test_setup_cli.py71def test_vscode_and_opencode_formats(tmp_path):CODE
LOWtests/test_setup_cli.py85def test_does_not_take_over_an_unrelated_blender_entry(tmp_path):CODE
LOWtests/test_setup_cli.py94def test_update_replaces_old_package_and_keeps_env(tmp_path):CODE
LOWtests/test_setup_cli.py109def test_jsonc_is_read_and_invalid_json_left_alone(tmp_path):CODE
LOWtests/test_setup_cli.py123def test_strip_jsonc_keeps_strings():CODE
LOWtests/test_setup_cli.py139def test_codex_state_reads_config_toml(tmp_path):CODE
LOW⚡tests/test_setup_cli.py154def test_codex_plugin_counts_as_configured(tmp_path):CODE
LOW⚡tests/test_setup_cli.py160def test_codex_commands_carry_plugin_env():CODE
354 more matches not shown…
Excessive Try-Catch Wrapping348 hits · 258 pts
SeverityFileLineSnippetContext
MEDIUM⚡addon.py1382 print(f"Error accepting connection: {str(e)}")CODE
MEDIUM⚡addon.py1385 print(f"Error in server loop: {str(e)}")CODE
MEDIUM⚡addon.py1411 print(f"Error executing command: {str(e)}")CODE
MEDIUM⚡addon.py1462 print(f"Error receiving data: {str(e)}")CODE
MEDIUM⚡addon.py1465 print(f"Error in client handler: {str(e)}")CODE
MEDIUM⚡addon.py1482 print(f"Error executing command: {str(e)}")CODE
MEDIUM⚡addon.py3653 print("Error: Child is not a mesh object.")CODE
MEDIUM⚡addon.py3656 print("Error: Expected an empty node with one mesh child or a single mesh object.")CODE
MEDIUM⚡addon.py3659 print("Error: Expected an empty node with one mesh child or a single mesh object.")CODE
MEDIUM⚡addon.py4869 print(f"An error occurred: {e}")CODE
MEDIUMaddon.py1581 print(f"Error in handler: {str(e)}")CODE
MEDIUMaddon.py1644 print(f"Error in get_scene_info: {str(e)}")CODE
MEDIUMaddon.py1701 print(f"Error draining manual edits: {str(e)}")CODE
MEDIUMaddon.py2006 print(f"Error in get_world_state_snapshot: {str(e)}")CODE
MEDIUMaddon.py3389 print(f"Error in set_texture: {str(e)}")CODE
MEDIUMaddon.py3623 print("Error: No objects were imported.")CODE
MEDIUMaddon.py3636 print("Error: Expected an empty node with one mesh child or a single mesh object.")CODE
MEDIUMaddon.py939def _operator_stack(self):CODE
MEDIUMaddon.py978def _record_operator(self, op):CODE
MEDIUMaddon.py2821def download_polyhaven_asset(self, asset_id, asset_type, resolution="1k", file_fCODE
MEDIUMaddon.py5195def _premium_prefs():CODE
MEDIUMaddon.py5247def _premium_tag_redraw():CODE
MEDIUMaddon.py5300def _premium_format_date(value):CODE
LOW⚡addon.py994 except Exception as e:CODE
LOW⚡addon.py1003 except Exception:CODE
LOW⚡addon.py1012 except Exception:CODE
LOW⚡addon.py1081 except Exception:CODE
LOW⚡addon.py1109 except Exception:CODE
LOW⚡addon.py1381 except Exception as e:CODE
LOW⚡addon.py1384 except Exception as e:CODE
LOW⚡addon.py1410 except Exception as e:CODE
LOW⚡addon.py1417 except Exception:CODE
LOW⚡addon.py1461 except Exception as e:CODE
LOW⚡addon.py1464 except Exception as e:CODE
LOW⚡addon.py1481 except Exception as e:CODE
LOW⚡addon.py2294 except Exception:CODE
LOW⚡addon.py2298 except Exception:CODE
LOW⚡addon.py2305 except Exception:CODE
LOW⚡addon.py2314 except Exception:CODE
LOW⚡addon.py2319 except Exception:CODE
LOW⚡addon.py3669 except Exception as e:CODE
LOW⚡addon.py4868 except Exception as e:CODE
LOW⚡addon.py6098 except Exception as e:CODE
LOWaddon.py783 except Exception:CODE
LOWaddon.py942 except Exception:CODE
LOWaddon.py1027 except Exception:CODE
LOWaddon.py1300 except Exception as e:CODE
LOWaddon.py1313 except Exception:CODE
LOWaddon.py1334 except Exception:CODE
LOWaddon.py1338 except Exception:CODE
LOWaddon.py1580 except Exception as e:CODE
LOWaddon.py1643 except Exception as e:CODE
LOWaddon.py1700 except Exception as e:CODE
LOWaddon.py1733 except Exception:CODE
LOWaddon.py1826 except Exception:CODE
LOWaddon.py1860 except Exception:CODE
LOWaddon.py1871 except Exception:CODE
LOWaddon.py2005 except Exception as e:CODE
LOWaddon.py2146 except Exception as offscreen_err:CODE
LOWaddon.py2175 except Exception as e:CODE
288 more matches not shown…
Empty Error Handlers46 hits · 230 pts
SeverityFileLineSnippetContext
HIGHaddon.py5253except Exception:CODE
HIGHaddon.py1313except Exception:CODE
HIGHaddon.py2612except Exception:CODE
HIGHaddon.py1320except:CODE
HIGHaddon.py1334except Exception:CODE
HIGHaddon.py1338except Exception:CODE
HIGHaddon.py1353except:CODE
HIGHaddon.py1471except:CODE
HIGHaddon.py2294except Exception:CODE
HIGHaddon.py2298except Exception:CODE
HIGHaddon.py2450except Exception:CODE
HIGHaddon.py2305except Exception:CODE
HIGHaddon.py1452except (json.JSONDecodeError, UnicodeDecodeError):CODE
HIGHaddon.py2314except Exception:CODE
HIGHaddon.py2319except Exception:CODE
HIGHaddon.py2379except Exception:CODE
HIGHaddon.py2423except Exception:CODE
HIGHtests/test_polypizza.py193except ValueError:CODE
HIGHtests/test_polypizza.py383except ValueError:CODE
HIGHtests/test_polypizza.py391except ValueError:CODE
HIGHtests/test_server_threading.py207except OSError:CODE
HIGHsrc/blender_mcp/server.py678except Exception:CODE
HIGHsrc/blender_mcp/server.py735except Exception:CODE
HIGHsrc/blender_mcp/server.py769except Exception:CODE
HIGHsrc/blender_mcp/server.py784except Exception:CODE
HIGHsrc/blender_mcp/telemetry_decorator.py138except Exception:CODE
HIGHsrc/blender_mcp/generation.py345except Exception:CODE
HIGHsrc/blender_mcp/context_log.py86except Exception:CODE
HIGHsrc/blender_mcp/openai_apps.py177except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py5253except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py1313except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2612except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py1320except:CODE
HIGHsrc/blender_mcp/bundled/addon.py1334except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py1338except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py1353except:CODE
HIGHsrc/blender_mcp/bundled/addon.py1471except:CODE
HIGHsrc/blender_mcp/bundled/addon.py2294except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2298except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2450except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2305except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py1452except (json.JSONDecodeError, UnicodeDecodeError):CODE
HIGHsrc/blender_mcp/bundled/addon.py2314except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2319except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2379except Exception:CODE
HIGHsrc/blender_mcp/bundled/addon.py2423except Exception:CODE
Hallucination Indicators8 hits · 85 pts
SeverityFileLineSnippetContext
CRITICALaddon.py2397 base_props = set(bpy.types.Node.bl_rna.properties.keys())CODE
CRITICALaddon.py3158 bpy.context.scene.collection.children.link(collection)CODE
CRITICALtests/test_safe_mode.py64 "bpy.context.active_object.data.materials.append(mat)\n"CODE
CRITICALtests/test_safe_mode.py195 "sd = bpy.context.preferences.filepaths.script_directories.new()\n"CODE
CRITICAL⚡tests/test_polyhaven.py1784 addon.bpy.context.scene.collection.children.link(mine)CODE
CRITICALsrc/blender_mcp/bundled/addon.py2397 base_props = set(bpy.types.Node.bl_rna.properties.keys())CODE
CRITICALsrc/blender_mcp/bundled/addon.py3158 bpy.context.scene.collection.children.link(collection)CODE
CRITICALsrc/blender_mcp/guides/rigging.md37bpy.context.scene.collection.objects.link(rig)CODE
Deep Nesting68 hits · 42 pts
SeverityFileLineSnippetContext
LOWaddon.py821CODE
LOWaddon.py5054CODE
LOWaddon.py5247CODE
LOWaddon.py5601CODE
LOWaddon.py998CODE
LOWaddon.py1422CODE
LOWaddon.py1771CODE
LOWaddon.py1830CODE
LOWaddon.py2278CODE
LOWaddon.py2334CODE
LOWaddon.py2569CODE
LOWaddon.py2659CODE
LOWaddon.py2945CODE
LOWaddon.py3166CODE
LOWaddon.py3608CODE
LOWaddon.py3685CODE
LOWaddon.py4029CODE
LOWaddon.py4373CODE
LOWaddon.py4721CODE
LOWaddon.py4791CODE
LOWaddon.py4961CODE
LOWaddon.py5864CODE
LOWaddon.py2404CODE
LOWtests/test_compat_matrix.py66CODE
LOWtests/test_compat_matrix.py80CODE
LOWtests/test_compat_matrix.py265CODE
LOWtests/test_server_threading.py169CODE
LOWsrc/blender_mcp/server.py270CODE
LOWsrc/blender_mcp/server.py979CODE
LOWsrc/blender_mcp/server.py1028CODE
LOWsrc/blender_mcp/server.py1818CODE
LOWsrc/blender_mcp/server.py1931CODE
LOWsrc/blender_mcp/server.py142CODE
LOWsrc/blender_mcp/update_cli.py101CODE
LOWsrc/blender_mcp/update_cli.py141CODE
LOWsrc/blender_mcp/trajectory.py452CODE
LOWsrc/blender_mcp/trajectory.py646CODE
LOWsrc/blender_mcp/trajectory.py1071CODE
LOWsrc/blender_mcp/trajectory.py1144CODE
LOWsrc/blender_mcp/trajectory.py1218CODE
LOWsrc/blender_mcp/safe_mode.py507CODE
LOWsrc/blender_mcp/safe_mode.py939CODE
LOWsrc/blender_mcp/addon_manager.py250CODE
LOWsrc/blender_mcp/setup_cli.py246CODE
LOWsrc/blender_mcp/setup_cli.py555CODE
LOWsrc/blender_mcp/bundled/addon.py821CODE
LOWsrc/blender_mcp/bundled/addon.py5054CODE
LOWsrc/blender_mcp/bundled/addon.py5247CODE
LOWsrc/blender_mcp/bundled/addon.py5601CODE
LOWsrc/blender_mcp/bundled/addon.py998CODE
LOWsrc/blender_mcp/bundled/addon.py1422CODE
LOWsrc/blender_mcp/bundled/addon.py1771CODE
LOWsrc/blender_mcp/bundled/addon.py1830CODE
LOWsrc/blender_mcp/bundled/addon.py2278CODE
LOWsrc/blender_mcp/bundled/addon.py2334CODE
LOWsrc/blender_mcp/bundled/addon.py2569CODE
LOWsrc/blender_mcp/bundled/addon.py2659CODE
LOWsrc/blender_mcp/bundled/addon.py2945CODE
LOWsrc/blender_mcp/bundled/addon.py3166CODE
LOWsrc/blender_mcp/bundled/addon.py3608CODE
8 more matches not shown…
Decorative Section Separators14 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMaddon.py2266 # ------------------------------------------------------------------COMMENT
MEDIUMaddon.py2275 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py77# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py79# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py237# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py239# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py386# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py388# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py523# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py525# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py719# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/setup_cli.py721# ---------------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/bundled/addon.py2266 # ------------------------------------------------------------------COMMENT
MEDIUMsrc/blender_mcp/bundled/addon.py2275 # ------------------------------------------------------------------COMMENT
Unused Imports22 hits · 22 pts
SeverityFileLineSnippetContext
LOWtests/conftest.py6CODE
LOWtests/test_setup_cli.py3CODE
LOWtests/test_export_scene.py2CODE
LOWtests/test_export_scene.py4CODE
LOWtests/test_safe_mode.py9CODE
LOWtests/test_addon_manager.py3CODE
LOWtests/test_addon_manager.py8CODE
LOWtests/test_addon_autostart.py7CODE
LOWtests/test_context_log.py3CODE
LOWtests/test_socket_unicode.py20CODE
LOWtests/test_server_threading.py13CODE
LOWtests/test_server_threading.py18CODE
LOWtests/test_update_cli.py3CODE
LOWsrc/blender_mcp/update_cli.py12CODE
LOWsrc/blender_mcp/__init__.py17CODE
LOWsrc/blender_mcp/__init__.py17CODE
LOWsrc/blender_mcp/trajectory.py8CODE
LOWsrc/blender_mcp/safe_mode.py56CODE
LOWsrc/blender_mcp/addon_manager.py10CODE
LOWsrc/blender_mcp/setup_cli.py13CODE
LOWsrc/blender_mcp/openai_apps.py20CODE
LOWsrc/blender_mcp/consent_prompt.py17CODE
Self-Referential Comments6 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMaddon.py2242 # Create a local namespace for executionCOMMENT
MEDIUMaddon.py6015 # Create a new server instanceCOMMENT
MEDIUMsrc/blender_mcp/server.py353# Create the MCP server with lifespan supportCOMMENT
MEDIUMsrc/blender_mcp/server.py414 # Create a new connection if neededCOMMENT
MEDIUMsrc/blender_mcp/bundled/addon.py2242 # Create a local namespace for executionCOMMENT
MEDIUMsrc/blender_mcp/bundled/addon.py6015 # Create a new server instanceCOMMENT
Over-Commented Block11 hits · 8 pts
SeverityFileLineSnippetContext
LOWaddon.py281COMMENT
LOWaddon.py301# _polyhaven_blend_version.COMMENT
LOWinstall.sh1#!/bin/shCOMMENT
LOWsrc/blender_mcp/server.py521 )COMMENT
LOWsrc/blender_mcp/trajectory.py21import httpxCOMMENT
LOWsrc/blender_mcp/trajectory.py41# last row, and snapshots include mesh counts, material/world fingerprints andCOMMENT
LOWsrc/blender_mcp/trajectory.py61IDLE_EPISODE_TIMEOUT = 600.0COMMENT
LOWsrc/blender_mcp/trajectory.py81# that shifts as objects are created, so before/after kept *different* arbitraryCOMMENT
LOWsrc/blender_mcp/safe_mode.py681 # Writing to a stored-expression attribute is what arms a driver.COMMENT
LOWsrc/blender_mcp/bundled/addon.py281COMMENT
LOWsrc/blender_mcp/bundled/addon.py301# _polyhaven_blend_version.COMMENT
Redundant / Tautological Comments6 hits · 6 pts
SeverityFileLineSnippetContext
LOWaddon.py3719 # Close the fileCOMMENT
LOWaddon.py3785 # Close the fileCOMMENT
LOWsrc/blender_mcp/server.py160 # Check if we've received a complete JSON objectCOMMENT
LOWsrc/blender_mcp/telemetry.py81 # Check if disabled via environment variablesCOMMENT
LOWsrc/blender_mcp/bundled/addon.py3719 # Close the fileCOMMENT
LOWsrc/blender_mcp/bundled/addon.py3785 # Close the fileCOMMENT
Cross-Language Confusion2 hits · 5 pts
SeverityFileLineSnippetContext
HIGHtests/test_tool_schemas.py4"default": null}, and a client that sends that default explicitly (someSTRING
HIGHtests/test_tool_schemas.py5agent frameworks fill every optional field with null) gets a validationSTRING
AI Structural Patterns7 hits · 4 pts
SeverityFileLineSnippetContext
LOWaddon.py3605CODE
LOWsrc/blender_mcp/server.py1561CODE
LOWsrc/blender_mcp/server.py1715CODE
LOWsrc/blender_mcp/server.py1818CODE
LOWsrc/blender_mcp/trajectory.py955CODE
LOWsrc/blender_mcp/trajectory.py1071CODE
LOWsrc/blender_mcp/bundled/addon.py3605CODE
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsrc/blender_mcp/server.py1018 # an agentic session nobody opens the sidebar - the chat is the onlyCOMMENT
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/blender_mcp/safe_mode.py62__all__ = [CODE