MCP List Tools
Provides a list of available tools and their configurations from an MCP serverParameter | Purpose |
---|---|
url | The URL to access the MCP server |
bearer token | If required, an authentication token to access the server |
MCP Call Tool
Executes a tool available on a remote MCP serverParameter | Purpose |
---|---|
url | The URL to access the MCP server |
bearer token | If required, an authentication token to access the server |
tool name | The name of the tool to call |
args | The data that the tool requires, if any. This should usually be a JSON object. |
Template Engine
Quick SummaryThe Template Engine, powered by Twig, is used to manipulate and dynamically generate large blocks of text or code with your own data, such as records from your Xano database, or from inputs sent to your APIs.It’s great for helping generate things like AI prompts, HTML, and other more large-format data without messing around with a bulk of separate functions to do so.
What is the Template Engine?
At its core, think of the Template Engine as text replacement and manipulation of the future. It is designed to give you a simple syntax to quickly manipulate large text strings with dynamic data, such as…- AI Prompts
- HTML
- JSON
- SQL queries
When should I use the Template Engine instead of other text filters?
You should stick with filters like replace or sprintf if you’re manipulating short strings of text, such as:- Replacing a name inside of a string like “Hello, [first_name] [last_name]”
- Dynamically providing a price for a single product
- The template will be edited by non-developers
- The data structure is complex with nested objects
- You need to include conditional sections
- Data formatting (like dates) needs to be consistent
- Templates might be reused with different data sources
Using the Template Engine
1
Look for the Template Engine function under Utility Functions.

2
Once you add the Template Engine to your function stack, click the ✏️ button in the panel to open the editor, or use the AI assistant to help write a template for you
3
Take a tour of the editor and begin building your template.

Template Syntax
Variables
Variables are wrapped in {{ curly braces }}, like this, and begin with a $ character. In the below example, we’re getting thename
from an object stored in the user1
variable.
Conditionals
Conditionals are helpful if you want to dynamically determine what the end result of your template looks like outside of the actual data. For example, maybe you want VIP users to have a different greeting than regular users. Conditionals are wrapped in {% and %} and have support forelse
and else if
In the above example, for this user:…the result would be:
In the above example, for this score:…the result would be:
Loops
You can use loops to populate lists of data without having to write out separate lines for each item, or knowing how many items you’ll need to populate.- Data
- Sample Output
$list
contains no items, the template will return No items found.
Filters
You can use Twig’s built in filters, similar to our own, to transform or manipulate data as part of the template. The below list is some of the most essential filters used in Twig, but it is not all of them. You can review the entire list here.Filter | Description | Example | Result |
---|---|---|---|
upper | Converts string to uppercase | {{ $user.name|upper }} When $user.name is “John Smith" | "JOHN SMITH” |
lower | Converts string to lowercase | {{ $user.name|lower }} When $user.name is “John Smith" | "john smith” |
trim | Removes whitespace from the beginning and end of a string | {{ $user.input|trim }} When $user.input is ” hello " | "hello” |
join | Joins array elements into a string with a delimiter | {{ $user.tags|join(', ') }} When $user.tags is [“php”, “twig”, “web”] | “php, twig, web” |
default | Provides a fallback value if the variable is null, empty, or undefined | {{ $user.middleName|default('No middle name') }} When $user.middleName is null | ”No middle name” |
number_format | Formats numbers with grouped thousands and decimal points | {{ $product.price|number_format(2, '.', ',') }} When $product.price is 1234.56 | ”1,234.56” |
shuffle | Randomly shuffles an array | {{ $user.items|shuffle }} When $user.items is [“a”, “b”, “c”] | Random order like: [“c”, “a”, “b”] |
date | Formats dates using PHP’s date syntax | {{ $user.createdAt|date("F j, Y") }} When $user.createdAt is “2023-12-25" | "December 25, 2023” |
Escape Filter (e)
The escape filter is used to format text using specifications designated by the destination, such as a URL that only allows certain characters to remain valid. When you usee
by itself without specifying a format, it typically defaults to HTML escaping. This means it will convert characters like <
, >
, &
, "
, and '
to their HTML-safe equivalents.
When you specify a format (like e('html')
, e('js')
, e('url')
, etc.), you’re explicitly telling the Template Engine how to escape the content for a specific context, which can provide more precise protection. We’d recommend always specifying the format, just to be safe.