# AiTools class

Namespace: [Grasshopper2.Components.Descriptive](https://developer.rhino3d.com/api/gh2/namespace/grasshopper2.components.descriptive.md) · Assembly: [Grasshopper2](https://developer.rhino3d.com/api/gh2/assembly/grasshopper2.md)

```cs
public static class AiTools
```

The fixed set of tools exposed to the model during code generation. The model picks one per turn; the tool name drives the routing logic on the host side, replacing any need to parse prose. Two are terminal ([AiTools.Compile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/compile.md) delivers final code, [AiTools.Abandon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/abandon.md) gives up); the rest progress the conversation.

## Fields

- [Abandon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/abandon.md): (static) Signals that the model has decided it cannot fulfil the request. Terminal, mutually exclusive with [AiTools.Compile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/compile.md). The host surfaces the reason string to the user and ends the conversation. Exists so the model has a sanctioned escape hatch when the prompt is impossible, contradictory, or out of scope -- without one, it gets stuck looping through clarifications until a budget trips.
- [Abandonment](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/abandonment.md): (static) Name of the [AiTools.Abandon](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/abandon.md) tool, used for routing in switch statements.
- [All](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/all.md): (static) The full set of tools offered on every generation turn.
- [Clarification](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/clarification.md): (static) Name of the [AiTools.Clarify](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/clarify.md) tool, used for routing in switch statements.
- [Clarify](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/clarify.md): (static) Asks the user a multiple-choice clarifying question. The host renders the options as radio buttons (or checkboxes if `allowMultiple` is set) and returns the user's selection as the tool result.
- [Compilation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/compilation.md): (static) Name of the [AiTools.Compile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/compile.md) tool, used for routing in switch statements.
- [Compile](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/compile.md): (static) Delivers the final generated component. The host compiles the source, runs smoke checks, surfaces the behaviour summary for confirmation, and on confirmation assigns the resulting [AiComponentLogic](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aicomponentlogic.md) to the active component.
- [Describe](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/describe.md): (static) Looks up Grasshopper2 SDK symbols. Use BEFORE writing code that uses an unfamiliar Grasshopper2 type or method, not after. The model is expected to call this aggressively rather than guess API shapes.
- [Description](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/description.md): (static) Name of the [AiTools.Describe](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/describe.md) tool, used for routing in switch statements.
- [Explain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/explain.md): (static) Fetches a worked code example for a Grasshopper2 idiom. Use when the answer is a pattern ('how do I iterate a data tree?') rather than a specific symbol lookup.
- [Explanation](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/explanation.md): (static) Name of the [AiTools.Explain](https://developer.rhino3d.com/api/gh2/type/grasshopper2.components.descriptive.aitools/explain.md) tool, used for routing in switch statements.
