Tool Customization
Tool Customization is a new feature in Lunar MCPX that lets you create restricted or extended versions of existing tools. This is especially useful when you want to fix input parameters (e.g. always call a tool with a specific timezone), clarify or override descriptions, or tightly control how tools are used by AI agents.
You can think of this as creating "child tools" from a parent tool. A similar interface, but locked-down behavior.
This can be used in combination with ACLs to restrict access to only the customized tools in your organization.
Overviewβ
With Tool Customization, you can:
- Create child tools based on existing tools
- Fix specific argument values (overriding user-provided input)
- Rewrite the toolβs description
The main purpose of Tool Customization is to prevent LLMs from calling tools with undesired or unsafe input. While tools can be called directly, the typical usage pattern in an Agentic AI system is for the LLM to choose which tools to call and how. Tool Customization helps guide that behavior by exposing only safe, pre-configured versions of tools.
Calling a custom (child) tool is equivalent to calling the original tool β but with one or more parameters fixed to pre-defined values. Any attempt to override those values will be ignored.
Tool Customization is configured in your app.yaml
under the toolExtensions
section. The original tools remain unmodified, the child tools are added alongside them.
Example Configurationβ
toolExtensions:
services:
time:
get_current_time:
childTools:
- name: get_current_time_in_paris
description:
append: "This version always uses the Paris timezone."
overrideParams:
timezone: Europe/Paris
In this example:
- A new tool
get_current_time_in_paris
is created fromget_current_time
. - The
timezone
parameter is hardcoded toEurope/Paris
. - The tool description is extended with a clarifying sentence.
Description Modificationβ
Child tools can modify the parent tool's description in two ways:
append
: Adds extra text to the end of the existing description.rewrite
: Replaces the description entirely.
description:
action: "append"
text: "Only works for Paris."
or
description:
action: rewrite
text: "Returns the current time in Paris."
Overriding Parametersβ
You can fix any input parameter to a constant value using overrideParams
. When you do this:
- The parameter value will always be passed to the tool as specified β even if the user or agent provides a different value.
- The parameterβs original description will be updated with a note that it is hardcoded with an appended note.
To ensure LLMs understand which parameters are fixed, the original parameter descriptions are automatically annotated. For example:
Original description for
timezone
. Note: This parameter is ignored β it is hardcoded to beEurope/Paris
. Pass an empty string for this parameter. This helps LLMs understand that this parameter does not need to be provided.
- Tool Customization is currently configured via
app.yaml.
or the MCPX UI. - The original service and tool name must already exist (in
mcp.json
or added via MCPX UI).