Skip to Content
OperateGovernanceMCP GatewaysTool RecommendationTool Recommendation

Tool Recommendation

Tool Recommendation lets an agent describe a task and get back only the tools that fit it, instead of holding every tool on a gateway in its context. This page is for agent developers and platform operators who run gateways with many tools. It explains what an client gets when Tool Recommendation is on, how the finds and calls , and what decides the quality of the results. Read it before you turn Tool Recommendation on for a gateway.

Why it exists

An client normally lists every tool on a gateway and passes all of their names, descriptions, and input schemas to the model. A gateway that federates a handful of can expose hundreds of tools. At that size the tool definitions consume a large share of the window, and the model picks the wrong more often because it has too many near-matches to choose from.

With Tool Recommendation on, the gateway lists a small, fixed set of Arcade tools. The asks for the it needs when it needs them, and Arcade returns the few that match.

What an MCP client gets

When Recommendation is on for a gateway, the gateway’s tool list starts with these Arcade tools:

ToolWhat it does
Arcade.SelectToolsTakes one or more task descriptions and returns the tools that match each task most closely, with their full input schemas.
Arcade.UseToolRuns a tool by name with the inputs you pass.
Arcade.ListAppsLists the apps the caller can act on and whether the caller has connected each one.

The list spells these names with an underscore separator, for example Arcade_SelectTools. Arcade accepts either form in a tool call.

The gateway also serves Arcade.SearchTools, a keyword search over the same tools. It does not appear in the tool list, but an can call it by name. See Selection and search.

As the discovers through Arcade.SelectTools, the gateway adds those tools to that user’s tool list. When an client lists tools again later, the list includes them alongside the Arcade tools, and the agent can call them directly.

How an agent finds and calls a tool

The works in two steps.

First, it calls Arcade.SelectTools with the tasks it wants to complete. Each entry in tasks describes one separate action:

JSON
{ "tasks": ["send a Slack message to a channel", "create a GitHub issue"], "context": "The user is triaging a production incident" }

Arcade returns up to five tools per task, ranked by how well they match. Each result includes the ’s name, description, and input schema, plus a query_id for the whole request.

Second, the calls Arcade.UseTool with the it picked and that tool’s own arguments nested inside inputs:

JSON
{ "tool_name": "Slack.SendMessage", "inputs": { "channel_name": "incidents", "message": "Investigating elevated error rates on checkout." }, "query_id": "the query_id returned by Arcade.SelectTools" }

query_id is optional. Arcade uses it to connect the execution to the recommendation that surfaced it.

The tool descriptions that Arcade serves tell the model how to use this flow, so most need no extra prompting.

Arcade offers two ways to find , and they answer different questions.

Arcade.SelectToolsArcade.SearchTools
Name of the capabilityTool RecommendationTool Search
How it matchesSemantic. It compares the meaning of a task with the meaning of each tool.Keyword. It ranks tools by the words they share with the query, using BM25.
InputOne or more task descriptionsA keyword query and an optional result count (top_k, default 10, maximum 25)
ReturnsUp to five tools per task, with full input schemasTool names and descriptions
Use it toFind the tool to call for a specific taskBrowse what tools exist, or look up a tool whose name you already know

Semantic selection finds a tool even when the task shares no words with the tool’s name, for example “let the team know the deploy finished” matching a Slack tool. Keyword search is more predictable when the already knows a product or name.

What Arcade can recommend

Recommendation only works within the tools the gateway already allows. Arcade.SelectTools and Arcade.SearchTools return only tools that are in the gateway’s Allowed Tools list, and Arcade.UseTool runs only those tools. Turning on Tool Recommendation never gives an access to a tool the gateway does not allow.

If a tool is on the allowed list, an can run it through Arcade.UseTool even if Arcade.SelectTools has not returned it yet.

Contextual Access rules still apply. A that your access rules hide from a is not recommended to that user.

How it works with MCP clients

Tool Recommendation runs inside the gateway and speaks standard . The Arcade tools are ordinary MCP tools, so any MCP client that can connect to an Arcade can use them. You don’t need an Arcade SDK, a client plugin, or code changes in your .

What makes recommendations good

Arcade matches a task against each ’s name and description. The input parameters are not part of the match, and Arcade reads only the first line of each description.

That makes descriptions the main factor you control. A tool with a vague or empty first line is hard to recommend, however useful the tool is. When you build your own tools or register a remote MCP server:

  • Start each description with one sentence that says what the does and to what, for example “Send a message to a Slack channel or .”
  • Name the service or object the acts on. “Create an issue in a GitHub repository” matches more tasks than “Create an item.”
  • Give that do different jobs descriptions that read differently. Two tools whose first lines are nearly identical compete for the same tasks.

Next steps

Last updated on