[Home](./index.md) > [kibana-plugin-plugins-expressions-server](./kibana-plugin-plugins-expressions-server.md) > [ExpressionAstFunctionBuilder](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.md)
## ExpressionAstFunctionBuilder interface
Signature:
```typescript
export interface ExpressionAstFunctionBuilder
```
## Properties
| Property | Type | Description |
| --- | --- | --- |
| [addArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.addargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder) => this
| Adds an additional argument to the function. For multi-args, this should be called once for each new arg. Note that TS will not enforce whether multi-args are available, so only use this to update an existing arg if you are certain it is a multi-arg. |
| [arguments](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.arguments.md) | FunctionBuilderArguments<FnDef>
| Object of all args currently added to the function. This is structured similarly to ExpressionAstFunction['arguments']
, however any subexpressions are returned as expression builder instances instead of expression ASTs. |
| [getArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.getargument.md) | <A extends FunctionArgName<FnDef>>(name: A) => Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder> | undefined
| Retrieves an existing argument by name. Useful when you want to retrieve the current array of args and add something to it before calling replaceArgument
. Any subexpression arguments will be returned as expression builder instances. |
| [name](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.name.md) | InferFunctionDefinition<FnDef>['name']
| Name of this expression function. |
| [removeArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.removeargument.md) | <A extends OptionalKeys<FunctionArgs<FnDef>>>(name: A) => this
| Removes an (optional) argument from the function.TypeScript will enforce that you only remove optional arguments. For manipulating required args, use replaceArgument
. |
| [replaceArgument](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.replaceargument.md) | <A extends FunctionArgName<FnDef>>(name: A, value: Array<FunctionArgs<FnDef>[A] | ExpressionAstExpressionBuilder>) => this
| Overwrites an existing argument with a new value. In order to support multi-args, the value given must always be an array. |
| [toAst](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.toast.md) | () => ExpressionAstFunction
| Converts function to an AST. ExpressionAstFunction
|
| [toString](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.tostring.md) | () => string
| Converts function to an expression string. string
|
| [type](./kibana-plugin-plugins-expressions-server.expressionastfunctionbuilder.type.md) | 'expression_function_builder'
| Used to identify expression function builder objects. |