github_repo that looks a repository up on the GitHub API. The model supplies the repository name and nothing else.
Before you begin
- An agent that answers a webhook and has a provider. See Create an agent. The screenshots show an agent named Repo lookup that answers on
/repo. - For the example, an instance that can reach
api.github.com. The request needs no credentials.
Attach an action tool
1
Open the sub-agent's Tools section
Open the agent in the editor and click the sub-agent that needs the tool. In its panel, scroll to the Tools section. With nothing attached, it reads “No tools — it answers from the prompt alone.”

2
Choose Run action and pick the action
Under Add a tool…, choose Run action…. The Choose action dialog opens. It lists the built-in actions and the actions of every app ServFlow connects to, grouped by app, so search for what the tool should do. Type 
A row appears in the Tools section, and the Configure Run action dialog opens. The dialog has three sections, listed on its left edge: Tool, Action, and Guards.
http request and click HTTP Request.
3
Name the tool and say when to use it
In the Tool section, enter a Display name, for example 
github_repo. The model calls the tool by this name, so use letters, digits, and underscores.Under When to use, describe the situation the tool is for. The model reads this to decide whether to call it:
4
Open the action's fields
In the Action section, the action you picked is shown under Action, with a Change link to pick another. Its fields are listed below it. Each field holds a value you set, and most have a Let the model set this link under them.
5
Set the fields and the model's input
Leave HTTP Method at The 
Every
GET. Under URL, enter the address with the model’s input in the place it belongs:tool_param function reads an input the model sends when it calls the tool. With the rest of the URL fixed, the model chooses a repository and cannot point the request at another host. If you open the field with Open editor, the tool’s inputs are offered under Tags, and clicking one writes the call for you.
tool_param call in a field becomes an input the model is asked for, so repo is now everything the model sends when it calls this tool.To hand a whole field to the model instead, click Let the model set this under it. The field then holds the name of the input, and Set a fixed value instead switches it back.6
Save the tool
Click Save tool. The row in the Tools section reads 
github_repo, and the tool appears on the canvas beside the sub-agent, marked Action. The gear on the row opens the dialog again, and the trash icon removes the tool.
7
Tell the model about the tool
In the same panel, set the sub-agent’s System prompt so the model knows to use the tool:Click Save in the top bar. The button reads Saved.
Verify
1
Run the agent from the editor
Click Run in the top bar. Enter a Request body that needs the tool, and click Run:

2
Read the log
The Run panel shows Completed. Its Log lists “attempting to execute tool”, then “finished request” from the HTTP action, then “successfully executed tool”. The Final response answers from what GitHub returned.
If the log has no tool lines, the model answered without the tool. See If the tool is not called.

3
Call the agent from outside
Send the same question to the agent’s path:The response body is the agent’s reply.
Add a guard
A guard is a condition on the request that started the run. When it does not pass, the tool call is refused, whatever the model sent. This example allows the lookup only for requests that carry"plan": "pro".
1
Open the Guards section
In the Tools section, click the gear on the
github_repo row. In the dialog, click Guards on the left edge, then click Add guard.2
Name the guard and write its condition
Enter a Guard name, for example The section’s summary reads “1 condition must pass”, and Guards on the left edge shows a count of 1.
pro_plan_only. The name appears in traces, and in what the model is told when a call is refused.Under Allow the call when, enter a template that renders true when the call is allowed:
3
Save and test the refusal
Click Save tool, then Save. Click Run and send the earlier request body, which has no 
Click New payload and add
plan field. The log reads “condition evaluated to false”, then “tool call denied by guard”, and the model answers without the repository data.
"plan": "pro" to the body. The tool runs as before.Attach another type of tool
Add a tool… lists three more types. Each opens the same dialog with a different middle section. For every field, see the Tools reference.MCP server
To offer the tools of a Model Context Protocol server, choose MCP server…. In the Server section, enter the Server endpoint. If the server needs a token, choose where it comes from under Access token: an Integration connected through OAuth, a Secret, or a pasted Token. Click Load tools and select the Allowed tools. Save tool stays disabled until at least one tool is selected.
Call sub-agent
To let one sub-agent call another in the same agent, choose Call sub-agent…. Under Sub-agent, choose the sub-agent to call. The Display name takes that sub-agent’s name. The called sub-agent’s reply is what comes back. For the full steps, including what the called sub-agent’s prompt has to say, see Call other agents.
Agent Task Tool
To hand a task to another stored agent, choose Agent Task Tool…. Under Agent, choose an enabled agent that is entered by a trigger. When the model calls the tool it writes one instruction, which the other agent reads as{{ input "instruction" }}. The tool returns as soon as the task has started, and nothing the other agent says comes back. See Call other agents.

Built-in file tools
Every sub-agent already hasread_memory, write_memory, and list_memory, with nothing to attach. They work in the folder chosen under Workspace in the panel’s Memory section. See Built-in tools. To set a workspace up, see Set up memory and file access.
If the tool is not called
- The model did not choose it. Make When to use specific, and name the tool in the sub-agent’s System prompt.
- A guard refused it. The log reads “tool call denied by guard”. Check the request against the guard’s condition.
- The model sent a value the field does not accept. A select field that the model fills must receive one of its listed values.
- An MCP server lists no tools. The server is asked with the access token you entered, so it lists nothing until the token is right. Correct the token and click Refresh.
Related
Tools
The four kinds of tool, and what the agent fills in.
Dynamic content
Template functions such as
tool_param, body, and header.Available actions
Every action a tool can run.
Create an agent
Build the agent this guide adds a tool to.