Apply to my task
arXiv:2610.14334 ★ 94 Oct 9, 2026

MCP Tool Metadata: The Parameter Schema Sways Tool Selection More Than the Name Does

Key result

The paradox: a tool's name decides almost nothing, yet a single field `recipient_id` instead of `to` drops selection from ~50% to 1–10%. The method lets you figure out why the agent bypasses your tool in MCP (the protocol for connecting tools to an agent) and fix it without renaming anything. The twist: the model chooses not by name but by what the fields look like. The authors changed one factor at a time. The parameter schema produced the strongest and most stable shift; server and tool names barely mattered. If there's no difference, the model takes the first tool in the list.

01

TL;DR

When an agent has several similar tools (say, two "send email" tools from different MCP servers), the model picks based on metadata: the server and tool names, the description, and the parameter schema. The researchers changed exactly one field at a time and watched how the choice shifted. The parameter schema had the biggest influence: which fields the tool accepts, how they're named, and how they're grouped. Names had little influence.

The headline finding: a tool can lose before it's ever called, purely because of poor naming and field structure. If a field is called recipient_id instead of the familiar to, the tool gets picked in 1–10% of cases instead of roughly 50%. The model reads _id as "needs an identifier, not an email address" and steers around that tool. If tool names differ but mean the same thing, the model often just takes the first one in the list.

The paper's practical takeaway: flat, separate parameters (owner and repo, not one glued string or an object), familiar field names, and a description that explains the parameters all improve a tool's odds. The tools' order in the list matters too, and you need to check it by swapping the order.

Want this for your own case? Apply this study to your task: AI adapts its method to what you are working on and writes the prompt.

02

Method Blueprint

What was changed (one at a time, everything else fixed):
  S: server name      → weak effect, position often decides
  T: tool name        → almost no influence
  D: description      → +, if it explains the parameters
  P: parameter schema → the strongest and most stable effect

What wins in the schema (P):
  • separate top-level fields > fields inside an object
  • separate owner + repo > one "owner/repo" string (if the request gives them separately)
  • familiar names (to, location) > "clever" ones (recipient_id)

Position in the list: among equal tools, the first one is picked more often
03

Example in Practice

Task: You're automating a Shopify store and have connected your agent (Claude Code or Cursor) to two MCP tools for creating an order in your CRM. You wrote one of them; the other came with a third-party server. The agent almost always picks the third-party one, and yours just sits there. You need to figure out what in your schema is holding it back and fix it.

Prompt:

You are a reviewer of MCP tool metadata. Two tools do the same thing.
The agent almost always picks tool B. Find where our tool A loses at the selection stage.

Tool A (ours):
name: crm-internal_create_order
description: Creates an order in the CRM.
parameters: { "create_order_request": { "customer_id": string, "items": array, "delivery_city": string } }

Tool B (third-party):
name: shop-server_create_order
description: Creates an order. customer_id is the customer's phone or email, items is a list of SKUs with quantities, city is the delivery city.
parameters: { "customer_id": string, "items": array, "city": string }

Check point by point:
1. Are the parameters grouped into an object even though they could be flat?
2. Are there nonstandard field names (for example, with an _id suffix or rare synonyms)?
3. Does the description explain the parameters and what gets returned?
4. Does the order of the tools in the list matter?

Give a rewritten version of A: flat parameters, familiar names, a description that explains each field.
Suggest 6 test requests and an order-swapping scheme to verify the result.

Result: The model will break down both schemas against the four points. Most likely it will flag A's wrapper object, the nonstandard field name, and the sparse description. Then it will produce a rewritten tool A with flat fields and a parameter description. At the end there'll be a test plan: a set of requests and runs with the tools in different orders.

04

Why It Works

The weakness. The model can't see the tool's code. All it has is the name, the description, and the schema. Similar tools often have nearly identical names, so there's nothing to choose by. Then the model leans on whatever it can: the order in the list, how a field "sounds."

The strength. The model is good at reading a schema as a signal of "does this tool fit my request." The field to looks like an email address, recipient_id like an internal identifier. Separate owner and repo fields map onto a request like "repository X belonging to user Y" with no extra conversion.

How to use it. Make the schema look like what naturally follows from the request. Flat fields, familiar names, and a description that spells out the parameters reduce the model's "matching friction."

Control knobs: - Parameter structure → remove the wrapper object, split compound fields. - Field names → use the most common ones in the category (to, location). - Description → add what each field means and what the tool returns. - Tool order → put the one you want first, but verify by swapping. - Server and tool names → don't sink effort into them; the effect is weak and unstable.

05

Prompt Template

The paper has no ready-made prompts. The template below is assembled from its findings as a review checklist.

You are a reviewer of MCP tool metadata. Compare tools that do the same thing.
Goal: understand why the agent picks {competitor_tool} instead of {our_tool}.

Tool 1:
name: {name_1}
description: {description_1}
parameters: {schema_1}

Tool 2:
name: {name_2}
description: {description_2}
parameters: {schema_2}

Typical user request: {example_request}

Check:
1. Grouping: are there parameters inside an object that could be moved to the top level?
2. Names: are there nonstandard field names (_id suffix, rare synonyms)?
3. Compound fields: is there a single string that could be split into separate fields if the request gives them separately?
4. Description: does it explain each parameter and the result?
5. Order: how does the choice change if the tools swap places?

Output:
- a table of differences;
- a rewritten schema and description for {our_tool};
- {number} test requests and a test plan with order swapping.

Fill in: - {our_tool} and {competitor_tool} — the two tools competing; - the actual schemas and descriptions; - a typical user request.

06

Limitations

⚠️ Only for similar tools: All effects were measured where any candidate could fulfill the request. If the request needs a feature only one tool supports (for example, CC'ing a recipient), the model picks the right one regardless of order.

⚠️ Depends on the specific names: The effect depends heavily on the words, not on the idea of "renaming" itself. recipient_id lost badly, while receiver, a word not used in the requests, stayed competitive. There are no universally "good" names; you need to test.

⚠️ Depends on the request format: If the user writes the whole path (owner/repo), the preference for separate fields weakens, and for one model it flips the other way.

⚠️ Position often decides everything: When the only differences are in the names, almost all models take the first tool. With two candidates this is especially noticeable. Without testing different orders, it's easy to mistake position for quality.

⚠️ Models aren't uniform: Not all models behave the same way. DeepSeek showed no clear schema preference on one task, and Qwen often chose purely by position, so its metadata effects are undetermined.

⚠️ Test conditions: The models' thinking mode was turned off, there were five tasks, and the requests were synthetic. For a real agent with long context and reasoning, the effect may differ. Part of the paper's text (joint experiments and conclusions) is truncated in the available version.

07

How They Tested It

The researchers first pulled the metadata of 367,174 MCP tools and noticed something odd. For example, 169 tools named send_email use 78 different parameter sets. Their names and descriptions are nearly identical; what differs is the fields (to versus recipient_id). You can't compute the schema's influence from this data, because everything else about the tools differs too. So they set up a controlled experiment.

For five tasks (sending an email, weather, creating an issue, an order, a pull request), they made versions of tools that differ in exactly one field: server name, tool name, description, or parameter schema. Each of five models (GPT-5.4 mini, Claude Sonnet 4.6, Gemini 3.5 Flash, DeepSeek V4 Pro, Qwen3.7-Plus) got 50 requests and 2, 3, or 5 candidates. List positions were balanced by cyclic rotation. A conditional logit model was used to estimate the effect "after adjusting for position."

The result: of 28 estimated numerical schema effects, 23 are statistically significant, and 22 of those are positive. The schema effect is roughly twice the server-name effect. The most telling contrast: recipient_id versus receiver. The first tanks selection to 1–10%, the second keeps it at 35–51%. This shows the model isn't just hunting for matching words: it "understands" what the field means. The decisive test was this: when the request asks for CC and only one schema supports it, all five models chose that one, even when it was listed second. In other words, the schema works as a "does this tool fit" check, not just as formatting instructions for arguments.

The unexpected part: names, which everyone pours effort into, decided almost nothing. In name comparisons, models picked the first tool 79–96% of the time. The practical rule that follows is simple: measure selection with the tools in different orders, or you're measuring position.

08

Adaptations and Extrapolations

💡 Adaptation for guarding against selection "hijacking": if you connect third-party MCP servers, check whether a third-party tool is beating yours thanks to a more "convenient" schema.

Here are two tools that do the same thing: {tool_1}, {tool_2}.
Assess which one's schema is more "attractive" to the model based on: flat fields,
familiar names, parameter explanations in the description. Show which differences could
make the agent pick one of them regardless of quality.

🔧 Technique: order swapping → an honest selection test

Run the same 6–10 requests while changing the order of the tools in the list (A,B and B,A). If a tool only wins when it's first, its metadata isn't doing the work — it's a position effect. Verify any change to a description or schema by swapping.

09

Resources

  • Which Metadata Matters for LLM Tool Selection in MCP? Evidence from Controlled Factor-Level Interventions
  • Authors: Xiaofan Li, Xing Gao (University of Delaware), Fengchun Qiao (University of South Florida)
  • Related work cited in the study: an analysis of metadata for 367,174 MCP tools (Li & Gao, 2026); tool-selection biases (Blankenstein et al., 2026); the impact of descriptions on tool use (Faghih et al., 2025); the quality of MCP tool descriptions (Hasan et al., 2026)

Research digest

Key result

The paradox: a tool's name decides almost nothing, yet a single field `recipient_id` instead of `to` drops selection from ~50% to 1–10%. The method lets you figure out why the agent bypasses your tool in MCP (the protocol for connecting tools to an agent) and fix it without renaming anything. The twist: the model chooses not by name but by what the fields look like. The authors changed one factor at a time. The parameter schema produced the strongest and most stable shift; server and tool names barely mattered. If there's no difference, the model takes the first tool in the list.

Principle

The model can't see the tool's code. It has three things: the name, the description, and the list of fields. Similar tools have nearly identical names, so there's nothing to choose by. That leaves the fields. The field `to` looks like an email address. The field `recipient_id` reads like an internal ID number, and the model steers around that tool. The closer the fields are to what naturally follows from the request, the better your chance of being picked. What wins in a schema: - separate top-level fields beat fields inside a wrapper object; - separate `owner` and `repo` beat a single `owner/repo` string; - familiar names (`to`, `location`) beat "clever" ones (`recipient_id`). It's like a storefront. The sign with the name is small, but the shop window is what catches your eye.

Why it works

The model reads the schema as an answer to "does this fit my request." A request like "repository X belonging to user Y" maps onto separate `owner` and `repo` fields with no conversion. A single glued string requires extra work, and that tool loses. A description that explains each parameter gives the model extra support. The kicker: because of an `_id` suffix, a tool drops from ~50% to 1–10% selection, even though it's no worse in substance. There's a flip side. When there's no difference in metadata, almost all models simply take the first tool. Without swapping the order, it's easy to mistake position for quality.

When to apply

Building MCP servers and agents → specifically when you have several similar tools (two "send email," two "create order") and yours is gathering dust for some reason. Especially when a third-party tool wins with the same capabilities. NOT a fit if only one tool can perform the needed function. Then the model will pick it in any order. Study limitations: five tasks, synthetic requests, the models' thinking mode turned off. Models behave differently. Qwen often chose purely by position, and DeepSeek showed no schema preference on one task. For a real agent with long context, the effect may differ.

Mini recipe

1. Set up a pair: take your tool and its competitor that do the same thing. 2. Unwrap: move fields out of the object to the top level. 3. Split glued fields: if the request gives the data separately, make separate fields. 4. Check names: replace rare and "clever" ones (`recipient_id`) with the most common ones in the category. 5. Flesh out the description: what each field means and what the tool returns. 6. Don't waste time on the server and tool names: the effect is weak and unstable. 7. Run with swapping: fire off 5–10 test requests, swapping the tools' positions. If the choice follows the position, the schema isn't the reason. 8. Don't trust universal rules: the word `receiver` stayed competitive, but `recipient_id` didn't. The effect depends on the specific words, so you need to test.

Examples

[BAD]: `Why won't the agent pick my tool? Its name is fine, let's come up with a nicer one.` [GOOD]: `You are a reviewer of MCP tool metadata. Two tools do the same thing, and the agent almost always takes B. Find where our A loses at the selection stage. Tool A: name: crm-internal_create_order, description: Creates an order., parameters: { create_order_request: { customer_id, items, delivery_city } }. Tool B: name: shop-server_create_order, description: Creates an order. customer_id is the customer's phone or email, items is a list of SKUs with quantities, city is the delivery city., parameters: { customer_id, items, city }. Check: 1) is there a wrapper object, 2) are there nonstandard field names, 3) does the description explain the parameters, 4) does the order in the list matter. Give a rewritten A with flat fields and a description of each field. Suggest 6 test requests and an order-swapping scheme.` Here A has a `create_order_request` wrapper, the rare name `delivery_city`, and a sparse description. B's fields are flat, `city` is familiar, and every field is explained. The model will find these differences and produce a fixed A plus a test plan.

In plain words

When an AI agent picks a tool in the Model Context Protocol (MCP), it's flying completely blind: it never looks under the script's hood. All it gets fed is metadata. And if you have two similar tools hanging around, like "create order", the model doesn't decide based on a pretty title at all. The parameter schema is what really drives an LLM's choice, while flashy server names are just background noise to it.

It's like picking a tool in a sealed box: both say "professional hammer drill", but one has a clear list of bits printed on the side and the other has a blurry smear. You'll pick the one where the working interface is obvious. The model does exactly the same: it sees a mess in the arguments and flat-out dumps your script, giving priority to the better-structured competitor.

The researchers ran controlled factor-level interventions, changing metadata fields one at a time and measuring how the probabilities shifted. The result is telling: the parameter schema rules the choice almost single-handedly. Precise argument names, strict typing, and logical field grouping easily outweigh even the tool description. If the arguments are badly named, no amount of marketing in the name will save you.

They tested on MCP servers, but the principle hits any agent system, from Cursor and Claude Code to custom CRM integrations. If your homegrown connector is gathering dust while the agent stubbornly calls some janky third-party plugin, it's not about prompt magic. You just dropped the ball when designing the input schema.

Bottom line: stop polishing "pretty names" for your functions and work on their signatures instead. Clear typing and clean arguments make sure the agent picks your code, not someone else's hack job. Either you build transparent parameters, or your awesome backend will sit on the sidelines while the model calls someone else's duct tape.

AI lab assistant

Apply this study to your task

Describe what you're working on. AI takes the method and the measured results from this paper and adapts them to your case, or writes a ready prompt built on them.

Based on MCP Tool Metadata: The Parameter Schema Sways Tool Selection More Than the Name Does arXiv:2610.14334

Sign in to apply this study New accounts get 50 free credits.