Skip to content

Latest commit

 

History

History
202 lines (174 loc) · 20.6 KB

File metadata and controls

202 lines (174 loc) · 20.6 KB

Developer Reference

This document aggregates development-facing information.

📊 Development Status

Components

Component Category Planned In Progress Testing Released 🎉
Get GhJSON (GhGet)
Read the current Grasshopper file and convert it to GhJSON format. Filter by runtime messages, component state, preview, type, category, and more.
Grasshopper 🟡 🟠 🟢
Place GhJSON (GhPut)
Place components on the canvas from a GhJSON format
Grasshopper 🟡 🟠 🟢
Merge GhJSON (GhMerge)
Merge two GhJSON documents into one, with the target document taking priority on conflicts.
Grasshopper 🟡 🟠 🟢
Retrieve Components (GhRetrieveComponents)
Retrieve all available Grasshopper components in your environment as JSON with optional category filter.
Grasshopper 🟡 🟠 🟢
Tidy Up (GhTidyUp)
Organize selected components into a tidy grid layout based on dependencies.
Grasshopper 🟡 🟠 🟢
AI GroupTitle (AiGroupTitle)
Group components and set a meaningful title to the group
Grasshopper - - -
AI Grasshopper Generate (AIGhGenerate)
Automatically generate Grasshopper definitions using AI
Grasshopper - - -
Save GhJSON file (SaveGhJSON)
Save the current Grasshopper file as a GhJSON format
Grasshopper - - -
Load GhJSON file (LoadGhJSON)
Load a GhJSON file and convert it to a Grasshopper document
Grasshopper - - -
AI Chat (AiChat)
Interactive AI-powered conversational interface with tool calling
AI 🟡 🟠 🟢
AI File Context (AiFileContext)
Set a context for the current document
AI 🟡 🟠 🟢
AI Models (AiModels)
Retrieve the list of available models from the selected AI provider
AI 🟡 🟠 🟢
Context Parameters (ContextParameters)
Set context parameters for the AI component
AI - - -
AI Text Evaluate (AiTextEvaluate)
Return a boolean from a text content using AI-powered checks
Text 🟡 🟠 🟢
AI Text Generate (AiTextGenerate)
Generate text content using AI
Text 🟡 🟠 🟢
AI Text List Generate (AiTextListGenerate)
Generate lists of text content using AI
Text 🟡 🟠 🟢
AI Image Generate (AiImageGenerate)
Generate images using AI
Img 🟡 🟠 🟢
Image Viewer (ImageViewer)
Display bitmap images on the canvas and save them to disk
Img 🟡 🟠 🟢
AI Script Review (AiScriptReview)
Review script components using AI-based static analysis
Script 🟡 🟠 🟢
AI Script Generate (AiScriptGenerate)
Create or edit Grasshopper script components using AI. Supports create mode (from prompts) and edit mode (from selected components).
Script 🟡 🟠 🟢
AI List Evaluate (AiListEvaluate)
Return a boolean from a list of elements using AI analysis
List 🟡 🟠 🟢
AI List Filter (AiListFilter)
Process items in lists (reorder, shuffle, filter, etc.) based on AI-driven rules
List 🟡 🟠 🟢
Web Page Read (WebPageRead)
Retrieve plain text content of a webpage (Wikipedia, Discourse, GitHub, Stack Exchange, etc.)
Knowledge 🟡 🟠 🟢
McNeel Forum Search (McNeelForumSearch)
Search McNeel Discourse forum with configurable limit
Knowledge 🟡 🟠 🟢
McNeel Forum Post Get (McNeelForumPostGet)
Retrieve a McNeel Discourse forum post by ID
Knowledge 🟡 🟠 🟢
McNeel Forum Post Open (McNeelForumPostOpen)
Open a McNeel forum post URL in the default browser
Knowledge 🟡 🟠 🟢
McNeel Forum Deconstruct Post (McNeelForumDeconstructPost)
Deconstruct forum post JSON into individual fields
Knowledge 🟡 🟠 🟢
AI McNeel Forum Post Summarize (AIMcNeelForumPostSummarize)
Generate AI summary of a McNeel Discourse forum post
Knowledge 🟡 🟠 🟢
AI McNeel Forum Topic Summarize (AIMcNeelForumTopicSummarize)
Generate AI summary of a McNeel Discourse forum topic
Knowledge 🟡 🟠 🟢
Deconstruct Metrics (DeconstructMetrics)
Break down the usage metrics into individual values
Misc 🟡 🟠 🟢
AI JSON Generate (AiJsonGenerate)
Generate an AI response in strict JSON output
JSON - - -
JSON Schema (JsonSchema)
Set a JSON schema for the AI component
JSON - - -
JSON Object (JsonObject)
Set a JSON object for the definition of the JSON Schema
JSON - - -
JSON Array (JsonArray)
Set a JSON array for the definition of the JSON Schema
JSON - - -

AI Tools

AI Tools are the interface between AI and Grasshopper, allowing to, for example, read your selected components, get the available Grasshopper components, or write a new script. All these tools are available to the provider to use while chatting in the AI Chat component.

Tool Name Category Description Planned In Progress Testing Released 🎉
text_evaluate DataProcessing Evaluates text against a true/false question 🟡 🟠 🟢
text_generate DataProcessing Generates text based on a prompt and optional instructions 🟡 🟠 🟢
img_generate DataProcessing Generates an image based on a prompt and optional instructions 🟡 🟠 🟢
list_evaluate DataProcessing Evaluates a list based on natural language question 🟡 🟠 🟢
list_filter DataProcessing Filters a list based on natural language criteria 🟡 🟠 🟢
list_generate DataProcessing Generates a list based on a natural language prompt 🟡 🟠 🟢
json_generate DataProcessing Generate an AI response in strict JSON output - - -
get_input DataProcessing Send data from Grasshopper to AI Chat - - -
get_output DataProcessing Receive data from AI Chat to Grasshopper - - -
script_review Script Review a script for potential issues using AI-powered checks 🟡 🟠 🟢
script_generate Script Create Grasshopper script components based on instructions (hidden from chat) 🟡 🟠 🟢
script_generate_and_place_on_canvas Script Generate a new script component and place it on canvas in one call 🟡 🟠 🟢
script_edit Script Edit Grasshopper script components based on instructions (hidden from chat) 🟡 🟠 🟢
script_edit_and_replace_on_canvas Script Edit a script component by GUID and replace it on canvas in one call 🟡 🟠 🟢
instruction_get Instructions Returns operational instructions for SmartHopper by topic (canvas, ghjson, scripting, etc.) 🟡 🟠 🟢
web_generic_page_read Knowledge Retrieve plain text content of a webpage with robots.txt compliance 🟡 🟠 🟢
mcneel_forum_search Knowledge Search McNeel Discourse forum with configurable limit 🟡 🟠 🟢
mcneel_forum_post_get Knowledge Retrieve filtered McNeel Discourse forum post by ID 🟡 🟠 🟢
mcneel_forum_post_summarize Knowledge Generate AI-powered summary of a McNeel Discourse forum post 🟡 🟠 🟢
mcneel_forum_topic_get Knowledge Retrieve all posts in a McNeel Discourse forum topic by ID 🟡 🟠 🟢
mcneel_forum_topic_summarize Knowledge Generate AI-powered summary of a McNeel Discourse forum topic 🟡 🟠 🟢
gh_list_categories Components List available Grasshopper categories 🟡 🟠 🟢
gh_list_components Components List Grasshopper components (optionally filtered by category) 🟡 🟠 🟢
gh_get Components Retrieve Grasshopper components as GhJSON with optional filters (attr, category, type, guid, connectionDepth, metadata, runtimeData) 🟡 🟠 🟢
gh_get_selected Components Retrieve only the selected components from the Grasshopper canvas as GhJSON 🟡 🟠 🟢
gh_get_selected_with_data Components Retrieve selected components as GhJSON with runtime data snapshot 🟡 🟠 🟢
gh_get_by_guid Components Retrieve specific components by GUID as GhJSON 🟡 🟠 🟢
gh_get_by_guid_with_data Components Retrieve specific components by GUID as GhJSON with runtime data 🟡 🟠 🟢
gh_get_errors Components Retrieve only components that have error messages as GhJSON 🟡 🟠 🟢
gh_get_errors_with_data Components Retrieve errored components as GhJSON with runtime data 🟡 🟠 🟢
gh_get_locked Components Retrieve only locked (disabled) components as GhJSON 🟡 🟠 🟢
gh_get_hidden Components Retrieve only components with preview turned off as GhJSON 🟡 🟠 🟢
gh_get_visible Components Retrieve only components with preview turned on as GhJSON 🟡 🟠 🟢
gh_get_start Components Retrieve start nodes (data sources with no incoming connections) as GhJSON 🟡 🟠 🟢
gh_get_start_with_data Components Retrieve start nodes as GhJSON with runtime data 🟡 🟠 🟢
gh_get_end Components Retrieve end nodes (data sinks with no outgoing connections) as GhJSON 🟡 🟠 🟢
gh_get_end_with_data Components Retrieve end nodes as GhJSON with runtime data 🟡 🟠 🟢
gh_put Components Place Grasshopper components on the canvas from GhJSON format 🟡 🟠 🟢
gh_merge Components Merge two GhJSON documents into one (target takes priority on conflicts) 🟡 🟠 🟢
gh_component_toggle_preview Components Show or hide component geometry preview by GUID 🟡 🟠 🟢
gh_component_hide_preview_selected Components Hide geometry preview for currently selected components 🟡 🟠 🟢
gh_component_show_preview_selected Components Show geometry preview for currently selected components 🟡 🟠 🟢
gh_component_toggle_lock Components Lock (disable) or unlock (enable) components by GUID 🟡 🟠 🟢
gh_component_lock_selected Components Lock currently selected components 🟡 🟠 🟢
gh_component_unlock_selected Components Unlock currently selected components 🟡 🟠 🟢
gh_move Components Move component pivot by GUID with absolute or relative positioning 🟡 🟠 🟢
gh_tidy_up Components Organize selected components into a tidy grid layout 🟡 🟠 🟢
gh_generate Components Generate Grasshopper definitions using AI 🟡 - -
gh_connect Components Connect Grasshopper components by creating wires between outputs and inputs 🟡 - -
gh_group Components Group components and set a meaningful title 🟡 - -
gh_parameter_data_mapping_none Parameters Set a parameter's data mapping to None - - -
gh_parameter_data_mapping_flatten Parameters Set a parameter's data mapping to Flatten 🟡 - -
gh_parameter_data_mapping_graft Parameters Set a parameter's data mapping to Graft 🟡 - -
gh_parameter_reverse Parameters Reverse the order of items in a parameter 🟡 - -
gh_parameter_simplify Parameters Simplify geometry in a parameter (remove redundant control points) 🟡 - -
rhino_get_geometry Rhino Retrieve geometry from the active Rhino document (by selection, layer, or type) 🟡 - -
rhino_read_3dm Rhino Analyze a Rhino .3dm file and extract information about objects, layers, and metadata 🟡 - -
script_parameter_add_input NotTested Add a new input parameter to a script component 🟡 - -
script_parameter_add_output NotTested Add a new output parameter to a script component 🟡 - -
script_parameter_remove_input NotTested Remove an input parameter from a script component 🟡 - -
script_parameter_remove_output NotTested Remove an output parameter from a script component 🟡 - -
script_parameter_set_type_input NotTested Set the type hint for a script input parameter 🟡 - -
script_parameter_set_type_output NotTested Set the type hint for a script output parameter 🟡 - -
script_parameter_set_access NotTested Set how a script input parameter receives data (item/list/tree) 🟡 - -
script_toggle_std_output NotTested Show or hide the standard output parameter ('out') in a script component 🟡 - -
script_set_principal_input NotTested Set which input parameter drives the component's iteration 🟡 - -
script_parameter_set_optional NotTested Set whether a script input parameter is required or optional 🟡 - -

Notes:

  • web_generic_page_read supports dedicated flows for Wikipedia/Wikimedia APIs, Discourse raw markdown (/posts/{id}.json), GitHub/GitLab raw files, and Stack Exchange questions via the public API. Use it for AI-friendly text without extra HTML cleanup.
  • instruction_get is an internal tool that provides operational instructions to the AI agent by topic. It is always available.

Is there something missing? Do you have a suggestion? Please open a discussion in the Ideas section in the Discussions tab.

➡️ Available Providers

SmartHopper currently supports the following AI providers and features:

Provider Status API Registration Streaming Reasoning exposed by API Live reasoning streaming in UI Temperature config Tool calling JSON output Image generation
OpenAI ✅ Supported OpenAI Platform Yes Yes (o‑series & gpt‑5 structured content) Yes Yes (non o‑series & non gpt‑5) Yes Yes Yes (DALL‑E)
MistralAI ✅ Supported Le Plateforme Yes Yes (thinking blocks) Yes Yes Yes Yes No
DeepSeek ✅ Supported DeepSeek Platform Yes Yes (reasoning_content) Yes Yes Yes Yes No
Anthropic ✅ Supported Claude Console Yes No No Yes Yes Yes No
OpenRouter ✅ Supported OpenRouter No No (varies by routed model) No Varies Varies Varies Varies

Notes:

  • “Temperature config” indicates whether the provider/model family supports a temperature parameter in SmartHopper. For OpenAI o‑series and gpt‑5, temperature is omitted by design; other OpenAI models support it.
  • “Live reasoning streaming in UI” depends on the provider exposing a distinct reasoning/thinking channel and SmartHopper adapter support.
  • OpenRouter capabilities vary by the routed underlying model; current SmartHopper adapter does not enable streaming/reasoning there.

Do you want more providers? Please open a discussion in the Ideas section in the Discussions tab.

🧠 Default Models by Provider

The following table summarizes the models explicitly registered as defaults in each provider’s model registry. Source files:

  • src/SmartHopper.Providers.OpenAI/OpenAIProviderModels.cs
  • src/SmartHopper.Providers.MistralAI/MistralAIProviderModels.cs
  • src/SmartHopper.Providers.DeepSeek/DeepSeekProviderModels.cs
  • src/SmartHopper.Providers.Anthropic/AnthropicProviderModels.cs
  • src/SmartHopper.Providers.OpenRouter/OpenRouterProviderModels.cs

Notes:

  • “Default For” lists the feature areas the model is set as default for (e.g., Text2Text, ToolChat).
  • “Capabilities” lists the core capability flags registered for the model.
  • “Verified” reflects the Verified flag in the registry; “Deprecated” reflects the Deprecated flag (none of the current defaults are flagged deprecated).
Provider Model Verified Streaming Deprecated Default For Capabilities
Anthropic claude-haiku-4-5 - Text2Text, ReasoningChat, ToolReasoningChat TextInput, ImageInput, TextOutput, FunctionCalling, Reasoning
Anthropic claude-sonnet-4-5 - Text2Text, Text2Json, ReasoningChat, ToolReasoningChat TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
Anthropic claude-opus-4-5 - - - TextInput, TextOutput, JsonOutput, FunctionCalling, ImageInput, Reasoning
DeepSeek deepseek-chat - - Text2Text, ToolChat TextInput, TextOutput, JsonOutput, FunctionCalling
DeepSeek deepseek-reasoner - - ToolReasoningChat TextInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
MistralAI mistral-small - Text2Text, ToolChat, Text2Json TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling
MistralAI mistral-medium - - TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling
MistralAI mistral-large-latest - - - TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling
MistralAI magistral-small-latest - - ToolReasoningChat TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
MistralAI magistral-medium-latest - - - TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
OpenAI gpt-5-nano - - Text2Text TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
OpenAI gpt-5-mini - Text2Text, ToolChat, Text2Json, ToolReasoningChat TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
OpenAI gpt-5.1 - - - TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning
OpenAI dall-e-3 - - Text2Image TextInput, ImageOutput
OpenAI gpt-image-1-mini - - - Text2Image, Image2Image TextInput, ImageInput, ImageOutput
OpenRouter openai/gpt-5-mini - - Text2Text TextInput, ImageInput, TextOutput, JsonOutput, FunctionCalling, Reasoning

Discouraged models for script tools

Some models are still supported but not recommended for script‑oriented tools due to quality and stability trade‑offs. These models are marked with DiscouragedForTools in the provider registries and surface in the UI as a "Not Recommended" badge when used with those tools.

  • MistralAI
    • mistral-small-latest/mistral-small → discouraged for: script_generate, script_edit
  • Anthropic
    • claude-haiku-4-5/claude-haiku-4-5-20251001/claude-3-5-haiku-latest/claude-3-5-haiku-20241022/claude-3-haiku-20240307 → discouraged for: script_generate, script_edit

🔢 Supported Data Types

Data type serialization is handled by the ghjson-dotnet library. See its documentation for the full list of supported data types, serialization formats, and extensibility patterns.

Is there something missing? Do you have a suggestion? Please open a discussion in the Ideas section in the Discussions tab.