Skip to main content
Glama
liangjunglj-cpu

Almond MCP

validate_structure

Validates AI-generated geometry by performing structural analysis using Karamba3D, returning pass/fail status and improvement suggestions.

Instructions

Validates AI-generated geometry against Karamba3D structural analysis. Call this AFTER execute_rhino_script to verify the generated structure is buildable.

The bridge tries three analysis pathways in strict order of confidence and always tells you which one actually ran: analysis_method "api" — direct Karamba 3.1 API solve, confidence "high" analysis_method "template" — audited capsule GHX template, confidence "medium" analysis_method "rule_based" — heuristic span/slenderness rules, confidence "low" The verdict string names the method (e.g. "[RULE-BASED ESTIMATE, LOW CONFIDENCE] ..."). Treat rule_based/low results as estimates, NOT finite element analysis, and say so when reporting to the user.

If the structure FAILS, modify the design (add supports, increase member size, change material) and call execute_rhino_script + validate_structure again. When worst_member_guids is present, edit only those offending members instead of regenerating everything. Iterate up to 3 times before reporting the best attempt.

Args: guids: List of Rhino object GUID strings from execute_rhino_script output. structure_type: Analysis template to use. Options: "beam" — simple beam bending/deflection "truss" — axial force/buckling analysis "shell" — shell stress/displacement "frame" — moment/shear frame analysis "canopy" — cantilevered canopy "gridshell" — large deformation gridshell "membrane" — form-finding membrane "highrise" — high-rise structural systems load_kn: Applied load in kN (default 10.0). material: Material type: "Steel", "S355", "Concrete", "Wood", "Aluminium" (default "Steel"). Returns: JSON passed through untouched from the bridge. Top-level fields: status ("pass"|"fail"|"error"), passed (bool), verdict (text), suggestions, confidence ("high"|"medium"|"low"), warnings, and worst_member_guids (up to 5 Rhino GUIDs of the most over-utilized members — edit those first). The results object carries the numbers: max_deflection_mm, deflection_limit_mm, utilization_ratio, max_stress_mpa, yield_stress_mpa, span_m, analysis_method ("api"|"template"|"rule_based"), reactions_kn (total vertical reaction, api path only), and per_element_utilization — a list of {source_guids, utilization} entries (utilization 1.0 = at capacity) keyed back to the Rhino objects that produced each element.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
guidsYes
load_knNo
materialNoSteel
structure_typeNobeam

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: three analysis pathways with confidence levels, that the verdict names the method, confidence interpretation, return value structure (JSON unchanged), and iteration behavior. No contradictions.

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?

Description is lengthy but well-structured: starts with purpose, then usage, analysis details, failure handling, parameter list, return value. Every sentence adds value; minor wordiness but justified by complexity.

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 4 parameters and presence of output schema, the description covers all aspects: parameter semantics, return fields (status, passed, verdict, etc.), analysis methods, iteration limits. Complete for a complex structural validation tool.

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

Parameters5/5

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

Schema coverage is 0%, but description adds full meaning: explains guids as Rhino GUIDs from script output, lists all structure_type options with descriptions, specifies load_kn default and unit, lists material options. Adds value beyond schema types.

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 it validates AI-generated geometry against Karamba3D structural analysis and specifies it should be called after execute_rhino_script. This distinguishes it from sibling tools like execute_rhino_script (generation) and validate_scene_layout (layout validation).

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

Usage Guidelines5/5

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

Explicitly says 'Call this AFTER execute_rhino_script' and provides iteration guidance: modify design and call again on failure, edit only worst members when worst_member_guids present, iterate up to 3 times. Also explains how to interpret low confidence results.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/liangjunglj-cpu/almond-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server